src/Entity/OrderRequest.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Entity\Tag\HasAuthToken;
  4. use App\Entity\Tag\IsBlameable;
  5. use App\Entity\Traits\AuthTokenTrait;
  6. use App\Entity\Traits\DefaultOrderFields;
  7. use App\Entity\Traits\SerializableIdTrait;
  8. use App\Repository\OrderRequestRepository;
  9. use App\Service\OrderRequestStateHandler;
  10. use DateTimeImmutable;
  11. use Doctrine\Common\Collections\ArrayCollection;
  12. use Doctrine\Common\Collections\Collection;
  13. use Doctrine\ORM\Mapping as ORM;
  14. use Gedmo\Blameable\Traits\BlameableEntity;
  15. use Gedmo\Mapping\Annotation as Gedmo;
  16. use Gedmo\SoftDeleteable\SoftDeleteable;
  17. use Gedmo\SoftDeleteable\Traits\SoftDeleteableEntity;
  18. use Gedmo\Timestampable\Traits\TimestampableEntity;
  19. /**
  20. * @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=true, hardDelete=true)
  21. * @Gedmo\Loggable()
  22. */
  23. #[ORM\Table]
  24. #[ORM\Index(name: 'created_by', columns: ['created_by'])]
  25. #[ORM\Index(name: 'updated_by', columns: ['updated_by'])]
  26. #[ORM\Entity(repositoryClass: OrderRequestRepository::class)]
  27. class OrderRequest implements IsBlameable, SoftDeleteable, HasAuthToken
  28. {
  29. use BlameableEntity;
  30. use TimestampableEntity;
  31. use DefaultOrderFields;
  32. use SoftDeleteableEntity;
  33. use AuthTokenTrait;
  34. use SerializableIdTrait;
  35. #[ORM\Column(type: 'string', length: 255)]
  36. private $articleNumber;
  37. /**
  38. * @Gedmo\Versioned
  39. */
  40. #[ORM\Column(type: 'string', length: 255)]
  41. private $state;
  42. #[ORM\OneToMany(mappedBy: 'orderRequest', targetEntity: OrderRequestCustomFieldData::class, orphanRemoval: true)]
  43. private iterable $orderRequestCustomFieldData;
  44. #[ORM\OneToMany(mappedBy: 'order', targetEntity: OrderRequestLineItem::class, cascade: ['all'], orphanRemoval: true)]
  45. private iterable $lineItems;
  46. #[ORM\ManyToOne(targetEntity: Company::class, inversedBy: 'orderItems')]
  47. private ?Company $company = null;
  48. /**
  49. * @Gedmo\Versioned
  50. */
  51. #[ORM\Column(type: 'datetime', nullable: true)]
  52. private $stateUpdatedAt;
  53. #[ORM\OneToMany(targetEntity: CertificateUpload::class, mappedBy: 'orderRequest')]
  54. private $certificates;
  55. #[ORM\Column(type: 'boolean', nullable: false, options: ['default' => false])]
  56. private bool $organic = false;
  57. #[ORM\Column(type: 'date_immutable', nullable: true, options: ['default' => null])]
  58. private ?DateTimeImmutable $estimatedCompletionDate = null;
  59. public function __construct()
  60. {
  61. $this->orderRequestCustomFieldData = new ArrayCollection();
  62. $this->state = OrderRequestStateHandler::STATE_INCOMPLETE;
  63. $this->lineItems = new ArrayCollection();
  64. $this->certificates = new ArrayCollection();
  65. }
  66. public function getCompany(): ?Company
  67. {
  68. return $this->company;
  69. }
  70. public function setCompany(?Company $company): OrderRequest
  71. {
  72. $this->company = $company;
  73. return $this;
  74. }
  75. public function isOrganic(): bool
  76. {
  77. return $this->organic;
  78. }
  79. public function setOrganic(bool $organic): OrderRequest
  80. {
  81. $this->organic = $organic;
  82. return $this;
  83. }
  84. public function getEstimatedCompletionDate(): ?\DateTimeInterface
  85. {
  86. return $this->estimatedCompletionDate;
  87. }
  88. public function setEstimatedCompletionDate(?\DateTimeInterface $estimatedCompletionDate): OrderRequest
  89. {
  90. $this->estimatedCompletionDate = DateTimeImmutable::createFromInterface($estimatedCompletionDate);
  91. return $this;
  92. }
  93. public function getState(): ?string
  94. {
  95. return $this->state;
  96. }
  97. public function setState(string $state): self
  98. {
  99. $this->state = $state;
  100. return $this;
  101. }
  102. public function getOrderRequestCustomFieldData(): Collection
  103. {
  104. return $this->orderRequestCustomFieldData;
  105. }
  106. public function setOrderRequestCustomFieldData(iterable $collection): self
  107. {
  108. $this->orderRequestCustomFieldData = $collection;
  109. return $this;
  110. }
  111. public function addOrderRequestCustomFieldData(OrderRequestCustomFieldData $orderRequestCustomFieldData): self
  112. {
  113. if (!$this->orderRequestCustomFieldData->contains($orderRequestCustomFieldData)) {
  114. $this->orderRequestCustomFieldData[] = $orderRequestCustomFieldData;
  115. $orderRequestCustomFieldData->setOrderRequest($this);
  116. }
  117. return $this;
  118. }
  119. public function removeOrderRequestCustomFieldData(OrderRequestCustomFieldData $orderRequestCustomFieldData): self
  120. {
  121. if ($this->orderRequestCustomFieldData->contains($orderRequestCustomFieldData)) {
  122. $this->orderRequestCustomFieldData->removeElement($orderRequestCustomFieldData);
  123. // set the owning side to null (unless already changed)
  124. if ($orderRequestCustomFieldData->getOrderRequest() === $this) {
  125. $orderRequestCustomFieldData->setOrderRequest(null);
  126. }
  127. }
  128. return $this;
  129. }
  130. /**
  131. * @return mixed
  132. */
  133. public function getArticleNumber()
  134. {
  135. return $this->articleNumber;
  136. }
  137. /**
  138. * @param mixed $articleNumber
  139. *
  140. * @return OrderRequest
  141. */
  142. public function setArticleNumber($articleNumber)
  143. {
  144. $this->articleNumber = $articleNumber;
  145. return $this;
  146. }
  147. public function getLineItems(): Collection
  148. {
  149. return $this->lineItems;
  150. }
  151. public function getStateUpdatedAt(): ?\DateTimeInterface
  152. {
  153. return $this->stateUpdatedAt;
  154. }
  155. public function setStateUpdatedAt(?\DateTimeInterface $stateUpdatedAt): self
  156. {
  157. $this->stateUpdatedAt = $stateUpdatedAt;
  158. return $this;
  159. }
  160. /**
  161. * @return Collection|CertificateUpload[]
  162. */
  163. public function getCertificates(): Collection
  164. {
  165. return $this->certificates;
  166. }
  167. public function addCertificate(CertificateUpload $certificate): self
  168. {
  169. if (!$this->certificates->contains($certificate)) {
  170. $this->certificates[] = $certificate;
  171. $certificate->setOrderRequest($this);
  172. }
  173. return $this;
  174. }
  175. public function removeCertificate(CertificateUpload $certificate): self
  176. {
  177. if ($this->certificates->removeElement($certificate)) {
  178. // set the owning side to null (unless already changed)
  179. if ($certificate->getOrderRequest() === $this) {
  180. $certificate->setOrderRequest(null);
  181. }
  182. }
  183. return $this;
  184. }
  185. }