src/Entity/License.php line 9

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use Doctrine\ORM\Mapping as ORM;
  4. #[ORM\Table('license')]
  5. #[ORM\Entity]
  6. class License implements \JsonSerializable
  7. {
  8.     #[ORM\Column('id''integer')]
  9.     #[ORM\Id]
  10.     #[ORM\GeneratedValue('IDENTITY')]
  11.     private int $id;
  12.     #[ORM\OneToOne(targetEntityCustomer::class, inversedBy'license')]
  13.     #[ORM\JoinColumn('customer')]
  14.     private Customer $customer;
  15.     #[ORM\Column('license_date_limit''datetime_immutable')]
  16.     private ?\DateTimeImmutable $dateLimit;
  17.     #[ORM\Column('license_date_start''datetime_immutable')]
  18.     private ?\DateTimeImmutable $dateStart;
  19.     #[ORM\Column('users_limit''integer')]
  20.     private int $usersLimit 0;
  21.     #[ORM\Column('size_limit''integer')]
  22.     private int $sizeLimit 0;
  23.     public function __construct(Customer $customer)
  24.     {
  25.         $this->customer $customer;
  26.         $this->dateStart = new \DateTimeImmutable();
  27.         $this->dateLimit = new \DateTimeImmutable();
  28.     }
  29.     public function getId(): ?int
  30.     {
  31.         return $this->id;
  32.     }
  33.     public function setId(int $id): License
  34.     {
  35.         $this->id $id;
  36.         return $this;
  37.     }
  38.     public function getCustomer(): Customer
  39.     {
  40.         return $this->customer;
  41.     }
  42.     public function setCustomer(Customer $customer): License
  43.     {
  44.         $this->customer $customer;
  45.         return $this;
  46.     }
  47.     public function getDateLimit(): ?\DateTimeImmutable
  48.     {
  49.         return $this->dateLimit;
  50.     }
  51.     public function setDateLimit(?\DateTimeImmutable $dateLimit): License
  52.     {
  53.         $dateLimit?->setTime(235959);
  54.         $this->dateLimit $dateLimit;
  55.         return $this;
  56.     }
  57.     public function getUsersLimit(): int
  58.     {
  59.         return $this->usersLimit;
  60.     }
  61.     public function setUsersLimit(?int $usersLimit): License
  62.     {
  63.         $this->usersLimit = (int)$usersLimit;
  64.         return $this;
  65.     }
  66.     public function getSizeLimit(): int
  67.     {
  68.         return $this->sizeLimit;
  69.     }
  70.     public function setSizeLimit(?int $sizeLimit): License
  71.     {
  72.         $this->sizeLimit = (int)$sizeLimit;
  73.         return $this;
  74.     }
  75.     public function getDateStart(): ?\DateTimeImmutable
  76.     {
  77.         return $this->dateStart;
  78.     }
  79.     public function setDateStart(?\DateTimeImmutable $dateStart): License
  80.     {
  81.         $this->dateStart $dateStart;
  82.         return $this;
  83.     }
  84.     public function jsonSerialize(): array
  85.     {
  86.         return [
  87.             'dateLimit' => $this->getDateLimit()->format('Y-m-d'),
  88.             'dateStart' => $this->dateStart?->format('Y-m-d'),
  89.             'sizeLimit' => $this->getSizeLimit(),
  90.             'usersLimit' => $this->getUsersLimit(),
  91.             'additionalModules' => $this->getCustomer()->getActiveModuleLicense()->toArray(),
  92.         ];
  93.     }
  94. }