src/Entity/Page.php line 230

Open in your IDE?
  1. <?php
  2. namespace EADPlataforma\Entity;
  3. use Doctrine\ORM\Mapping as ORM;
  4. use Symfony\Component\Validator\Constraints as Assert;
  5. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  6. use EADPlataforma\Validator\Constraints as EADAssert;
  7. use EADPlataforma\Util\StringUtil;
  8. use EADPlataforma\Enum\PageEnum;
  9. use \DateTime;
  10. /**
  11.  * Page
  12.  *
  13.  * @ORM\Table(name="page", indexes={
  14.  *      @ORM\Index(name="fk_page_user_delete_id", columns={"user_delete_id"})
  15.  * })
  16.  * 
  17.  * @ORM\Entity(repositoryClass="EADPlataforma\Repository\PageRepository")
  18.  *
  19.  * @UniqueEntity(
  20.  *     fields={"slug"},
  21.  *     message="This slug is already"
  22.  * )
  23.  */
  24. class Page
  25. {
  26.     /**
  27.      * @var int
  28.      *
  29.      * @ORM\Column(name="id", type="integer", nullable=false)
  30.      * @ORM\Id
  31.      * @ORM\GeneratedValue(strategy="IDENTITY")
  32.      */
  33.     private $id;
  34.     /**
  35.      * @Assert\NotBlank(
  36.      *      message = "Deleted not informed"
  37.      * )
  38.      *
  39.      * @Assert\Choice(
  40.      *      choices = { 
  41.      *                      PageEnum::ITEM_NO_DELETED, 
  42.      *                      PageEnum::ITEM_ON_TRASH,
  43.      *                      PageEnum::ITEM_DELETED
  44.      *                },
  45.      *      message = "Delete Option Invalid"
  46.      * )
  47.      *
  48.      * @var int
  49.      *
  50.      * @ORM\Column(name="deleted", type="integer", nullable=false, options={"default"="0"})
  51.      */
  52.     private $deleted PageEnum::ITEM_NO_DELETED;
  53.     /**
  54.      * @Assert\NotBlank(
  55.      *      message = "Order not informed"
  56.      * )
  57.      *
  58.      * @var int
  59.      *
  60.      * @ORM\Column(name="`order`", type="integer", nullable=false)
  61.      */
  62.     private $order;
  63.     /**
  64.      * @Assert\NotBlank(
  65.      *      message = "Title not informed"
  66.      * )
  67.      * 
  68.      * @Assert\Length(
  69.      *      min = 0,
  70.      *      max = 45
  71.      * )
  72.      *
  73.      * @var string
  74.      *
  75.      * @ORM\Column(name="title", type="string", length=50, nullable=false)
  76.      */
  77.     private $title;
  78.     /**
  79.      * @var string|null
  80.      *
  81.      * @ORM\Column(name="content", type="text", length=0, nullable=true)
  82.      */
  83.     private $content;
  84.     /**
  85.      * @Assert\NotBlank(
  86.      *      message = "Slug not informed"
  87.      * )
  88.      * 
  89.      * @Assert\Length(
  90.      *      min = 0,
  91.      *      max = 45
  92.      * )
  93.      *
  94.      * @var string
  95.      *
  96.      * @ORM\Column(name="slug", type="string", length=50, nullable=false)
  97.      */
  98.     private $slug;
  99.     /**
  100.      * @Assert\NotBlank(
  101.      *      message = "Status not informed"
  102.      * )
  103.      *
  104.      * @Assert\Choice(
  105.      *      choices = { PageEnum::DRAFT, PageEnum::PUBLISHED },
  106.      *      message = "Status Invalid"
  107.      * )
  108.      *
  109.      * @var int
  110.      *
  111.      * @ORM\Column(name="status", type="integer", nullable=false, options={"default"="1"})
  112.      */
  113.     private $status PageEnum::PUBLISHED;
  114.     /**
  115.      * @Assert\NotBlank(
  116.      *      message = "Show Type not informed"
  117.      * )
  118.      *
  119.      * @Assert\Choice(
  120.      *      choices = { PageEnum::NAVBAR, PageEnum::FOOTER },
  121.      *      message = "Show Type Invalid"
  122.      * )
  123.      *
  124.      * @var int
  125.      *
  126.      * @ORM\Column(name="show_type", type="integer", nullable=false, options={"default"="1"})
  127.      */
  128.     private $showType PageEnum::FOOTER;
  129.     /**
  130.      * @Assert\NotBlank(
  131.      *      groups  = "linkType"
  132.      * )
  133.      * 
  134.      * @Assert\Length(
  135.      *      min = 0,
  136.      *      max = 250
  137.      * )
  138.      *
  139.      * @var string|null
  140.      *
  141.      * @ORM\Column(name="external_link", type="string", length=255, nullable=true)
  142.      */
  143.     private $externalLink;
  144.     /**
  145.      * @Assert\NotBlank(
  146.      *      message = "Use External Link not informed"
  147.      * )
  148.      *
  149.      * @Assert\Choice(
  150.      *      choices = { PageEnum::NO, PageEnum::YES },
  151.      *      message = "Use External Link Invalid"
  152.      * )
  153.      *
  154.      * @var int
  155.      *
  156.      * @ORM\Column(name="use_external_link", type="integer", nullable=false, options={"default"="0"})
  157.      */
  158.     private $useExternalLink PageEnum::NO;
  159.     /**
  160.      * @Assert\Valid
  161.      *
  162.      * @var \EADPlataforma\Entity\User
  163.      *
  164.      * @ORM\ManyToOne(targetEntity="User")
  165.      * @ORM\JoinColumns({
  166.      *   @ORM\JoinColumn(name="user_delete_id", referencedColumnName="id", nullable=true)
  167.      * })
  168.      */
  169.     private $userDelete;
  170.     /**
  171.      * @Assert\Choice(
  172.      *      choices = { 
  173.      *                      PageEnum::INDIVIDUAL, 
  174.      *                      PageEnum::CASCADE
  175.      *                },
  176.      *      message = "Type Delete Invalid"
  177.      * )
  178.      *
  179.      * @var int
  180.      *
  181.      * @ORM\Column(name="type_delete", type="integer", nullable=true)
  182.      */
  183.     private $typeDelete;
  184.     /**
  185.      * @EADAssert\DateTimeEAD(
  186.      *      message = "Date Delete Invalid"
  187.      * )
  188.      *
  189.      * @var \DateTime|null
  190.      *
  191.      * @ORM\Column(name="date_delete", type="datetime", nullable=true)
  192.      */
  193.     private $dateDelete;
  194.     public function getId(): ?int
  195.     {
  196.         return $this->id;
  197.     }
  198.     public function getOrder(): ?int
  199.     {
  200.         return $this->order;
  201.     }
  202.     public function setOrder(int $order): self
  203.     {
  204.         $this->order $order;
  205.         return $this;
  206.     }
  207.     public function getTitle(): ?string
  208.     {
  209.         $this->title StringUtil::removeScriptsStatic($this->title);
  210.         return StringUtil::fromUnicode(StringUtil::encodeStringStatic($this->title));
  211.     }
  212.     public function setTitle(string $title): self
  213.     {
  214.         $title StringUtil::removeScriptsStatic($title);
  215.         $this->title StringUtil::toUnicode($title);
  216.         return $this;
  217.     }
  218.     public function getContent(): ?string
  219.     {
  220.         $this->content StringUtil::removeScriptsStatic($this->content);
  221.         return StringUtil::fromUnicode(StringUtil::encodeStringStatic($this->content));
  222.     }
  223.     public function setContent(string $content): self
  224.     {
  225.         $content StringUtil::removeScriptsStatic($content);
  226.         $this->content StringUtil::toUnicode($content);
  227.         return $this;
  228.     }
  229.     public function getSlug(): ?string
  230.     {
  231.         return $this->slug;
  232.     }
  233.     public function setSlug(string $slug): self
  234.     {
  235.         $this->slug StringUtil::slugStatic($slug);
  236.         return $this;
  237.     }
  238.     public function getStatus(): ?int
  239.     {
  240.         return $this->status;
  241.     }
  242.     public function setStatus(int $status): self
  243.     {
  244.         $this->status $status;
  245.         return $this;
  246.     }
  247.     public function getShowType(): ?int
  248.     {
  249.         return $this->showType;
  250.     }
  251.     public function setShowType(int $showType): self
  252.     {
  253.         $this->showType $showType;
  254.         return $this;
  255.     }
  256.     public function getExternalLink(): ?string
  257.     {
  258.         return $this->externalLink;
  259.     }
  260.     public function setExternalLink(?string $externalLink): self
  261.     {
  262.         $this->externalLink $externalLink;
  263.         return $this;
  264.     }
  265.     public function getUseExternalLink(): ?int
  266.     {
  267.         return $this->useExternalLink;
  268.     }
  269.     public function setUseExternalLink(int $useExternalLink): self
  270.     {
  271.         $this->useExternalLink $useExternalLink;
  272.         return $this;
  273.     }
  274.     public function getUserDelete(): ?User
  275.     {
  276.         return $this->userDelete;
  277.     }
  278.     public function setUserDelete(?User $userDelete): self
  279.     {
  280.         $this->userDelete $userDelete;
  281.         return $this;
  282.     }
  283.     public function getDateDelete($dateFormat 'Y-m-d H:i:s')
  284.     {
  285.         if($this->dateDelete){
  286.             return $this->dateDelete->format($dateFormat);
  287.         }
  288.         return $this->dateDelete;
  289.     }
  290.     public function setDateDelete($dateDelete): self
  291.     {
  292.         if(!empty($dateDelete)){
  293.             $dateDelete DateTime::createFromFormat('Y-m-d H:i:s'$dateDelete);
  294.         }
  295.         
  296.         $this->dateDelete $dateDelete;
  297.         return $this;
  298.     }
  299.     public function individual(): self
  300.     {
  301.         $this->typeDelete PageEnum::INDIVIDUAL;
  302.         return $this;
  303.     }
  304.     public function cascade(): self
  305.     {
  306.         $this->typeDelete PageEnum::CASCADE;
  307.         return $this;
  308.     }
  309.     public function isOnTrash(): bool
  310.     {
  311.         return ($this->deleted == PageEnum::ITEM_ON_TRASH);
  312.     }
  313.     public function isDeleted(): bool
  314.     {
  315.         return ($this->deleted == PageEnum::ITEM_DELETED);
  316.     }
  317.     public function restore(): self
  318.     {
  319.         $this->deleted PageEnum::ITEM_NO_DELETED;
  320.         return $this;
  321.     }
  322.     public function trash(): self
  323.     {
  324.         $this->deleted PageEnum::ITEM_ON_TRASH;
  325.         return $this;
  326.     }
  327.     public function delete(): self
  328.     {
  329.         $this->deleted PageEnum::ITEM_DELETED;
  330.         return $this;
  331.     }
  332.     public function toReturn(){
  333.         $data = [
  334.             "id" => $this->id,
  335.             "deleted" => $this->deleted,
  336.             "order" => $this->order,
  337.             "title" => $this->getTitle(),
  338.             "content" => $this->getContent(),
  339.             "slug" => $this->slug,
  340.             "status" => $this->status,
  341.             "showType" => $this->showType,
  342.             "externalLink" => $this->externalLink,
  343.             "useExternalLink" => $this->useExternalLink,
  344.             "userDelete" => ( $this->userDelete $this->userDelete->getId() : null ),
  345.             "typeDelete" => $this->typeDelete,
  346.             "dateDelete" => $this->getDateDelete()
  347.         ];
  348.         return $data;
  349.     }
  350. }