<?phpnamespace App\Entity\Gos;use App\Entity\Gos\ProductPack;use App\Enum\ProductPackMultiDiscountType;use Doctrine\ORM\Mapping as ORM;/** * @ORM\Entity(repositoryClass=ProductPackMultiDiscountRepository::class) * @ORM\HasLifecycleCallbacks() */class ProductPackMultiDiscount implements MultiDiscountInterface{ /** * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") */ private $id; /** * @ORM\Column(type="datetime") */ private $createdAt; /** * @ORM\Column(type="datetime", nullable=true) */ private $updatedAt; /** * @ORM\Column(type="boolean", options={"default": 0}) */ private $isGross; /** * @ORM\Column(type="string", length=255) */ private $discountType; /** * @ORM\Column(type="float", options={"default": 0}) */ private $discount; /** * @ORM\Column(type="integer", nullable=true) */ private $minAmount; /** * @ORM\Column(type="integer", nullable=true) */ private $maxAmount; /** * @ORM\ManyToOne(targetEntity=ProductPack::class, inversedBy="multiDiscounts") * @ORM\JoinColumn(nullable=false) */ private $productPack; /** * @ORM\PrePersist() */ public function prePersist() { $this->createdAt = new \DateTime(); } /** * @ORM\PreUpdate() */ public function preUpdate() { $this->updatedAt = new \DateTime(); } public function __toString() { return (string)$this->id; } public function getId(): ?int { return $this->id; } public function setId(int $id): self { $this->id = $id; return $this; } public function setCreatedAt(\DateTime $createdAt): self { $this->createdAt = $createdAt; return $this; } public function getCreatedAt(): \DateTime { return $this->createdAt; } public function setUpdatedAt(\DateTime $updatedAt): self { $this->updatedAt = $updatedAt; return $this; } public function getUpdatedAt(): ?\DateTime { return $this->updatedAt; } public function getIsGross(): ?bool { return $this->isGross; } public function setIsGross(bool $isGross): self { $this->isGross = $isGross; return $this; } public function getDiscountType(): ?string { return $this->discountType; } public function setDiscountType(string $discountType): self { if (!in_array($discountType, array(ProductPackMultiDiscountType::AMOUNT, ProductPackMultiDiscountType::PERCENTAGE))) { throw new \InvalidArgumentException("Invalid discount type"); } $this->discountType = $discountType; return $this; } public function getDiscount(): ?float { return $this->discount; } public function setDiscount(float $discount): self { $this->discount = $discount; return $this; } public function getMinAmount(): ?int { return $this->minAmount; } public function setMinAmount(int $minAmount): self { $this->minAmount = $minAmount; return $this; } public function getMaxAmount(): ?int { return $this->maxAmount; } public function setMaxAmount(int $maxAmount): self { $this->maxAmount = $maxAmount; return $this; } public function getProductPack(): ?ProductPack { return $this->productPack; } public function setProductPack(?ProductPack $productPack): self { $this->productPack = $productPack; return $this; }}