src/Entity/Faq.php line 206

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 EADPlataforma\Validator\Constraints as EADAssert;
  6. use EADPlataforma\Enum\FaqEnum;
  7. use EADPlataforma\Util\StringUtil;
  8. use \DateTime;
  9. /**
  10.  * Faq
  11.  *
  12.  * @ORM\Table(name="faq", indexes={
  13.  *      @ORM\Index(name="fk_faq_product_id", columns={"product_id"}),
  14.  *      @ORM\Index(name="fk_faq_user_delete_id", columns={"user_delete_id"})
  15.  * })
  16.  *
  17.  * @ORM\Entity(repositoryClass="EADPlataforma\Repository\FaqRepository")
  18.  */
  19. class Faq
  20. {
  21.     /**
  22.      * @var int
  23.      *
  24.      * @ORM\Column(name="id", type="integer", nullable=false)
  25.      * @ORM\Id
  26.      * @ORM\GeneratedValue(strategy="IDENTITY")
  27.      */
  28.     private $id;
  29.     /**
  30.      * @Assert\NotBlank(
  31.      *      message = "Deleted not informed"
  32.      * )
  33.      *
  34.      * @Assert\Choice(
  35.      *      choices = { 
  36.      *                      FaqEnum::ITEM_NO_DELETED, 
  37.      *                      FaqEnum::ITEM_ON_TRASH,
  38.      *                      FaqEnum::ITEM_DELETED
  39.      *                },
  40.      *      message = "Delete Option Invalid"
  41.      * )
  42.      *
  43.      * @var int
  44.      *
  45.      * @ORM\Column(name="deleted", type="integer", nullable=false, options={"default"="0"})
  46.      */
  47.     private $deleted FaqEnum::ITEM_NO_DELETED;
  48.     /**
  49.      * @Assert\NotBlank(
  50.      *    message = "Order not informed"
  51.      * )
  52.      *
  53.      * @var int
  54.      *
  55.      * @ORM\Column(name="`order`", type="integer", nullable=false)
  56.      */
  57.     private $order;
  58.     /**
  59.      * @Assert\NotBlank(
  60.      *    message = "Type not informed"
  61.      * )
  62.      *
  63.      * @Assert\Choice(
  64.      *      choices = { 
  65.      *                      FaqEnum::GENERAL, 
  66.      *                      FaqEnum::COURSE, 
  67.      *                      FaqEnum::SUBSCRIPTION, 
  68.      *                      FaqEnum::ALL_COURSE,
  69.      *                      FaqEnum::ALL_SUBSCRIPTION,
  70.      *                      FaqEnum::COMBO,
  71.      *                      FaqEnum::ALL_COMBO
  72.      *                },
  73.      *      message = "Type Invalid"
  74.      * )
  75.      *
  76.      * @var int
  77.      *
  78.      * @ORM\Column(name="type", type="integer", nullable=false)
  79.      */
  80.     private $type;
  81.     /**
  82.      * @Assert\NotBlank(
  83.      *    message = "Question not informed"
  84.      * )
  85.      *
  86.      * @var string
  87.      *
  88.      * @ORM\Column(name="question", type="text", length=0, nullable=false)
  89.      */
  90.     private $question;
  91.     /**
  92.      * @Assert\NotBlank(
  93.      *    message = "Answer not informed"
  94.      * )
  95.      *
  96.      * @var string
  97.      *
  98.      * @ORM\Column(name="answer", type="text", length=0, nullable=false)
  99.      */
  100.     private $answer;
  101.     /**
  102.      * @Assert\NotBlank(
  103.      *    groups  = "isProduct",
  104.      *    message = "Product not informed"
  105.      * )
  106.      *
  107.      * @Assert\Valid
  108.      *
  109.      * @var \Product
  110.      *
  111.      * @ORM\ManyToOne(targetEntity="Product")
  112.      * @ORM\JoinColumns({
  113.      *   @ORM\JoinColumn(name="product_id", referencedColumnName="id")
  114.      * })
  115.      */
  116.     private $product;
  117.     /**
  118.      * @Assert\Valid
  119.      *
  120.      * @var \EADPlataforma\Entity\User
  121.      *
  122.      * @ORM\ManyToOne(targetEntity="User")
  123.      * @ORM\JoinColumns({
  124.      *   @ORM\JoinColumn(name="user_delete_id", referencedColumnName="id", nullable=true)
  125.      * })
  126.      */
  127.     private $userDelete;
  128.     /**
  129.      * @Assert\Choice(
  130.      *      choices = { 
  131.      *                      FaqEnum::INDIVIDUAL, 
  132.      *                      FaqEnum::CASCADE
  133.      *                },
  134.      *      message = "Type Delete Invalid"
  135.      * )
  136.      *
  137.      * @var int
  138.      *
  139.      * @ORM\Column(name="type_delete", type="integer", nullable=true)
  140.      */
  141.     private $typeDelete;
  142.     /**
  143.      * @EADAssert\DateTimeEAD(
  144.      *      message = "Date Delete Invalid"
  145.      * )
  146.      *
  147.      * @var \DateTime|null
  148.      *
  149.      * @ORM\Column(name="date_delete", type="datetime", nullable=true)
  150.      */
  151.     private $dateDelete;
  152.     public function getId(): ?int
  153.     {
  154.         return $this->id;
  155.     }
  156.     public function getOrder(): ?int
  157.     {
  158.         return $this->order;
  159.     }
  160.     public function setOrder(int $order): self
  161.     {
  162.         $this->order $order;
  163.         return $this;
  164.     }
  165.     public function getType(): ?int
  166.     {
  167.         return $this->type;
  168.     }
  169.     public function setType(int $type): self
  170.     {
  171.         $this->type $type;
  172.         return $this;
  173.     }
  174.     public function getQuestion(): ?string
  175.     {
  176.         return StringUtil::fromUnicode(StringUtil::encodeStringStatic($this->question));
  177.     }
  178.     public function setQuestion(string $question): self
  179.     {
  180.         $this->question StringUtil::toUnicode($question);
  181.         return $this;
  182.     }
  183.     public function getAnswer(): ?string
  184.     {
  185.         return StringUtil::fromUnicode(StringUtil::encodeStringStatic($this->answer));
  186.     }
  187.     public function setAnswer(string $answer): self
  188.     {
  189.         $this->answer StringUtil::toUnicode($answer);
  190.         return $this;
  191.     }
  192.     public function getProduct(): ?Product
  193.     {
  194.         return $this->product;
  195.     }
  196.     public function setProduct(?Product $product): self
  197.     {
  198.         $this->product $product;
  199.         return $this;
  200.     }
  201.     public function getUserDelete(): ?User
  202.     {
  203.         return $this->userDelete;
  204.     }
  205.     public function setUserDelete(?User $userDelete): self
  206.     {
  207.         $this->userDelete $userDelete;
  208.         return $this;
  209.     }
  210.     public function getDateDelete($dateFormat 'Y-m-d H:i:s')
  211.     {
  212.         if($this->dateDelete){
  213.             return $this->dateDelete->format($dateFormat);
  214.         }
  215.         return $this->dateDelete;
  216.     }
  217.     public function setDateDelete($dateDelete): self
  218.     {
  219.         if(!empty($dateDelete)){
  220.             $dateDelete DateTime::createFromFormat('Y-m-d H:i:s'$dateDelete);
  221.         }
  222.         
  223.         $this->dateDelete $dateDelete;
  224.         return $this;
  225.     }
  226.     public function individual(): self
  227.     {
  228.         $this->typeDelete FaqEnum::INDIVIDUAL;
  229.         return $this;
  230.     }
  231.     public function cascade(): self
  232.     {
  233.         $this->typeDelete FaqEnum::CASCADE;
  234.         return $this;
  235.     }
  236.     public function isOnTrash(): bool
  237.     {
  238.         return ($this->deleted == FaqEnum::ITEM_ON_TRASH);
  239.     }
  240.     public function isDeleted(): bool
  241.     {
  242.         return ($this->deleted == FaqEnum::ITEM_DELETED);
  243.     }
  244.     public function restore(): self
  245.     {
  246.         $this->deleted FaqEnum::ITEM_NO_DELETED;
  247.         return $this;
  248.     }
  249.     public function trash(): self
  250.     {
  251.         $this->deleted FaqEnum::ITEM_ON_TRASH;
  252.         return $this;
  253.     }
  254.     public function delete(): self
  255.     {
  256.         $this->deleted FaqEnum::ITEM_DELETED;
  257.         return $this;
  258.     }
  259.     
  260.     public function toReturn(){
  261.         $data = [
  262.             "id" => $this->id,
  263.             "deleted" => $this->deleted,
  264.             "order" => $this->order,
  265.             "type" => $this->type,
  266.             "question" => $this->getQuestion(),
  267.             "answer" => $this->getAnswer(),
  268.             "product" => ( $this->product $this->product->getId() : null ),
  269.             "userDelete" => ( $this->userDelete $this->userDelete->getId() : null ),
  270.             "typeDelete" => $this->typeDelete,
  271.             "dateDelete" => $this->getDateDelete()
  272.         ];
  273.         return $data;
  274.     }
  275. }