src/Entity/Lesson.php line 439

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