src/Entity/Page.php line 229

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.         return StringUtil::fromUnicode(StringUtil::encodeStringStatic($this->title));
  210.     }
  211.     public function setTitle(string $title): self
  212.     {
  213.         $this->title StringUtil::toUnicode($title);
  214.         return $this;
  215.     }
  216.     public function getContent(): ?string
  217.     {
  218.         return StringUtil::fromUnicode(StringUtil::encodeStringStatic($this->content));
  219.     }
  220.     public function setContent(string $content): self
  221.     {
  222.         $this->content StringUtil::toUnicode($content);
  223.         return $this;
  224.     }
  225.     public function getSlug(): ?string
  226.     {
  227.         return $this->slug;
  228.     }
  229.     public function setSlug(string $slug): self
  230.     {
  231.         $this->slug StringUtil::slugStatic($slug);
  232.         return $this;
  233.     }
  234.     public function getStatus(): ?int
  235.     {
  236.         return $this->status;
  237.     }
  238.     public function setStatus(int $status): self
  239.     {
  240.         $this->status $status;
  241.         return $this;
  242.     }
  243.     public function getShowType(): ?int
  244.     {
  245.         return $this->showType;
  246.     }
  247.     public function setShowType(int $showType): self
  248.     {
  249.         $this->showType $showType;
  250.         return $this;
  251.     }
  252.     public function getExternalLink(): ?string
  253.     {
  254.         return $this->externalLink;
  255.     }
  256.     public function setExternalLink(?string $externalLink): self
  257.     {
  258.         $this->externalLink $externalLink;
  259.         return $this;
  260.     }
  261.     public function getUseExternalLink(): ?int
  262.     {
  263.         return $this->useExternalLink;
  264.     }
  265.     public function setUseExternalLink(int $useExternalLink): self
  266.     {
  267.         $this->useExternalLink $useExternalLink;
  268.         return $this;
  269.     }
  270.     public function getUserDelete(): ?User
  271.     {
  272.         return $this->userDelete;
  273.     }
  274.     public function setUserDelete(?User $userDelete): self
  275.     {
  276.         $this->userDelete $userDelete;
  277.         return $this;
  278.     }
  279.     public function getDateDelete($dateFormat 'Y-m-d H:i:s')
  280.     {
  281.         if($this->dateDelete){
  282.             return $this->dateDelete->format($dateFormat);
  283.         }
  284.         return $this->dateDelete;
  285.     }
  286.     public function setDateDelete($dateDelete): self
  287.     {
  288.         if(!empty($dateDelete)){
  289.             $dateDelete DateTime::createFromFormat('Y-m-d H:i:s'$dateDelete);
  290.         }
  291.         
  292.         $this->dateDelete $dateDelete;
  293.         return $this;
  294.     }
  295.     public function individual(): self
  296.     {
  297.         $this->typeDelete PageEnum::INDIVIDUAL;
  298.         return $this;
  299.     }
  300.     public function cascade(): self
  301.     {
  302.         $this->typeDelete PageEnum::CASCADE;
  303.         return $this;
  304.     }
  305.     public function isOnTrash(): bool
  306.     {
  307.         return ($this->deleted == PageEnum::ITEM_ON_TRASH);
  308.     }
  309.     public function isDeleted(): bool
  310.     {
  311.         return ($this->deleted == PageEnum::ITEM_DELETED);
  312.     }
  313.     public function restore(): self
  314.     {
  315.         $this->deleted PageEnum::ITEM_NO_DELETED;
  316.         return $this;
  317.     }
  318.     public function trash(): self
  319.     {
  320.         $this->deleted PageEnum::ITEM_ON_TRASH;
  321.         return $this;
  322.     }
  323.     public function delete(): self
  324.     {
  325.         $this->deleted PageEnum::ITEM_DELETED;
  326.         return $this;
  327.     }
  328.     public function toReturn(){
  329.         $data = [
  330.             "id" => $this->id,
  331.             "deleted" => $this->deleted,
  332.             "order" => $this->order,
  333.             "title" => $this->getTitle(),
  334.             "content" => $this->getContent(),
  335.             "slug" => $this->slug,
  336.             "status" => $this->status,
  337.             "showType" => $this->showType,
  338.             "externalLink" => $this->externalLink,
  339.             "useExternalLink" => $this->useExternalLink,
  340.             "userDelete" => ( $this->userDelete $this->userDelete->getId() : null ),
  341.             "typeDelete" => $this->typeDelete,
  342.             "dateDelete" => $this->getDateDelete()
  343.         ];
  344.         return $data;
  345.     }
  346. }