src/Entity/PurchaseRequest.php line 14

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\PurchaseRequestRepository;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\ORM\Mapping as ORM;
  7. use Symfony\Component\Serializer\Annotation\Groups;
  8. /**
  9.  * @ORM\Entity(repositoryClass=PurchaseRequestRepository::class)
  10.  */
  11. class PurchaseRequest
  12. {
  13.     /**
  14.      * @ORM\Id
  15.      * @ORM\GeneratedValue
  16.      * @ORM\Column(type="integer")
  17.      * @Groups({
  18.      *     "purchase_request:core",
  19.      *
  20.      *
  21.      *     "purchase_request@core",
  22.      *     "purchase_request@base",
  23.      *
  24.      *
  25.      * })
  26.      */
  27.     private $id;
  28.     /**
  29.      * @ORM\ManyToOne(targetEntity=User::class, inversedBy="purchase_requests_requester")
  30.      * @ORM\JoinColumn(nullable=false)
  31.      * @Groups({
  32.      *     "purchase_request:requester",
  33.      *
  34.      *     "purchase_request@requester"
  35.      *  })
  36.      */
  37.     private $requester;
  38.     /**
  39.      * @ORM\ManyToOne(targetEntity=User::class, inversedBy="purchase_requests_approver")
  40.      * @ORM\JoinColumn(nullable=true)
  41.      * @Groups({
  42.      *     "purchase_request:approver",
  43.      *
  44.      *     "purchase_request@approver"
  45.      * })
  46.      */
  47.     private $approver;
  48.     /**
  49.      * @ORM\Column(type="datetime_immutable", nullable=true)
  50.      * @Groups({
  51.      *     "purchase_request:core",
  52.      *
  53.      *     "purchase_request@core"
  54.      * })
  55.      */
  56.     private $approved_at;
  57.     /**
  58.      * @ORM\Column(type="datetime_immutable", nullable=true)
  59.      * @Groups({
  60.      *     "purchase_request:core",
  61.      *
  62.      *     "purchase_request@core"
  63.      * })
  64.      */
  65.     private $should_deliver_at;
  66.     /**
  67.      * @ORM\Column(type="datetime_immutable", nullable=true)
  68.      * @Groups({
  69.      *      "purchase_request:core",
  70.      *
  71.      *      "purchase_request@core"
  72.      *  })
  73.      */
  74.     private $delivered_at;
  75.     /**
  76.      * @ORM\Column(type="datetime_immutable", nullable=true)
  77.      * @Groups({
  78.      *      "purchase_request:core",
  79.      *
  80.      *      "purchase_request@core"
  81.      *  })
  82.      */
  83.     private $created_at;
  84.     /**
  85.      * @ORM\OneToMany(targetEntity=PurchaseRequestPositions::class, mappedBy="purchase_request")
  86.      * @Groups({
  87.      *     "purchase_request:positions",
  88.      *
  89.      *     "purchase_request@positions"
  90.      * })
  91.      */
  92.     private $purchase_request_positions;
  93.     /**
  94.      * @ORM\OrderBy({"id" = "ASC"})
  95.      * @ORM\OneToMany(targetEntity=PurchaseRequestHistories::class, mappedBy="purchase_request", cascade={"persist", "remove"})
  96.      * @Groups({
  97.      *     "purchase_request:histories",
  98.      *
  99.      *     "purchase_request@histories",
  100.      *
  101.      * })
  102.      */
  103.     private $purchase_request_histories;
  104.     /**
  105.      * @ORM\Column(type="string", length=64)
  106.      * @Groups({
  107.      *     "purchase_request:core",
  108.      *     "purchase_request@core",
  109.      *     "purchase_request@base"
  110.      * })
  111.      */
  112.     private $packet_name;
  113.     /**
  114.      * @ORM\OneToMany(targetEntity=PurchaseRequestUserFavorites::class, mappedBy="purchase_request")
  115.      */
  116.     private $purchase_request_user_favorites;
  117.     /**
  118.      * @ORM\ManyToOne(targetEntity=User::class, inversedBy="purchase_request_rejecter")
  119.      * @Groups({
  120.      *     "purchase_request:rejecter",
  121.      *
  122.      *     "purchase_request@rejecter"
  123.      * })
  124.      */
  125.     private $rejecter;
  126.     /**
  127.      * @ORM\Column(type="datetime_immutable", nullable=true)
  128.      * @Groups({
  129.      *        "purchase_request:core",
  130.      *
  131.      *        "purchase_request@core"
  132.      *  })
  133.      */
  134.     private $rejected_at;
  135.     /**
  136.      *
  137.      * ⚠️ TODO: Bu prop uzerinden takip edilecek
  138.      * ⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️
  139.      * READ ME !!!!
  140.      * Expense normalde positionlara sahip ama burada Bu expense (Expense Positionlari) -> Purchase request positionlari ile iliskili olacak
  141.      * ⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️
  142.      *
  143.      *
  144.      * Ordered status bu prop uzerinden takip edilacek
  145.      * ORM\OneToOne(targetEntity=ProjectOrderExpenses::class, inversedBy="purchase_request", cascade={"persist", "remove"})
  146.      * @ORM\OneToMany(targetEntity=ProjectOrderExpenses::class, mappedBy="purchase_request", cascade={"persist", "remove"})
  147.      * @ORM\JoinColumn(onDelete="SET NULL")
  148.      * @Groups({
  149.      *     "purchase_request:expense",
  150.      *
  151.      *     "purchase_request@expenses"
  152.      * })
  153.      */
  154.     private $expenses;
  155.     public function __construct()
  156.     {
  157.        $this->purchase_request_positions = new ArrayCollection();
  158.        $this->purchase_request_histories = new ArrayCollection();
  159.        $this->purchase_request_user_favorites = new ArrayCollection();
  160.        $this->expenses = new ArrayCollection();
  161.     }
  162.     public function getId(): ?int
  163.     {
  164.         return $this->id;
  165.     }
  166.     public function getRequester(): ?User
  167.     {
  168.         return $this->requester;
  169.     }
  170.     public function setRequester(?User $requester): self
  171.     {
  172.         $this->requester $requester;
  173.         return $this;
  174.     }
  175.     public function getApprover(): ?User
  176.     {
  177.         return $this->approver;
  178.     }
  179.     public function setApprover(?User $approver): self
  180.     {
  181.         $this->approver $approver;
  182.         return $this;
  183.     }
  184.     public function getApprovedAt(): ?\DateTimeImmutable
  185.     {
  186.         return $this->approved_at;
  187.     }
  188.     public function setApprovedAt(?\DateTimeImmutable $approved_at): self
  189.     {
  190.         $this->approved_at $approved_at;
  191.         return $this;
  192.     }
  193.     public function getShouldDeliverAt(): ?\DateTimeImmutable
  194.     {
  195.         return $this->should_deliver_at;
  196.     }
  197.     public function setShouldDeliverAt(?\DateTimeImmutable $should_deliver_at): self
  198.     {
  199.         $this->should_deliver_at $should_deliver_at;
  200.         return $this;
  201.     }
  202.     public function getDeliveredAt(): ?\DateTimeImmutable
  203.     {
  204.         return $this->delivered_at;
  205.     }
  206.     public function setDeliveredAt(?\DateTimeImmutable $delivered_at): self
  207.     {
  208.         $this->delivered_at $delivered_at;
  209.         return $this;
  210.     }
  211.     public function getCreatedAt(): ?\DateTimeImmutable
  212.     {
  213.         return $this->created_at;
  214.     }
  215.     public function setCreatedAt(?\DateTimeImmutable $created_at): self
  216.     {
  217.         $this->created_at $created_at;
  218.         return $this;
  219.     }
  220.     /**
  221.      * @return Collection<int, PurchaseRequestPositions>
  222.      */
  223.     public function getPurchaseRequestPositions(): Collection
  224.     {
  225.         return $this->purchase_request_positions;
  226.     }
  227.     public function addPurchaseRequestPosition(PurchaseRequestPositions $purchaseRequestPosition): self
  228.     {
  229.         if (!$this->purchase_request_positions->contains($purchaseRequestPosition)) {
  230.             $this->purchase_request_positions[] = $purchaseRequestPosition;
  231.             $purchaseRequestPosition->setPurchaseRequest($this);
  232.         }
  233.         return $this;
  234.     }
  235.     public function removePurchaseRequestPosition(PurchaseRequestPositions $purchaseRequestPosition): self
  236.     {
  237.         if ($this->purchase_request_positions->removeElement($purchaseRequestPosition)) {
  238.             // set the owning side to null (unless already changed)
  239.             if ($purchaseRequestPosition->getPurchaseRequest() === $this) {
  240.                 $purchaseRequestPosition->setPurchaseRequest(null);
  241.             }
  242.         }
  243.         return $this;
  244.     }
  245.     /**
  246.      * @return Collection<int, PurchaseRequestHistories>
  247.      */
  248.     public function getPurchaseRequestHistories(): Collection
  249.     {
  250.         return $this->purchase_request_histories;
  251.     }
  252.     public function addPurchaseRequestHistory(PurchaseRequestHistories $purchaseRequestHistory): self
  253.     {
  254.         if (!$this->purchase_request_histories->contains($purchaseRequestHistory)) {
  255.             $this->purchase_request_histories[] = $purchaseRequestHistory;
  256.             $purchaseRequestHistory->setPurchaseRequest($this);
  257.         }
  258.         return $this;
  259.     }
  260.     public function removePurchaseRequestHistory(PurchaseRequestHistories $purchaseRequestHistory): self
  261.     {
  262.         if ($this->purchase_request_histories->removeElement($purchaseRequestHistory)) {
  263.             // set the owning side to null (unless already changed)
  264.             if ($purchaseRequestHistory->getPurchaseRequest() === $this) {
  265.                 $purchaseRequestHistory->setPurchaseRequest(null);
  266.             }
  267.         }
  268.         return $this;
  269.     }
  270.     public function getPacketName(): ?string
  271.     {
  272.         return $this->packet_name;
  273.     }
  274.     public function setPacketName(string $packet_name): self
  275.     {
  276.         $this->packet_name $packet_name;
  277.         return $this;
  278.     }
  279.     /**
  280.      * @return Collection<int, PurchaseRequestUserFavorites>
  281.      */
  282.     public function getPurchaseRequestUserFavorites(): Collection
  283.     {
  284.         return $this->purchase_request_user_favorites;
  285.     }
  286.     public function addPurchaseRequestUserFavorite(PurchaseRequestUserFavorites $purchaseRequestUserFavorite): self
  287.     {
  288.         if (!$this->purchase_request_user_favorites->contains($purchaseRequestUserFavorite)) {
  289.             $this->purchase_request_user_favorites[] = $purchaseRequestUserFavorite;
  290.             $purchaseRequestUserFavorite->setPurchaseRequest($this);
  291.         }
  292.         return $this;
  293.     }
  294.     public function removePurchaseRequestUserFavorite(PurchaseRequestUserFavorites $purchaseRequestUserFavorite): self
  295.     {
  296.         if ($this->purchase_request_user_favorites->removeElement($purchaseRequestUserFavorite)) {
  297.             // set the owning side to null (unless already changed)
  298.             if ($purchaseRequestUserFavorite->getPurchaseRequest() === $this) {
  299.                 $purchaseRequestUserFavorite->setPurchaseRequest(null);
  300.             }
  301.         }
  302.         return $this;
  303.     }
  304.     public function getRejecter(): ?User
  305.     {
  306.         return $this->rejecter;
  307.     }
  308.     public function setRejecter(?User $rejecter): self
  309.     {
  310.         $this->rejecter $rejecter;
  311.         return $this;
  312.     }
  313.     public function getRejectedAt(): ?\DateTimeImmutable
  314.     {
  315.         return $this->rejected_at;
  316.     }
  317.     public function setRejectedAt(?\DateTimeImmutable $rejected_at): self
  318.     {
  319.         $this->rejected_at $rejected_at;
  320.         return $this;
  321.     }
  322.     /**
  323.      * Bunu kendim manuelle yaptim
  324.      * @return Collection<int, ProjectOrderExpenses>
  325.      */
  326.     public function getExpenses(): Collection
  327.     {
  328.         return $this->expenses;
  329.     }
  330.     public function addProjectOrderExpenseProjectOrderExpenses $expense): self
  331.     {
  332.         if (!$this->expenses->contains($expense)) {
  333.             $this->expenses[] = $expense;
  334.             $expense->setPurchaseRequest($this);
  335.         }
  336.         return $this;
  337.     }
  338.     public function removeProjectOrderExpense(ProjectOrderExpenses $expense): self
  339.     {
  340.         if ($this->expenses->removeElement($expense)) {
  341.             // set the owning side to null (unless already changed)
  342.             if ($expense->getPurchaseRequest() === $this) {
  343.                 $expense->setPurchaseRequest(null);
  344.             }
  345.         }
  346.         return $this;
  347.     }
  348. }