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