src/Entity/POI.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\POIRepository;
  4. use DateTime;
  5. use Doctrine\Common\Collections\ArrayCollection;
  6. use Doctrine\Common\Collections\Collection;
  7. use Doctrine\DBAL\Types\Types;
  8. use Doctrine\ORM\Mapping as ORM;
  9. use Symfony\Component\Validator\Constraints as Assert;
  10. use Vich\UploaderBundle\Mapping\Annotation as Vich;
  11. use Symfony\Component\HttpFoundation\File\File;
  12. use JMS\Serializer\Annotation as Serializer;
  13. use JMS\Serializer\Annotation\MaxDepth;
  14. #[ORM\Entity(repositoryClassPOIRepository::class)]
  15. #[ORM\HasLifecycleCallbacks]
  16. class POI
  17. {
  18.     #[ORM\Id]
  19.     #[ORM\GeneratedValue]
  20.     #[ORM\Column]
  21.     #[Serializer\Groups(["category","poi","tour"])]
  22.     private ?int $id null;
  23.     #[ORM\Column(length512nullabletrue)]
  24.     #[Serializer\Groups(["poi"])]
  25.     #[Serializer\SerializedName("previewImageUrl")]
  26.     private ?string $preview_image_url null;
  27.     #[ORM\Column(typeTypes::DECIMALprecision30scale24nullabletrue)]
  28.     #[Serializer\Groups(["poi"])]
  29.     private ?string $longitude null;
  30.     #[ORM\Column(typeTypes::DECIMALprecision30scale24nullabletrue)]
  31.     #[Serializer\Groups(["poi"])]
  32.     private ?string $latidtude null;
  33.     #[ORM\Column(nullabletrue)]
  34.     #[Serializer\Groups(["poi"])]
  35.     #[Serializer\SerializedName("visitedCompletionDistance")]
  36.     private ?int $visited_completion_distance null;
  37.     #[ORM\Column(nullabletrue)]
  38.     #[Serializer\Groups(["poi"])]
  39.     #[Serializer\SerializedName("activationDistance")]
  40.     private ?int $activation_distance null;
  41.     #[ORM\Column(nullabletrue)]
  42.     #[Serializer\Groups(["poi"])]
  43.     #[Serializer\SerializedName("notificationDistance")]
  44.     private ?int $notification_distance null;
  45.     #[ORM\Column(length1024nullabletrue)]
  46.     #[Serializer\Groups(["poi"])]
  47.     #[Serializer\SerializedName("notificationText")]
  48.     private ?string $notification_text null;
  49.     #[ORM\Column(length2048nullabletrue)]
  50.     #[Serializer\Groups(["poi"])]
  51.     #[Serializer\SerializedName("guideTextEntry")]
  52.     private ?string $guide_text_entry null;
  53.     #[ORM\Column(length255nullabletrue)]
  54.     #[Serializer\Groups(["poi"])]
  55.     #[Serializer\SerializedName("audioGuideTextEntryUrl")]
  56.     private ?string $audio_guide_text_entry_url null;
  57.     #[ORM\Column(length2048nullabletrue)]
  58.     #[Serializer\Groups(["poi"])]
  59.     #[Serializer\SerializedName("guideTextExit")]
  60.     private ?string $guide_text_exit null;
  61.     #[ORM\Column(length255nullabletrue)]
  62.     #[Serializer\Groups(["poi"])]
  63.     #[Serializer\SerializedName("audioGuideTextExitUrl")]
  64.     private ?string $audio_guide_text_exit_url null;
  65.     #[ORM\Column(length255nullabletrue)]
  66.     #[Serializer\Groups(["poi"])]
  67.     #[Serializer\SerializedName("custom3DModelUrl")]
  68.     private ?string $custom_3D_model_url null;
  69.     #[ORM\Column(typeTypes::ARRAY, nullabletrue)]
  70.     #[Serializer\Groups(["poi"])]
  71.     #[Serializer\SerializedName("completionCondition")]
  72.     private array $completion_condition = [];
  73.     //#[ORM\ManyToMany(targetEntity: Category::class, mappedBy: 'pois')]
  74.     //private Collection $categories;
  75.     #[ORM\OneToMany(targetEntityCategoryPoi::class, mappedBy'poi',cascade:["remove"])]
  76.     #[MaxDepth(1)]
  77.     private Collection $categories;
  78.     
  79.     #[ORM\OneToMany(targetEntityTourPoi::class, mappedBy'poi',cascade:['persist''remove'])]
  80.     #[MaxDepth(1)]
  81.     private Collection $tours;
  82.     #[ORM\ManyToMany(targetEntityPOIContent::class, mappedBy'pois',cascade:['persist''remove'],orphanRemovaltrue)]
  83.     #[MaxDepth(2)]
  84.     #[Serializer\Groups(["poi"])]
  85.     private Collection $poicontents;
  86.     #[ORM\OneToMany(mappedBy'poi'targetEntityQuizEntry::class,cascade:['persist''remove'])]
  87.     #[MaxDepth(3)]
  88.     #[Serializer\Groups(["poi"])]
  89.     private Collection $quizentries;
  90.     #[ORM\OneToOne(cascade: ['persist''remove'])]
  91.     #[MaxDepth(1)]
  92.     #[Serializer\Groups(["poi"])]
  93.     private ?AudioTextBlock $title null;
  94.     #[ORM\OneToOne(cascade: ['persist''remove'])]
  95.     #[MaxDepth(1)]
  96.     #[Serializer\Groups(["poi"])]
  97.     private ?AudioTextBlock $description null;
  98.     #[ORM\OneToOne(cascade: ['persist''remove'])]
  99.     #[MaxDepth(1)]
  100.     #[Serializer\Groups(["poi"])]
  101.     #[Serializer\SerializedName("shortDescription")]
  102.     private ?AudioTextBlock $short_description null;
  103.     #[ORM\ManyToOne(cascade:["persist"])]
  104.     #[MaxDepth(1)]
  105.     #[Serializer\Groups(["poi"])]
  106.     #[Serializer\SerializedName("treasureName")]
  107.     private ?AudioTextBlock $treasure_name null;
  108.     #[ORM\ManyToMany(targetEntityAudioTextBlock::class,cascade: ['persist''remove'])]
  109.     #[ORM\JoinTable(name:"poiguideenters")]
  110.     #[MaxDepth(1)]
  111.     #[Serializer\Groups(["poi"])]
  112.     #[Serializer\SerializedName("guideTextBlocksEnter")]
  113.     private Collection $guide_text_blocks_enter;
  114.     #[ORM\ManyToMany(targetEntityAudioTextBlock::class,cascade: ['persist''remove'])]
  115.     #[ORM\JoinTable(name:"poiguideexits")]
  116.     #[MaxDepth(1)]
  117.     #[Serializer\Groups(["poi"])]
  118.     #[Serializer\SerializedName("guideTextBlocksExit")]
  119.     private Collection $guide_text_blocks_exit;
  120.     #[ORM\ManyToMany(targetEntityAudioTextBlock::class,cascade: ['persist''remove'])]
  121.     #[ORM\JoinTable(name:"poiguidenotificationpickups")]
  122.     #[MaxDepth(1)]
  123.     #[Serializer\Groups(["poi"])]
  124.     #[Serializer\SerializedName("guideNotificationPickup")]
  125.     private Collection $guide_notification_pickup;
  126.     #[ORM\ManyToMany(targetEntityAudioTextBlock::class,cascade: ['persist''remove'])]
  127.     #[ORM\JoinTable(name:"poiguidenotifications")]
  128.     #[MaxDepth(1)]
  129.     #[Serializer\Groups(["poi"])]
  130.     #[Serializer\SerializedName("guideNotificationTexts")]
  131.     private Collection $guide_notification_texts;
  132.     #[ORM\Column(length255nullabletrue)]
  133.     #[Serializer\Groups(["poi"])]
  134.     private ?string $titlevalue null;
  135.     #[ORM\Column(nullabletrue)]
  136.     #[Serializer\Groups(["poi"])]
  137.     #[Serializer\SerializedName("modelOffsetX")]
  138.     private ?int $model_offset_x null;
  139.     #[ORM\Column(nullabletrue)]
  140.     #[Serializer\Groups(["poi"])]
  141.     #[Serializer\SerializedName("modelOffsetY")]
  142.     private ?int $model_offset_y null;
  143.     #[ORM\Column(nullabletrue)]
  144.     #[Serializer\Groups(["poi"])]
  145.     #[Serializer\SerializedName("modelOffsetZ")]
  146.     private ?int $model_offset_z null;
  147.     #[ORM\Column(nullabletrue)]
  148.     #[Serializer\Groups(["poi"])]
  149.     private ?bool $live null;
  150.     #[ORM\Column(typeTypes::DATETIME_MUTABLEnullabletrue)]
  151.     #[Serializer\Groups(["poi"])]
  152.     #[Serializer\SerializedName("updatedAt")]
  153.     private ?DateTime $updated_at null;
  154.     #[ORM\Column(length255nullabletrue)]
  155.     #[Serializer\Groups(["poi"])]
  156.     #[Serializer\SerializedName("custom3DAndroidModelUrl")]
  157.     private ?string $custom_3D_android_model_url null;
  158.     #[ORM\Column(length255nullabletrue)]
  159.     #[Serializer\Groups(["poi"])]
  160.     #[Serializer\SerializedName("custom3DIosModelUrl")]
  161.     private ?string $custom_3D_ios_model_url null;
  162.     #[ORM\Column(length255nullabletrue)]
  163.     #[Serializer\Groups(["poi"])]
  164.     #[Serializer\SerializedName("videoUrl")]
  165.     #[Serializer\Type("string")]
  166.     private ?string $video_url null;
  167.     #[Serializer\Groups(["poi"])]
  168.     #[Serializer\VirtualProperty()]
  169.     #[Serializer\SerializedName("categories")]
  170.     public function getCategoryIDs(){
  171.         $categories $this->getCategories();
  172.         $categoryIds = [];
  173.         foreach ($categories as $category) {
  174.             $categoryIds[]=$category->getCategory()->getId();
  175.         }
  176.         return $categoryIds ;
  177.     }
  178.     #[Serializer\Groups(["poi"])]
  179.     #[Serializer\VirtualProperty()]
  180.     #[Serializer\SerializedName("tours")]
  181.     public function getTourIDs(){
  182.         $tours $this->getTours();
  183.         $tourIDs = [];
  184.         foreach ($tours as $tour) {
  185.             $tourIDs[]=$tour->getTour()->getId();
  186.         }
  187.         return $tourIDs ;
  188.     }
  189.     private ?int $temporaryOrderValue;
  190.     public function __construct()
  191.     {
  192.         $this->categories = new ArrayCollection();
  193.         $this->tours = new ArrayCollection();
  194.         $this->poicontents = new ArrayCollection();
  195.         $this->quizentries = new ArrayCollection();
  196.        // $this->fillAudioTextblocks();
  197.         $this->guide_text_blocks_enter = new ArrayCollection();
  198.         $this->guide_text_blocks_exit = new ArrayCollection();
  199.         $this->guide_notification_texts = new ArrayCollection();
  200.         $this->guide_notification_pickup= new ArrayCollection();
  201.     }
  202. /*
  203.     public function fillAudioTextblocks(){
  204.         $titleTextblock = new AudioTextBlock();
  205.         $this->setTitle($titleTextblock);
  206.         $descriptionTextblock = new AudioTextBlock();
  207.         $this->setDescription([$descriptionTextblock]);
  208.         $shortDescriptionBlock = new AudioTextBlock();
  209.         $this->setShortDescription([$shortDescriptionBlock]);
  210.     }
  211. */
  212.     public function __toString() {
  213.         
  214.         return $this->title->getText();
  215.     }
  216.     public function getId(): ?int
  217.     {
  218.         return $this->id;
  219.     }
  220.     
  221.     public function getTemporaryOrderValue(): ?string
  222.     {
  223.         return $this->temporaryOrderValue;
  224.     }
  225.     public function setTemporaryOrderValue(?int $temporaryOrderValue): self
  226.     {
  227.         $this->temporaryOrderValue $temporaryOrderValue;
  228.         return $this;
  229.     }
  230.     public function getPreviewImageUrl(): ?string
  231.     {
  232.         return $this->preview_image_url;
  233.     }
  234.     public function setPreviewImageUrl(?string $preview_image_url): self
  235.     {
  236.         $this->preview_image_url $preview_image_url;
  237.         return $this;
  238.     }
  239.  
  240.     public function getTitle(): ?AudioTextBlock
  241.     {
  242.         return $this->title;
  243.        
  244.     }
  245.     public function setTitle(?AudioTextBlock $title): self
  246.     {
  247.         $this->title $title;
  248.     
  249.         return $this;
  250.     }
  251.     public function getDescription(): ?AudioTextBlock
  252.     {
  253.         return $this->description;
  254.     }
  255.     public function setDescription(?AudioTextBlock $description): self
  256.     {
  257.         $this->description $description;
  258.         return $this;
  259.     }
  260.  
  261.     public function getLongitude(): ?string
  262.     {
  263.         return $this->longitude;
  264.     }
  265.     public function setLongitude(?string $longitude): self
  266.     {
  267.         $this->longitude $longitude;
  268.         return $this;
  269.     }
  270.     public function getLatidtude(): ?string
  271.     {
  272.         return $this->latidtude;
  273.     }
  274.     public function setLatidtude(?string $latidtude): self
  275.     {
  276.         $this->latidtude $latidtude;
  277.         return $this;
  278.     }
  279.     public function getVisitedCompletionDistance(): ?int
  280.     {
  281.         return $this->visited_completion_distance;
  282.     }
  283.     public function setVisitedCompletionDistance(?int $visited_completion_distance): self
  284.     {
  285.         $this->visited_completion_distance $visited_completion_distance;
  286.         return $this;
  287.     }
  288.     public function getActivationDistance(): ?int
  289.     {
  290.         return $this->activation_distance;
  291.     }
  292.     public function setActivationDistance(?int $activation_distance): self
  293.     {
  294.         $this->activation_distance $activation_distance;
  295.         return $this;
  296.     }
  297.     public function getNotificationDistance(): ?int
  298.     {
  299.         return $this->notification_distance;
  300.     }
  301.     public function setNotificationDistance(int $notification_distance): self
  302.     {
  303.         $this->notification_distance $notification_distance;
  304.         return $this;
  305.     }
  306.     public function getNotificationText(): ?string
  307.     {
  308.         return $this->notification_text;
  309.     }
  310.     public function setNotificationText(?string $notification_text): self
  311.     {
  312.         $this->notification_text $notification_text;
  313.         return $this;
  314.     }
  315.     public function getGuideTextEntry(): ?string
  316.     {
  317.         return $this->guide_text_entry;
  318.     }
  319.     public function setGuideTextEntry(?string $guide_text_entry): self
  320.     {
  321.         $this->guide_text_entry $guide_text_entry;
  322.         return $this;
  323.     }
  324.     public function getAudioGuideTextEntryUrl(): ?string
  325.     {
  326.         return $this->audio_guide_text_entry_url;
  327.     }
  328.     public function setAudioGuideTextEntryUrl(?string $audio_guide_text_entry_url): self
  329.     {
  330.         $this->audio_guide_text_entry_url $audio_guide_text_entry_url;
  331.         return $this;
  332.     }
  333.     public function getGuideTextExit(): ?string
  334.     {
  335.         return $this->guide_text_exit;
  336.     }
  337.     public function setGuideTextExit(?string $guide_text_exit): self
  338.     {
  339.         $this->guide_text_exit $guide_text_exit;
  340.         return $this;
  341.     }
  342.     public function getAudioGuideTextExitUrl(): ?string
  343.     {
  344.         return $this->audio_guide_text_exit_url;
  345.     }
  346.     public function setAudioGuideTextExitUrl(string $audio_guide_text_exit_url): self
  347.     {
  348.         $this->audio_guide_text_exit_url $audio_guide_text_exit_url;
  349.         return $this;
  350.     }
  351.     public function getCustom3DModelUrl(): ?string
  352.     {
  353.         return $this->custom_3D_model_url;
  354.     }
  355.     public function setCustom3DModelUrl(?string $custom_3D_model_url): self
  356.     {
  357.         $this->custom_3D_model_url $custom_3D_model_url;
  358.         return $this;
  359.     }
  360.     public function getCompletionCondition(): array
  361.     {
  362.         return $this->completion_condition;
  363.     }
  364.     public function setCompletionCondition(?array $completion_condition): self
  365.     {
  366.         $this->completion_condition $completion_condition;
  367.         return $this;
  368.     }
  369.     public function getCategories(): Collection
  370.     {
  371.         return $this->categories;
  372.     }
  373.     public function addCategory(Category $category): self
  374.     {
  375.         if (!$this->categories->contains($category)) {
  376.             $this->categories->add($category);
  377.         }
  378.         return $this;
  379.     }
  380.     public function removeCategoryPoi(CategoryPoi $CategoryPoi): self
  381.     {
  382.         ;
  383.         if ($this->categories->removeElement($CategoryPoi)) {
  384.             $CategoryPoi->setPoi(null);
  385.          // dd("remove");
  386.         }
  387.         return $this;
  388.     }
  389.     public function removeTourPoi(TourPoi $tourPoi): self
  390.     {
  391.         
  392.         if ($this->tours->removeElement($tourPoi)) {
  393.             $tourPoi->setPoi(null);
  394.         }
  395.         return $this;
  396.     }
  397.     public function removeCategory(Category $category): self
  398.     {
  399.         $this->categories->removeElement($category);
  400.         return $this;
  401.     }
  402.     
  403.     /**
  404.      * @return Collection<int, Tour>
  405.      */
  406.     public function getTours(): Collection
  407.     {
  408.         return $this->tours;
  409.     }
  410.     public function addTour(Tour $tour): self
  411.     {
  412.         dd("test");
  413.         if (!$this->tours->contains($tour)) {
  414.             $this->tours->add($tour);
  415.         }
  416.         return $this;
  417.     }
  418.     public function removeTour(Tour $tour): self
  419.     {
  420.         $this->tours->removeElement($tour);
  421.         return $this;
  422.     }
  423.   
  424.     /**
  425.      * @return Collection<int, POIContent>
  426.      */
  427.     public function getPOIContents(): Collection
  428.     {
  429.         return $this->poicontents;
  430.     }
  431.     public function addPOIContent(POIContent $pOIContent): self
  432.     {
  433.         if (!$this->poicontents->contains($pOIContent)) {
  434.             $this->poicontents->add($pOIContent);
  435.             $pOIContent->addPoi($this);
  436.         }
  437.         return $this;
  438.     }
  439.     public function removePOIContent(POIContent $pOIContent): self
  440.     {
  441.         if ($this->poicontents->removeElement($pOIContent)) {
  442.             $pOIContent->removePoi($this);
  443.         }
  444.         return $this;
  445.     }
  446.     /**
  447.      * @return Collection<int, QuizEntry>
  448.      */
  449.     public function getQuizentries(): Collection
  450.     {
  451.         return $this->quizentries;
  452.     }
  453.     public function addQuizentry(QuizEntry $quizentry): self
  454.     {
  455.         if (!$this->quizentries->contains($quizentry)) {
  456.             $this->quizentries->add($quizentry);
  457.             $quizentry->setPoi($this);
  458.         }
  459.         return $this;
  460.     }
  461.     public function removeQuizentry(QuizEntry $quizentry): self
  462.     {
  463.         if ($this->quizentries->removeElement($quizentry)) {
  464.             // set the owning side to null (unless already changed)
  465.             if ($quizentry->getPoi() === $this) {
  466.                 $quizentry->setPoi(null);
  467.             }
  468.         }
  469.         return $this;
  470.     }
  471. /*
  472.     public function addTitle(AudioTextBlock $title): self
  473.     {
  474.         if (!$this->title->contains($title)) {
  475.             $this->title->add($title);
  476.             $title->setPOI($this);
  477.         }
  478.         return $this;
  479.     }
  480.     public function removeTitle(AudioTextBlock $title): self
  481.     {
  482.         if ($this->title->removeElement($title)) {
  483.             // set the owning side to null (unless already changed)
  484.             if ($title->getPOI() === $this) {
  485.                 $title->setPOI(null);
  486.             }
  487.         }
  488.         return $this;
  489.     }
  490.     */
  491. public function getShortDescription(): ?AudioTextBlock
  492. {
  493.     return $this->short_description;
  494. }
  495. public function setShortDescription(?AudioTextBlock $short_description): self
  496. {
  497.     $this->short_description $short_description;
  498.     return $this;
  499. }
  500. public function getTreasureName(): ?AudioTextBlock
  501. {
  502.     return $this->treasure_name;
  503. }
  504. public function setTreasureName(?AudioTextBlock $treasure_name): self
  505. {
  506.     $this->treasure_name $treasure_name;
  507.     return $this;
  508. }
  509. /**
  510.  * @return Collection<int, AudioTextBlock>
  511.  */
  512. public function getGuideTextBlocksEnter(): Collection
  513. {
  514.     return $this->guide_text_blocks_enter;
  515. }
  516. public function addGuideTextBlocksEnter(AudioTextBlock $guideTextBlocksEnter): self
  517. {
  518.     if (!$this->guide_text_blocks_enter->contains($guideTextBlocksEnter)) {
  519.         $this->guide_text_blocks_enter->add($guideTextBlocksEnter);
  520.     }
  521.     return $this;
  522. }
  523. public function removeGuideTextBlocksEnter(AudioTextBlock $guideTextBlocksEnter): self
  524. {
  525.     $this->guide_text_blocks_enter->removeElement($guideTextBlocksEnter);
  526.     return $this;
  527. }
  528. /**
  529.  * @return Collection<int, AudioTextBlock>
  530.  */
  531. public function getGuideTextBlocksExit(): Collection
  532. {
  533.     return $this->guide_text_blocks_exit;
  534. }
  535. public function addGuideTextBlocksExit(AudioTextBlock $guideTextBlocksExit): self
  536. {
  537.     if (!$this->guide_text_blocks_exit->contains($guideTextBlocksExit)) {
  538.         $this->guide_text_blocks_exit->add($guideTextBlocksExit);
  539.     }
  540.     return $this;
  541. }
  542. public function removeGuideTextBlocksExit(AudioTextBlock $guideTextBlocksExit): self
  543. {
  544.     $this->guide_text_blocks_exit->removeElement($guideTextBlocksExit);
  545.     return $this;
  546. }
  547. /**
  548.  * @return Collection<int, AudioTextBlock>
  549.  */
  550. public function getGuideNotificationPickup(): Collection
  551. {
  552.     return $this->guide_notification_pickup;
  553. }
  554. public function addGuideNotificationPickup(AudioTextBlock $guideNotificationPickup): self
  555. {
  556.     if (!$this->guide_notification_pickup->contains($guideNotificationPickup)) {
  557.         $this->guide_notification_pickup->add($guideNotificationPickup);
  558.     }
  559.     return $this;
  560. }
  561. public function removeGuideNotificationPickup(AudioTextBlock $guideNotificationPickup): self
  562. {
  563.     $this->guide_notification_pickup->removeElement($guideNotificationPickup);
  564.     return $this;
  565. }
  566. /**
  567.  * @return Collection<int, AudioTextBlock>
  568.  */
  569. public function getGuideNotificationTexts(): Collection
  570. {
  571.     return $this->guide_notification_texts;
  572. }
  573. public function addGuideNotificationText(AudioTextBlock $guideNotificationText): self
  574. {
  575.     if (!$this->guide_notification_texts->contains($guideNotificationText)) {
  576.         $this->guide_notification_texts->add($guideNotificationText);
  577.     }
  578.     return $this;
  579. }
  580. public function removeGuideNotificationText(AudioTextBlock $guideNotificationText): self
  581. {
  582.     $this->guide_notification_texts->removeElement($guideNotificationText);
  583.     return $this;
  584. }
  585. public function getTitlevalue(): ?string
  586. {
  587.     return $this->titlevalue;
  588. }
  589. public function setTitlevalue(?string $titlevalue): self
  590. {
  591.     $this->titlevalue $titlevalue;
  592.     return $this;
  593. }
  594. public function getModelOffsetX(): ?int
  595. {
  596.     return $this->model_offset_x;
  597. }
  598. public function setModelOffsetX(?int $model_offset_x): self
  599. {
  600.     $this->model_offset_x $model_offset_x;
  601.     return $this;
  602. }
  603. public function getModelOffsetY(): ?int
  604. {
  605.     return $this->model_offset_y;
  606. }
  607. public function setModelOffsetY(?int $model_offset_y): self
  608. {
  609.     $this->model_offset_y $model_offset_y;
  610.     return $this;
  611. }
  612. public function getModelOffsetZ(): ?int
  613. {
  614.     return $this->model_offset_z;
  615. }
  616. public function setModelOffsetZ(?int $model_offset_z): self
  617. {
  618.     $this->model_offset_z $model_offset_z;
  619.     return $this;
  620. }
  621. public function isLive(): ?bool
  622. {
  623.     return $this->live;
  624. }
  625. public function setLive(?bool $live): self
  626. {
  627.     $this->live $live;
  628.     return $this;
  629. }
  630. public function getUpdatedAt(): ?\DateTimeInterface
  631. {
  632.     return $this->updated_at;
  633. }
  634. public function setUpdatedAt(?\DateTimeInterface $updated_at): self
  635. {
  636.     $this->updated_at $updated_at;
  637.     return $this;
  638. }
  639. #[ORM\PrePersist]
  640. #[ORM\PreUpdate]
  641. public function updatedTimestamps()
  642. {
  643.     $this->setUpdatedAt(new \DateTime('now'));
  644. }
  645. public function getCustom3DAndroidModelUrl(): ?string
  646. {
  647.     return $this->custom_3D_android_model_url;
  648. }
  649. public function setCustom3DAndroidModelUrl(?string $custom_3D_android_model_url): self
  650. {
  651.     $this->custom_3D_android_model_url $custom_3D_android_model_url;
  652.     return $this;
  653. }
  654. public function getCustom3DIosModelUrl(): ?string
  655. {
  656.     return $this->custom_3D_ios_model_url;
  657. }
  658. public function setCustom3DIosModelUrl(?string $custom_3D_ios_model_url): self
  659. {
  660.     $this->custom_3D_ios_model_url $custom_3D_ios_model_url;
  661.     return $this;
  662. }
  663. public function getVideoUrl(): ?string
  664. {
  665.     return $this->video_url;
  666. }
  667. public function setVideoUrl(?string $video_url): self
  668. {
  669.     $this->video_url $video_url;
  670.     return $this;
  671. }
  672. }