<?phpnamespace App\Entity\Gos\Uniqskills;use App\Entity\Gos\ProductVariant;use Doctrine\Common\Collections\ArrayCollection;use Doctrine\Common\Collections\Collection;use Doctrine\ORM\Mapping as ORM;/** * @ORM\Table() * @ORM\Entity(repositoryClass="App\Repository\Gos\Uniqskills\PackageRepository") * @ORM\HasLifecycleCallbacks() */class Package{ /** * @ORM\Column(type="integer") * @ORM\Id() * @ORM\GeneratedValue(strategy="IDENTITY") */ private $id; /** * @ORM\Column(type="boolean", nullable=true) */ private $isActive; /** * @ORM\Column(type="string", nullable=false, length=255) */ private $name; /** * @ORM\Column(type="datetime") */ private $createdAt; /** * @ORM\Column(type="datetime", nullable=true) */ private $updatedAt; /** * @ORM\ManyToOne(targetEntity="Course", inversedBy="package") * @ORM\JoinColumn(onDelete="CASCADE") */ private $course; /** * @ORM\ManyToMany(targetEntity="Module", inversedBy="package") * @ORM\JoinTable(name="package_module_access") */ private $modules; /** * @ORM\ManyToMany(targetEntity="Lesson", inversedBy="package") * @ORM\JoinTable(name="package_lesson_access") */ private $lessons; /** * @ORM\ManyToMany(targetEntity="App\Entity\Gos\ProductVariant", mappedBy="packages") */ private $productVariants; /** * @ORM\PrePersist() */ public function prePersist() { $this->createdAt = new \DateTime(); } /** * @ORM\PreUpdate() */ public function preUpdate() { $this->updatedAt = new \DateTime(); } public function __toString() { return (string)$this->name; } /** * Package constructor. */ public function __construct() { $this->modules = new \Doctrine\Common\Collections\ArrayCollection(); $this->lessons = new \Doctrine\Common\Collections\ArrayCollection(); $this->subscription = new \Doctrine\Common\Collections\ArrayCollection(); $this->productVariants = new ArrayCollection(); } /* ****************************** GETTERS & SETTERS ****************************** */ public function getId(): ?int { return $this->id; } public function getIsActive(): ?bool { return $this->isActive; } public function setIsActive(?bool $isActive): self { $this->isActive = $isActive; return $this; } public function getName(): ?string { return $this->name; } public function setName(string $name): self { $this->name = $name; return $this; } 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 getCourse(): ?Course { return $this->course; } public function setCourse(?Course $course): self { $this->course = $course; return $this; } /** * @return Collection|Module[] */ public function getModules(): Collection { return $this->modules; } public function addModule(Module $module): self { if (!$this->modules->contains($module)) { $this->modules[] = $module; } return $this; } public function removeModule(Module $module): self { if ($this->modules->contains($module)) { $this->modules->removeElement($module); } return $this; } /** * @return Collection|Lesson[] */ public function getLessons(): Collection { return $this->lessons; } public function addLesson(Lesson $lesson): self { if (!$this->lessons->contains($lesson)) { $this->lessons[] = $lesson; } return $this; } public function removeLesson(Lesson $lesson): self { if ($this->lessons->contains($lesson)) { $this->lessons->removeElement($lesson); } return $this; } /** * @return Collection|ProductVariant[] */ public function getProductVariants(): Collection { return $this->productVariants; } public function addProductVariant(ProductVariant $productVariant): self { if (!$this->productVariants->contains($productVariant)) { $this->productVariants[] = $productVariant; $productVariant->addPackage($this); } return $this; } public function removeProductVariant(ProductVariant $productVariant): self { if ($this->productVariants->contains($productVariant)) { $this->productVariants->removeElement($productVariant); $productVariant->removePackage($this); } return $this; }}