src/Entity/ExamUserAnswer.php line 23

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