src/Entity/ModulePage.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\ModulePageRepository;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\ORM\Mapping as ORM;
  7. use Symfony\Component\HttpFoundation\File\File;
  8. use Symfony\Component\Validator\Constraints as Assert;
  9. use Vich\UploaderBundle\Mapping\Annotation as Vich;
  10. /**
  11.  * @ORM\Entity(repositoryClass=ModulePageRepository::class)
  12.  * @Vich\Uploadable()
  13.  * @ORM\HasLifecycleCallbacks
  14.  */
  15. class ModulePage extends SeoEntity
  16. {
  17.     const TARIFFS = [
  18.         'StartUp' => 0,
  19.         'Business' => 1,
  20.         'Pro' => 2,
  21.     ];
  22.     /**
  23.      * @ORM\Id
  24.      * @ORM\GeneratedValue
  25.      * @ORM\Column(type="integer")
  26.      */
  27.     private $id;
  28.     /**
  29.      * @ORM\Column(type="string", length=255, unique=true)
  30.      */
  31.     private $slug;
  32.     /**
  33.      * @ORM\Column(type="string", length=255)
  34.      */
  35.     private $title;
  36.     /**
  37.      * @ORM\Column(type="text")
  38.      */
  39.     private $description;
  40.     /**
  41.      * @ORM\Column(type="string", length=255, nullable=true)
  42.      */
  43.     private $capabilityTitle;
  44.     /**
  45.      * @ORM\Column(type="text", nullable=true)
  46.      */
  47.     private $capabilityText;
  48.     /**
  49.      * @ORM\Column(type="string", length=255, nullable=true)
  50.      */
  51.     private $configureTitle;
  52.     /**
  53.      * @ORM\Column(type="text", nullable=true)
  54.      */
  55.     private $configureText;
  56.     /**
  57.      * @ORM\Column(type="json")
  58.      */
  59.     private $tariffs = [];
  60.     /**
  61.      * @ORM\Column(type="text", nullable=true)
  62.      */
  63.     private $featureText;
  64.     /**
  65.      * @ORM\Column(type="string", length=255, nullable=true)
  66.      */
  67.     private $featureImage;
  68.     /**
  69.      * @var File|null
  70.      * @Vich\UploadableField(mapping="module", fileNameProperty="featureImage")
  71.      * @Assert\File(
  72.      *     maxSize= "200k"
  73.      * )
  74.      */
  75.     private $featureImageFile;
  76.     /**
  77.      * @ORM\Column(type="datetime_immutable", options={"default":"CURRENT_TIMESTAMP"})
  78.      */
  79.     private $createdAt;
  80.     /**
  81.      * @ORM\Column(type="datetime", nullable=true)
  82.      *
  83.      * @var \DateTimeInterface|null
  84.      */
  85.     private $updatedAt;
  86.     /**
  87.      * @ORM\OneToMany(targetEntity=ModuleAttachment::class, mappedBy="module", cascade={"persist","refresh","remove"})
  88.      */
  89.     private $attachments;
  90.     /**
  91.      * @ORM\Column(type="string", length=255, nullable=true)
  92.      */
  93.     private $featureBtnText 'Попробовать бесплатно';
  94.     /**
  95.      * @ORM\Column(type="boolean")
  96.      */
  97.     private $active false;
  98.     /**
  99.      * @ORM\Column(type="string", length=255, nullable=true)
  100.      */
  101.     private $featureYouTube;
  102.     /**
  103.      * @ORM\Column(type="integer", nullable=true)
  104.      */
  105.     private $pos 500;
  106.     public function getId(): ?int
  107.     {
  108.         return $this->id;
  109.     }
  110.     public function __construct()
  111.     {
  112.         $this->createdAt = new \DateTimeImmutable();
  113.         $this->attachments = new ArrayCollection();
  114.     }
  115.     public function getSlug(): ?string
  116.     {
  117.         return $this->slug;
  118.     }
  119.     public function setSlug(string $slug): self
  120.     {
  121.         $this->slug $slug;
  122.         return $this;
  123.     }
  124.     public function getTitle(): ?string
  125.     {
  126.         return $this->title;
  127.     }
  128.     public function setTitle(string $title): self
  129.     {
  130.         $this->title $title;
  131.         return $this;
  132.     }
  133.     public function getCapabilityText(): ?string
  134.     {
  135.         return $this->capabilityText;
  136.     }
  137.     public function setCapabilityText(?string $capabilityText): self
  138.     {
  139.         $this->capabilityText $capabilityText;
  140.         return $this;
  141.     }
  142.     public function getConfigureText(): ?string
  143.     {
  144.         return $this->configureText;
  145.     }
  146.     public function setConfigureText(?string $configureText): self
  147.     {
  148.         $this->configureText $configureText;
  149.         return $this;
  150.     }
  151.     public function getDescription(): ?string
  152.     {
  153.         return $this->description;
  154.     }
  155.     public function setDescription(string $description): self
  156.     {
  157.         $this->description $description;
  158.         return $this;
  159.     }
  160.     /**
  161.      * @return mixed
  162.      */
  163.     public function getCapabilityTitle()
  164.     {
  165.         return $this->capabilityTitle;
  166.     }
  167.     /**
  168.      * @param mixed $capabilityTitle
  169.      * @return ModulePage
  170.      */
  171.     public function setCapabilityTitle($capabilityTitle): self
  172.     {
  173.         $this->capabilityTitle $capabilityTitle;
  174.         return $this;
  175.     }
  176.     public function getFeatureText(): ?string
  177.     {
  178.         return $this->featureText;
  179.     }
  180.     public function setFeatureText(?string $featureText): self
  181.     {
  182.         $this->featureText $featureText;
  183.         return $this;
  184.     }
  185.     public function getFeatureImage(): ?string
  186.     {
  187.         return $this->featureImage;
  188.     }
  189.     public function setFeatureImage(?string $featureImage): self
  190.     {
  191.         $this->featureImage $featureImage;
  192.         return $this;
  193.     }
  194.     public function getCreatedAt(): ?\DateTimeImmutable
  195.     {
  196.         return $this->createdAt;
  197.     }
  198.     public function setCreatedAt(\DateTimeImmutable $createdAt): self
  199.     {
  200.         $this->createdAt $createdAt;
  201.         return $this;
  202.     }
  203.     /**
  204.      * @return File|null
  205.      */
  206.     public function getFeatureImageFile(): ?File
  207.     {
  208.         return $this->featureImageFile;
  209.     }
  210.     /**
  211.      * @param File|null $featureImageFile
  212.      */
  213.     public function setFeatureImageFile(?File $imageFile): self
  214.     {
  215.         $this->featureImageFile $imageFile;
  216.         if ($imageFile) {
  217.             $this->updatedAt = new \DateTimeImmutable();
  218.         }
  219.         return $this;
  220.     }
  221.     /**
  222.      * @return string|null
  223.      */
  224.     public function getConfigureTitle(): ?string
  225.     {
  226.         return $this->configureTitle;
  227.     }
  228.     /**
  229.      * @param string|null $configureTitle
  230.      */
  231.     public function setConfigureTitle(?string $configureTitle): self
  232.     {
  233.         $this->configureTitle $configureTitle;
  234.         return $this;
  235.     }
  236.     /**
  237.      * @return array
  238.      */
  239.     public function getTariffs(): array
  240.     {
  241.         return $this->tariffs;
  242.     }
  243.     /**
  244.      * @param array $tariffs
  245.      */
  246.     public function setTariffs(array $tariffs): self
  247.     {
  248.         $this->tariffs $tariffs;
  249.         return $this;
  250.     }
  251.     /**
  252.      * @return \DateTimeInterface|null
  253.      */
  254.     public function getUpdatedAt(): ?\DateTimeInterface
  255.     {
  256.         return $this->updatedAt;
  257.     }
  258.     /**
  259.      * @return Collection|ModuleAttachment[]
  260.      */
  261.     public function getAttachments(): Collection
  262.     {
  263.         return $this->attachments;
  264.     }
  265.     public function addAttachment(ModuleAttachment $attachment): self
  266.     {
  267.         if (!$this->attachments->contains($attachment)) {
  268.             $this->attachments[] = $attachment;
  269.             $attachment->setModule($this);
  270.         }
  271.         return $this;
  272.     }
  273.     public function removeAttachment(ModuleAttachment $attachment): self
  274.     {
  275.         if ($this->attachments->removeElement($attachment)) {
  276.             // set the owning side to null (unless already changed)
  277.             if ($attachment->getModule() === $this) {
  278.                 $attachment->setModule(null);
  279.             }
  280.         }
  281.         return $this;
  282.     }
  283.     public function getFeatureBtnText(): ?string
  284.     {
  285.         return $this->featureBtnText;
  286.     }
  287.     public function setFeatureBtnText(?string $featureBtnText): self
  288.     {
  289.         $this->featureBtnText $featureBtnText;
  290.         return $this;
  291.     }
  292.     public function getActive(): ?bool
  293.     {
  294.         return $this->active;
  295.     }
  296.     public function setActive(bool $active): self
  297.     {
  298.         $this->active $active;
  299.         return $this;
  300.     }
  301.     public function getFeatureYouTube(): ?string
  302.     {
  303.         return $this->featureYouTube;
  304.     }
  305.     public function setFeatureYouTube(?string $featureYouTube): self
  306.     {
  307.         $this->featureYouTube $featureYouTube;
  308.         return $this;
  309.     }
  310.     public function getPos(): ?int
  311.     {
  312.         return $this->pos;
  313.     }
  314.     public function setPos(?int $pos): self
  315.     {
  316.         $this->pos $pos;
  317.         return $this;
  318.     }
  319.     /**
  320.      * Триггер только на обновление.
  321.      * @ORM\PreUpdate
  322.      */
  323.     public function onPreUpdate()
  324.     {
  325.         $this->updatedAt = new \DateTimeImmutable();
  326.     }
  327. }