src/Entity/Discount.php line 10

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Entity\Enum\TransactionStatus;
  4. use App\Repository\DiscountRepository;
  5. use Doctrine\ORM\Mapping as ORM;
  6. #[ORM\Entity(repositoryClassDiscountRepository::class)]
  7. class Discount
  8. {
  9.     #[ORM\Id]
  10.     #[ORM\GeneratedValue]
  11.     #[ORM\Column(type'integer')]
  12.     private $id;
  13.     #[ORM\Column(type'string'length100nullabletrue)]
  14.     private $name;
  15.     #[ORM\Column(type'smallint'nullabletrue)]
  16.     private $amount;
  17.     #[ORM\Column(type'string'length255nullabletrue)]
  18.     private $comment;
  19.     #[ORM\ManyToOne(targetEntityDiscountModel::class, inversedBy'discounts')]
  20.     private $model;
  21.     #[ORM\OneToOne(mappedBy'discount'targetEntityCartItemDiscount::class, cascade: ['persist''remove'])]
  22.     private $cartItemDiscount;
  23.     #[ORM\OneToOne(mappedBy'discount'targetEntityTransactionDiscountDepositCheck::class, cascade: ['persist''remove'])]
  24.     private $transactionDepositCheck;
  25.     #[ORM\OneToOne(mappedBy'discount'targetEntityTransactionDiscountReceipt::class, cascade: ['persist''remove'])]
  26.     private $transactionReceipt;
  27.     #[ORM\OneToOne(inversedBy'discount'targetEntityDocument::class, cascade: ['persist''remove'])]
  28.     private $document;
  29.     public function getId(): ?int
  30.     {
  31.         return $this->id;
  32.     }
  33.     public function getName(): ?string
  34.     {
  35.         return $this->name ?? $this->getModel()?->getName();
  36.     }
  37.     public function setName(?string $name): self
  38.     {
  39.         $this->name $name;
  40.         return $this;
  41.     }
  42.     public function getAmount(): ?int
  43.     {
  44.         return $this->amount ?? $this->getModel()?->getAmount();
  45.     }
  46.     public function setAmount(?int $amount): self
  47.     {
  48.         $this->amount $amount;
  49.         return $this;
  50.     }
  51.     public function getComment(): ?string
  52.     {
  53.         return $this->comment;
  54.     }
  55.     public function setComment(?string $comment): self
  56.     {
  57.         $this->comment $comment;
  58.         return $this;
  59.     }
  60.     public function getModel(): ?DiscountModel
  61.     {
  62.         return $this->model;
  63.     }
  64.     public function setModel(?DiscountModel $model): self
  65.     {
  66.         $this->model $model;
  67.         return $this;
  68.     }
  69.     public function getCartItemDiscount(): ?CartItemDiscount
  70.     {
  71.         return $this->cartItemDiscount;
  72.     }
  73.     public function setCartItemDiscount(?CartItemDiscount $cartItemDiscount): self
  74.     {
  75.         // unset the owning side of the relation if necessary
  76.         if ($cartItemDiscount === null && $this->cartItemDiscount !== null) {
  77.             $this->cartItemDiscount->setDiscount(null);
  78.         }
  79.         // set the owning side of the relation if necessary
  80.         if ($cartItemDiscount !== null && $cartItemDiscount->getDiscount() !== $this) {
  81.             $cartItemDiscount->setDiscount($this);
  82.         }
  83.         $this->cartItemDiscount $cartItemDiscount;
  84.         return $this;
  85.     }
  86.     public function createCartItem(): CartItemDiscount
  87.     {
  88.         $cartItem = (new CartItemDiscount())
  89.             ->setPrice($this->getAmount())
  90.             ->setName($this->getName());
  91.         $this->setCartItemDiscount($cartItem);
  92.         return $cartItem;
  93.     }
  94.     public function getTransactionDepositCheck(TransactionStatus|array $statuses null): ?TransactionDiscountDepositCheck
  95.     {
  96.         if (!is_array($statuses) && null !== $statuses) {
  97.             $statuses = [$statuses];
  98.         }
  99.         if ($statuses) {
  100.             if (in_array($this->transactionDepositCheck?->getStatus(), $statusestrue)) {
  101.                 return $this->transactionDepositCheck;
  102.             }
  103.             return null;
  104.         }
  105.         return $this->transactionDepositCheck;
  106.     }
  107.     public function setTransactionDepositCheck(?TransactionDiscountDepositCheck $transactionDepositCheck): self
  108.     {
  109.         // unset the owning side of the relation if necessary
  110.         if ($transactionDepositCheck === null && $this->transactionDepositCheck !== null) {
  111.             $this->transactionDepositCheck->setDiscount(null);
  112.         }
  113.         // set the owning side of the relation if necessary
  114.         if ($transactionDepositCheck !== null && $transactionDepositCheck->getDiscount() !== $this) {
  115.             $transactionDepositCheck->setDiscount($this);
  116.         }
  117.         $this->transactionDepositCheck $transactionDepositCheck;
  118.         return $this;
  119.     }
  120.     public function getTransactionReceipt(TransactionStatus|array $statuses null): ?TransactionDiscountReceipt
  121.     {
  122.         if (!is_array($statuses)) {
  123.             $statuses = [$statuses];
  124.         }
  125.         if ($statuses) {
  126.             if (in_array($this->transactionReceipt?->getStatus(), $statusestrue)) {
  127.                 return $this->transactionReceipt;
  128.             }
  129.             return null;
  130.         }
  131.         return $this->transactionReceipt;
  132.     }
  133.     public function setTransactionReceipt(?TransactionDiscountReceipt $transactionReceipt): self
  134.     {
  135.         // unset the owning side of the relation if necessary
  136.         if ($transactionReceipt === null && $this->transactionReceipt !== null) {
  137.             $this->transactionReceipt->setDiscount(null);
  138.         }
  139.         // set the owning side of the relation if necessary
  140.         if ($transactionReceipt !== null && $transactionReceipt->getDiscount() !== $this) {
  141.             $transactionReceipt->setDiscount($this);
  142.         }
  143.         $this->transactionReceipt $transactionReceipt;
  144.         return $this;
  145.     }
  146.     public function getRemainingToPay(): float
  147.     {
  148.         $transaction $this->getTransactionDepositCheck(statusesTransactionStatus::Successful);
  149.         if ($transaction) {
  150.             return $this->getAmount() - $transaction->getAmountPayed();
  151.         }
  152.         return $this->getAmount();
  153.     }
  154.     public function getDocument(): ?Document
  155.     {
  156.         return $this->document;
  157.     }
  158.     public function setDocument(?Document $document): self
  159.     {
  160.         $this->document $document;
  161.         return $this;
  162.     }
  163. }