src/Entity/Lesson.php line 457

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\Services\FileService;
  7. use EADPlataforma\Enum\LessonEnum;
  8. use EADPlataforma\Util\StringUtil;
  9. use \DateTime;
  10. /**
  11.  * Lesson
  12.  *
  13.  * @ORM\Table(name="lesson", indexes={
  14.  *      @ORM\Index(name="fk_lesson_lesson_module_id", columns={"lesson_module_id"}), 
  15.  *      @ORM\Index(name="fk_lesson_course_id", columns={"course_id"}),
  16.  *      @ORM\Index(name="fk_lesson_library_id", columns={"library_id"}),
  17.  *      @ORM\Index(name="fk_lesson_user_id", columns={"user_id"}),
  18.  *      @ORM\Index(name="fk_lesson_user_delete_id", columns={"user_delete_id"})
  19.  * })
  20.  *
  21.  * @ORM\Entity(repositoryClass="EADPlataforma\Repository\LessonRepository")
  22.  */
  23. class Lesson
  24. {
  25.     /**
  26.      * @var int
  27.      *
  28.      * @ORM\Column(name="id", type="integer", nullable=false)
  29.      * @ORM\Id
  30.      * @ORM\GeneratedValue(strategy="IDENTITY")
  31.      */
  32.     private $id;
  33.     /**
  34.      * @Assert\NotBlank(
  35.      *      message = "Deleted not informed"
  36.      * )
  37.      *
  38.      * @Assert\Choice(
  39.      *      choices = { 
  40.      *                      LessonEnum::ITEM_NO_DELETED, 
  41.      *                      LessonEnum::ITEM_ON_TRASH,
  42.      *                      LessonEnum::ITEM_DELETED
  43.      *                },
  44.      *      message = "Delete Option Invalid"
  45.      * )
  46.      *
  47.      * @var int
  48.      *
  49.      * @ORM\Column(name="deleted", type="integer", nullable=false, options={"default"="0"})
  50.      */
  51.     private $deleted LessonEnum::ITEM_NO_DELETED;
  52.     /**
  53.      * @Assert\NotBlank(
  54.      *    message = "Order not informed"
  55.      * )
  56.      *
  57.      * @var int
  58.      *
  59.      * @ORM\Column(name="`order`", type="integer", nullable=false)
  60.      */
  61.     private $order;
  62.     /**
  63.      * @Assert\NotBlank(
  64.      *    message = "Title not informed"
  65.      * )
  66.      * 
  67.      * @Assert\Length(
  68.      *      min = 0,
  69.      *      max = 250
  70.      * )
  71.      *
  72.      * @var string
  73.      *
  74.      * @ORM\Column(name="title", type="string", length=255, nullable=false)
  75.      */
  76.     private $title;
  77.     /**
  78.      * @Assert\NotBlank(
  79.      *    message = "Demonstration not informed"
  80.      * )
  81.      *
  82.      * @Assert\Choice(
  83.      *      choices = { LessonEnum::NO, LessonEnum::YES },
  84.      *      message = "Demonstration Invalid"
  85.      * )
  86.      *
  87.      * @var int
  88.      *
  89.      * @ORM\Column(name="demonstration", type="integer", nullable=false, options={"default"="0"})
  90.      */
  91.     private $demonstration LessonEnum::NO;
  92.     /**
  93.      * @Assert\NotBlank(
  94.      *    message = "Status not informed"
  95.      * )
  96.      *
  97.      * @Assert\Choice(
  98.      *      choices = { LessonEnum::DRAFT, LessonEnum::PUBLISHED },
  99.      *      message = "Status Invalid"
  100.      * )
  101.      *
  102.      * @var int
  103.      *
  104.      * @ORM\Column(name="status", type="integer", nullable=false, options={"default"="0"})
  105.      */
  106.     private $status LessonEnum::DRAFT;
  107.     /**
  108.      * @Assert\NotBlank(
  109.      *    message = "Type not informed"
  110.      * )
  111.      *
  112.      * @Assert\Choice(
  113.      *      choices = { LessonEnum::CONTENT_NORMAL, LessonEnum::CONTENT_MULTI },
  114.      *      message = "Type Invalid"
  115.      * )
  116.      *
  117.      * @var int
  118.      *
  119.      * @ORM\Column(name="type", type="integer", nullable=false, options={"default"="1"})
  120.      */
  121.     private $type LessonEnum::CONTENT_NORMAL;
  122.     /**
  123.      * @var string|null
  124.      *
  125.      * @ORM\Column(name="description", type="text", length=65535, nullable=true)
  126.      */
  127.     private $description;
  128.     /**
  129.      * @Assert\NotBlank(
  130.      *    message = "Control Requirement not informed"
  131.      * )
  132.      *
  133.      * @Assert\Choice(
  134.      *      choices = { LessonEnum::NO, LessonEnum::YES },
  135.      *      message = "Control Requirement Invalid"
  136.      * )
  137.      *
  138.      * @var int
  139.      *
  140.      * @ORM\Column(name="control_requirement", type="integer", nullable=false, options={"default"="0"})
  141.      */
  142.     private $controlRequirement LessonEnum::NO;
  143.     /**
  144.      * @Assert\NotBlank(
  145.      *    message = "Control Release Type not informed"
  146.      * )
  147.      *
  148.      * @Assert\Choice(
  149.      *      choices = { LessonEnum::RELEASED, LessonEnum::FIXED_DATE, LessonEnum::FLEXIBLE_DATE },
  150.      *      message = "Control Release Type Invalid"
  151.      * )
  152.      *
  153.      * @var int
  154.      *
  155.      * @ORM\Column(name="control_release_type", type="integer", nullable=false, options={"default"="0"})
  156.      */
  157.     private $controlReleaseType LessonEnum::RELEASED;
  158.     /**
  159.      * @Assert\NotBlank(
  160.      *    message = "Control Release After Type not informed",
  161.      *    groups  = "lssonControlReleaseTypeFlex",
  162.      * )
  163.      *
  164.      * @Assert\Choice(
  165.      *      choices = { LessonEnum::ENROLLMENT, LessonEnum::LAST_LESSON },
  166.      *      message = "Control Release After Type Invalid",
  167.      *      groups  = "lssonControlReleaseTypeFlex",
  168.      * )
  169.      *
  170.      * @var int
  171.      *
  172.      * @ORM\Column(name="control_release_after_type", type="integer", nullable=false, options={"default"="1"})
  173.      */
  174.     private $controlReleaseAfterType LessonEnum::LAST_LESSON;
  175.     /**
  176.      * @Assert\NotBlank(
  177.      *    message = "Control Release Date not informed",
  178.      *    groups  = "lssonControlReleaseTypeFixed",
  179.      * )
  180.      *
  181.      * @EADAssert\DateTimeEAD(
  182.      *      message = "Control Release Date Invalid"
  183.      * )
  184.      *
  185.      * @var \DateTime|null
  186.      *
  187.      * @ORM\Column(name="control_date_release", type="datetime", nullable=true)
  188.      */
  189.     private $controlDateRelease;
  190.     /**
  191.      * @Assert\NotBlank(
  192.      *    message = "Control Release Period not informed",
  193.      *    groups  = "lssonControlReleaseTypeFlex",
  194.      * )
  195.      *
  196.      * @var int|null
  197.      *
  198.      * @ORM\Column(name="control_release_period", type="integer", nullable=true)
  199.      */
  200.     private $controlReleasePeriod;
  201.     /**
  202.      * @var int|null
  203.      *
  204.      * @ORM\Column(name="control_close_period", type="integer", nullable=true)
  205.      */
  206.     private $controlClosePeriod;
  207.     /**
  208.      * @Assert\NotBlank(
  209.      *    message = "Control Time not informed"
  210.      * )
  211.      *
  212.      * @Assert\Choice(
  213.      *      choices = { LessonEnum::NO, LessonEnum::YES },
  214.      *      message = "Control Time Invalid"
  215.      * )
  216.      *
  217.      * @var int
  218.      *
  219.      * @ORM\Column(name="control_time", type="integer", nullable=false, options={"default"="0"})
  220.      */
  221.     private $controlTime LessonEnum::NO;
  222.     /**
  223.      * @EADAssert\TimeEAD(
  224.      *    message = "Control Time Stay Invalid"
  225.      * )
  226.      *
  227.      * @Assert\NotEqualTo(
  228.      *    value   = "00:00:00",
  229.      *    message = "Control Time Stay not informed"
  230.      * )
  231.      *
  232.      * @var Time|null
  233.      *
  234.      * @ORM\Column(name="control_time_stay", type="string", length=10, nullable=true)
  235.      */
  236.     private $controlTimeStay;
  237.     /**
  238.      * @Assert\NotBlank(
  239.      *    message = "Control View not informed"
  240.      * )
  241.      *
  242.      * @Assert\Choice(
  243.      *      choices = { LessonEnum::NO, LessonEnum::YES },
  244.      *      message = "Control View Invalid"
  245.      * )
  246.      *
  247.      * @var int
  248.      *
  249.      * @ORM\Column(name="control_view_limit", type="integer", nullable=false, options={"default"="0"})
  250.      */
  251.     private $controlViewLimit LessonEnum::NO;
  252.     /**
  253.      * @Assert\NotBlank(
  254.      *      message = "Control Lesson View Number not informed",
  255.      *      groups  = "lssonLimitedView"
  256.      * )
  257.      *
  258.      * @Assert\GreaterThanOrEqual(
  259.      *      value = 1,
  260.      *      message = "Control Lesson View Number invalid",
  261.      *      groups  = "lssonLimitedView"
  262.      * )
  263.      *
  264.      * @var int|null
  265.      *
  266.      * @ORM\Column(name="control_view_number", type="integer", nullable=true)
  267.      */
  268.     private $controlViewNumber;
  269.     /**
  270.      * @var int|null
  271.      *
  272.      * @ORM\Column(name="control_pause_number", type="integer", nullable=true)
  273.      */
  274.     private $controlPauseNumber;
  275.     /**
  276.      * @Assert\NotBlank(
  277.      *    message = "Control Show Document not informed"
  278.      * )
  279.      *
  280.      * @Assert\Choice(
  281.      *      choices = { LessonEnum::NO, LessonEnum::YES },
  282.      *      message = "Control Show Document Invalid"
  283.      * )
  284.      *
  285.      * @var int
  286.      *
  287.      * @ORM\Column(name="control_show_document", type="integer", nullable=false, options={"default"="0"})
  288.      */
  289.     private $controlShowDocument LessonEnum::NO;
  290.     /**
  291.      * @Assert\NotBlank(
  292.      *    message = "Show Live Chat not informed"
  293.      * )
  294.      *
  295.      * @Assert\Choice(
  296.      *      choices = { LessonEnum::NO, LessonEnum::YES },
  297.      *      message = "Show Live Chat Invalid"
  298.      * )
  299.      *
  300.      * @var int
  301.      *
  302.      * @ORM\Column(name="show_live_chat", type="integer", nullable=false, options={"default"="0"})
  303.      */
  304.     private $showLiveChat LessonEnum::NO;
  305.     /**
  306.      * @EADAssert\DateTimeEAD(
  307.      *      message = "Date Last Notify Invalid"
  308.      * )
  309.      *
  310.      * @var \DateTime|null
  311.      *
  312.      * @ORM\Column(name="date_last_notify", type="date", nullable=true)
  313.      */
  314.     private $dateLastNotify;
  315.     /**
  316.      * @Assert\Valid
  317.      *
  318.      * @var \Library
  319.      *
  320.      * @ORM\ManyToOne(targetEntity="Library")
  321.      * @ORM\JoinColumns({
  322.      *   @ORM\JoinColumn(name="library_id", referencedColumnName="id", nullable=true)
  323.      * })
  324.      */
  325.     private $library;
  326.     /**
  327.      * @Assert\NotBlank(
  328.      *    message = "Lesson Module not informed"
  329.      * )
  330.      *
  331.      * @Assert\Valid
  332.      *
  333.      * @var \LessonModule
  334.      *
  335.      * @ORM\ManyToOne(targetEntity="LessonModule")
  336.      * @ORM\JoinColumns({
  337.      *   @ORM\JoinColumn(name="lesson_module_id", referencedColumnName="id", nullable=false)
  338.      * })
  339.      */
  340.     private $lessonModule;
  341.     /**
  342.      * @Assert\NotBlank(
  343.      *    message = "Course not informed"
  344.      * )
  345.      *
  346.      * @Assert\Valid
  347.      *
  348.      * @var \Course
  349.      *
  350.      * @ORM\ManyToOne(targetEntity="Course")
  351.      * @ORM\JoinColumns({
  352.      *   @ORM\JoinColumn(name="course_id", referencedColumnName="id", nullable=false)
  353.      * })
  354.      */
  355.     private $course;
  356.     /**
  357.      * @Assert\NotBlank(
  358.      *    message = "User not informed"
  359.      * )
  360.      *
  361.      * @Assert\Valid
  362.      *
  363.      * @var \User
  364.      *
  365.      * @ORM\ManyToOne(targetEntity="User")
  366.      * @ORM\JoinColumns({
  367.      *   @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false)
  368.      * })
  369.      */
  370.     private $user;
  371.     /**
  372.      * @Assert\Valid
  373.      *
  374.      * @var \EADPlataforma\Entity\User
  375.      *
  376.      * @ORM\ManyToOne(targetEntity="User")
  377.      * @ORM\JoinColumns({
  378.      *   @ORM\JoinColumn(name="user_delete_id", referencedColumnName="id", nullable=true)
  379.      * })
  380.      */
  381.     private $userDelete;
  382.     /**
  383.      * @Assert\Choice(
  384.      *      choices = { 
  385.      *                      LessonEnum::INDIVIDUAL, 
  386.      *                      LessonEnum::CASCADE
  387.      *                },
  388.      *      message = "Type Delete Invalid"
  389.      * )
  390.      *
  391.      * @var int
  392.      *
  393.      * @ORM\Column(name="type_delete", type="integer", nullable=true)
  394.      */
  395.     private $typeDelete;
  396.     /**
  397.      * @EADAssert\DateTimeEAD(
  398.      *      message = "Date Delete Invalid"
  399.      * )
  400.      *
  401.      * @var \DateTime|null
  402.      *
  403.      * @ORM\Column(name="date_delete", type="datetime", nullable=true)
  404.      */
  405.     private $dateDelete;
  406.     public function getId(): ?int
  407.     {
  408.         return $this->id;
  409.     }
  410.     public function getOrder(): ?int
  411.     {
  412.         return $this->order;
  413.     }
  414.     public function setOrder(int $order): self
  415.     {
  416.         $this->order $order;
  417.         return $this;
  418.     }
  419.     public function getTitle(): ?string
  420.     {
  421.         return StringUtil::fromUnicode(StringUtil::encodeStringStatic($this->title));
  422.     }
  423.     public function setTitle(string $title): self
  424.     {
  425.         $this->title StringUtil::toUnicode($title);
  426.         return $this;
  427.     }
  428.     public function getDemonstration(): ?int
  429.     {
  430.         return $this->demonstration;
  431.     }
  432.     public function setDemonstration(int $demonstration): self
  433.     {
  434.         $this->demonstration $demonstration;
  435.         return $this;
  436.     }
  437.     public function getStatus(): ?int
  438.     {
  439.         return $this->status;
  440.     }
  441.     public function setStatus(int $status): self
  442.     {
  443.         $this->status $status;
  444.         return $this;
  445.     }
  446.     public function getType(): ?int
  447.     {
  448.         return $this->type;
  449.     }
  450.     public function setType(int $type): self
  451.     {
  452.         $this->type $type;
  453.         return $this;
  454.     }
  455.     public function getDescription(): ?string
  456.     {
  457.         return StringUtil::fromUnicode(StringUtil::encodeStringStatic($this->description));
  458.     }
  459.     public function setDescription(?string $description): self
  460.     {
  461.         $this->description StringUtil::toUnicode($description);
  462.         return $this;
  463.     }
  464.     public function getControlRequirement(): ?int
  465.     {
  466.         return $this->controlRequirement;
  467.     }
  468.     public function setControlRequirement(int $controlRequirement): self
  469.     {
  470.         $this->controlRequirement $controlRequirement;
  471.         return $this;
  472.     }
  473.     public function getControlReleaseType(): ?int
  474.     {
  475.         return $this->controlReleaseType;
  476.     }
  477.     public function setControlReleaseType(int $controlReleaseType): self
  478.     {
  479.         $this->controlReleaseType $controlReleaseType;
  480.         return $this;
  481.     }
  482.     public function getControlReleaseAfterType(): ?int
  483.     {
  484.         return $this->controlReleaseAfterType;
  485.     }
  486.     public function setControlReleaseAfterType(int $controlReleaseAfterType): self
  487.     {
  488.         $this->controlReleaseAfterType $controlReleaseAfterType;
  489.         return $this;
  490.     }
  491.     public function getControlDateRelease($dateFormat 'Y-m-d H:i:s')
  492.     {
  493.         if($this->controlDateRelease){
  494.             return $this->controlDateRelease->format($dateFormat);
  495.         }
  496.         return $this->controlDateRelease;
  497.     }
  498.     public function setControlDateRelease($controlDateRelease): self
  499.     {
  500.         if($controlDateRelease){
  501.             $controlDateRelease DateTime::createFromFormat('Y-m-d H:i:s'$controlDateRelease);
  502.         }
  503.         
  504.         $this->controlDateRelease $controlDateRelease;
  505.         return $this;
  506.     }
  507.     public function getControlReleasePeriod(): ?int
  508.     {
  509.         return $this->controlReleasePeriod;
  510.     }
  511.     public function setControlReleasePeriod(?int $controlReleasePeriod): self
  512.     {
  513.         $this->controlReleasePeriod $controlReleasePeriod;
  514.         return $this;
  515.     }
  516.     public function getControlClosePeriod(): ?int
  517.     {
  518.         return $this->controlClosePeriod;
  519.     }
  520.     public function setControlClosePeriod(?int $controlClosePeriod): self
  521.     {
  522.         $this->controlClosePeriod $controlClosePeriod;
  523.         return $this;
  524.     }
  525.     public function getControlTime(): ?int
  526.     {
  527.         return ($this->controlRequirement $this->controlTime LessonEnum::NO);
  528.     }
  529.     public function setControlTime(int $controlTime): self
  530.     {
  531.         $this->controlTime $controlTime;
  532.         return $this;
  533.     }
  534.     public function getControlTimeStay(): ?string
  535.     {
  536.         return $this->controlTimeStay;
  537.     }
  538.     public function setControlTimeStay(?string $controlTimeStay): self
  539.     {
  540.         $this->controlTimeStay $controlTimeStay;
  541.         return $this;
  542.     }
  543.     public function getControlViewLimit(): ?int
  544.     {
  545.         return $this->controlViewLimit;
  546.     }
  547.     public function setControlViewLimit(int $controlViewLimit): self
  548.     {
  549.         $this->controlViewLimit $controlViewLimit;
  550.         return $this;
  551.     }
  552.     public function getControlViewNumber(): ?int
  553.     {
  554.         return $this->controlViewNumber;
  555.     }
  556.     public function setControlViewNumber(?int $controlViewNumber): self
  557.     {
  558.         $this->controlViewNumber $controlViewNumber;
  559.         return $this;
  560.     }
  561.     public function getControlPauseNumber(): ?int
  562.     {
  563.         return $this->controlPauseNumber;
  564.     }
  565.     public function setControlPauseNumber(?int $controlPauseNumber): self
  566.     {
  567.         $this->controlPauseNumber $controlPauseNumber;
  568.         return $this;
  569.     }
  570.     public function getControlShowDocument(): ?int
  571.     {
  572.         return $this->controlShowDocument;
  573.     }
  574.     public function setControlShowDocument(int $controlShowDocument): self
  575.     {
  576.         $this->controlShowDocument $controlShowDocument;
  577.         return $this;
  578.     }
  579.     public function getShowLiveChat(): ?int
  580.     {
  581.         return $this->showLiveChat;
  582.     }
  583.     public function setShowLiveChat(int $showLiveChat): self
  584.     {
  585.         $this->showLiveChat $showLiveChat;
  586.         return $this;
  587.     }
  588.     public function getDateLastNotify($dateFormat 'Y-m-d H:i:s')
  589.     {
  590.         if($this->dateLastNotify){
  591.             return $this->dateLastNotify->format($dateFormat);
  592.         }
  593.         return $this->dateLastNotify;
  594.     }
  595.     public function setDateLastNotify($dateLastNotify): self
  596.     {
  597.         if(!empty($dateLastNotify)){
  598.             $dateLastNotify DateTime::createFromFormat('Y-m-d H:i:s'$dateLastNotify);
  599.         }
  600.         
  601.         $this->dateLastNotify $dateLastNotify;
  602.         return $this;
  603.     }
  604.     public function getLibrary(): ?Library
  605.     {
  606.         return $this->library;
  607.     }
  608.     public function setLibrary(?Library $library): self
  609.     {
  610.         $this->library $library;
  611.         return $this;
  612.     }
  613.     public function getLessonModule(): ?LessonModule
  614.     {
  615.         return $this->lessonModule;
  616.     }
  617.     public function setLessonModule(?LessonModule $lessonModule): self
  618.     {
  619.         $this->lessonModule $lessonModule;
  620.         return $this;
  621.     }
  622.     public function getCourse(): ?Course
  623.     {
  624.         return $this->course;
  625.     }
  626.     public function setCourse(?Course $course): self
  627.     {
  628.         $this->course $course;
  629.         return $this;
  630.     }
  631.     public function getUser(): ?User
  632.     {
  633.         return $this->user;
  634.     }
  635.     public function setUser(?User $user): self
  636.     {
  637.         $this->user $user;
  638.         return $this;
  639.     }
  640.     public function getUserDelete(): ?User
  641.     {
  642.         return $this->userDelete;
  643.     }
  644.     public function setUserDelete(?User $userDelete): self
  645.     {
  646.         $this->userDelete $userDelete;
  647.         return $this;
  648.     }
  649.     public function getDateDelete($dateFormat 'Y-m-d H:i:s')
  650.     {
  651.         if($this->dateDelete){
  652.             return $this->dateDelete->format($dateFormat);
  653.         }
  654.         return $this->dateDelete;
  655.     }
  656.     public function setDateDelete($dateDelete): self
  657.     {
  658.         if(!empty($dateDelete)){
  659.             $dateDelete DateTime::createFromFormat('Y-m-d H:i:s'$dateDelete);
  660.         }
  661.         
  662.         $this->dateDelete $dateDelete;
  663.         return $this;
  664.     }
  665.     public function individual(): self
  666.     {
  667.         $this->typeDelete LessonEnum::INDIVIDUAL;
  668.         return $this;
  669.     }
  670.     public function cascade(): self
  671.     {
  672.         $this->typeDelete LessonEnum::CASCADE;
  673.         return $this;
  674.     }
  675.     public function isLive(): bool
  676.     {
  677.         return ($this->deleted == LessonEnum::ITEM_NO_DELETED);
  678.     }
  679.     public function isOnTrash(): bool
  680.     {
  681.         return ($this->deleted == LessonEnum::ITEM_ON_TRASH);
  682.     }
  683.     public function isDeleted(): bool
  684.     {
  685.         return ($this->deleted == LessonEnum::ITEM_DELETED);
  686.     }
  687.     public function restore(): self
  688.     {
  689.         $this->deleted LessonEnum::ITEM_NO_DELETED;
  690.         return $this;
  691.     }
  692.     public function trash(): self
  693.     {
  694.         $this->deleted LessonEnum::ITEM_ON_TRASH;
  695.         return $this;
  696.     }
  697.     public function delete(): self
  698.     {
  699.         $this->deleted LessonEnum::ITEM_DELETED;
  700.         return $this;
  701.     }
  702.     public function isAble(): bool
  703.     {
  704.         if(!$this->course){
  705.             return false;
  706.         }
  707.         if(!$this->lessonModule){
  708.             return false;
  709.         }
  710.         if(!$this->getCourse()->isLive()){
  711.             return false;
  712.         }
  713.         if(!$this->getLessonModule()->isLive()){
  714.             return false;
  715.         }
  716.         if(!$this->isLive()){
  717.             return false;
  718.         }
  719.         if(!$this->getCourse()->isPublic()){
  720.             return false;
  721.         }
  722.         if(!$this->getLessonModule()->isPublic()){
  723.             return false;
  724.         }
  725.         if(!$this->isPublic()){
  726.             return false;
  727.         }
  728.         return true;
  729.     }
  730.     public function isPublic(): bool
  731.     {
  732.         return ($this->status == LessonEnum::PUBLISHED);
  733.     }
  734.     public function toReturn(){
  735.         $data = [
  736.             "id" => $this->id,
  737.             "deleted" => $this->deleted,
  738.             "order" => $this->order,
  739.             "title" => $this->getTitle(),
  740.             "demonstration" => $this->demonstration,
  741.             "status" => $this->status,
  742.             "type" => $this->type,
  743.             "description" => $this->getDescription(),
  744.             "controlRequirement" => $this->controlRequirement,
  745.             "controlReleaseType" => $this->controlReleaseType,
  746.             "controlReleaseAfterType" => $this->controlReleaseAfterType,
  747.             "controlDateRelease" => $this->getControlDateRelease(),
  748.             "controlReleasePeriod" => $this->controlReleasePeriod,
  749.             "controlClosePeriod" => $this->controlClosePeriod,
  750.             "controlTime" => (
  751.                 $this->controlRequirement $this->controlTime LessonEnum::NO
  752.             ),
  753.             "controlTimeStay" => $this->getControlTimeStay(),
  754.             "controlViewLimit" => $this->controlViewLimit,
  755.             "controlViewNumber" => $this->controlViewNumber,
  756.             "controlPauseNumber" => $this->controlPauseNumber,
  757.             "controlShowDocument" => $this->controlShowDocument,
  758.             "showLiveChat" => $this->showLiveChat,
  759.             "dateLastNotify" => $this->getDateLastNotify(),
  760.             "library" => ( $this->library $this->library->getId() : null ),
  761.             "lessonModule" => ( $this->lessonModule $this->lessonModule->getId() : null ),
  762.             "course" => ( $this->course $this->course->getId() : null ),
  763.             "user" => ( $this->user $this->user->getId() : null ),
  764.             "userIsLive" => ( $this->user $this->user->isLive() : false ),
  765.             "userName" => ( $this->user $this->user->getName() : null ),
  766.             "userPhoto" => (
  767.                 $this->user 
  768.                     FileService::getFilePathComplete(
  769.                         $this->user->getPhoto(), 
  770.                         LessonEnum::PATH_PROFILES
  771.                         true
  772.                         true
  773.                     )
  774.                 : null 
  775.             ),
  776.             "userUsername" => ( $this->user $this->user->getUsername() : null ),
  777.             "userDelete" => ( $this->userDelete $this->userDelete->getId() : null ),
  778.             "typeDelete" => $this->typeDelete,
  779.             "dateDelete" => $this->getDateDelete()
  780.         ];
  781.         return $data;
  782.     }
  783. }