<?phpnamespace App\Entity\Gos;use Doctrine\ORM\Mapping as ORM;/** * @ORM\Table() * @ORM\Entity(repositoryClass="App\Repository\AlertRepository") * @ORM\HasLifecycleCallbacks() */class Alert{ /** * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(type="integer") */ private $id; /** * @ORM\Column(type="boolean", nullable=true) */ private $isActive; /** * @ORM\ManyToOne(targetEntity="App\Entity\Gos\AlertType", inversedBy="alerts") * @ORM\JoinColumn() */ private $type; /** * @ORM\ManyToOne(targetEntity="App\Entity\Gos\User", inversedBy="alerts") * @ORM\JoinColumn() */ private $user; /** * @ORM\ManyToOne(targetEntity="App\Entity\Gos\Coupon", inversedBy="alerts") * @ORM\JoinTable() */ private $coupon; /** * @ORM\ManyToOne(targetEntity="App\Entity\Gos\ProductVariant", inversedBy="alerts") * @ORM\JoinTable() */ private $productVariant; /** * @ORM\Column(type="integer") */ private $triggerCondition; /** * @ORM\Column(type="datetime") */ private $createdAt; /** * @ORM\Column(type="datetime", nullable=true) */ private $updatedAt; /** @ORM\PrePersist() */ public function prePersist() { $this->createdAt = new \DateTime(); } /** @ORM\PreUpdate() */ public function preUpdate() { $this->updatedAt = new \DateTime(); } public function __construct() { $this->isUnread = false; } public function getId(): ?int { return $this->id; } public function getCreatedAt(): ?\DateTimeInterface { return $this->createdAt; } public function setCreatedAt(\DateTimeInterface $createdAt): self { $this->createdAt = $createdAt; return $this; } public function getUpdatedAt(): ?\DateTimeInterface { return $this->updatedAt; } public function setUpdatedAt(?\DateTimeInterface $updatedAt): self { $this->updatedAt = $updatedAt; return $this; } public function getUser(): ?User { return $this->user; } public function setUser(?User $user): self { $this->user = $user; return $this; } public function getCoupon(): ?Coupon { return $this->coupon; } public function setCoupon(?Coupon $coupon): self { $this->coupon = $coupon; return $this; } public function getProductVariant(): ?ProductVariant { return $this->productVariant; } public function setProductVariant(?ProductVariant $productVariant): self { $this->productVariant = $productVariant; return $this; } public function getTriggerCondition(): ?int { return $this->triggerCondition; } public function setTriggerCondition(int $triggerCondition): self { $this->triggerCondition = $triggerCondition; return $this; } public function getIsActive(): ?bool { return $this->isActive; } public function setIsActive(?bool $isActive): self { $this->isActive = $isActive; return $this; } public function getIsTriggered(): bool { if ($this->getType()->getId() == 2) { if ($this->getCoupon()->getUsesLeft() <= $this->triggerCondition) { return true; } } elseif ($this->getType()->getId() == 1) { if ($this->getProductVariant()->getQuantityLeft() <= $this->triggerCondition) { return true; } } return false; } public function getType(): ?AlertType { return $this->type; } public function setType(?AlertType $type): self { $this->type = $type; return $this; }}