src/Entity/Exercise.php line 303

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use Doctrine\Common\Collections\ArrayCollection;
  4. use Doctrine\Common\Collections\Collection;
  5. use Doctrine\ORM\Mapping as ORM;
  6. use Symfony\Component\HttpFoundation\File\File;
  7. use Vich\UploaderBundle\Mapping\Annotation as Vich;
  8. use Knp\DoctrineBehaviors\Contract\Entity\TranslatableInterface;
  9. use Knp\DoctrineBehaviors\Model\Translatable\TranslatableTrait;
  10. use Symfony\Component\Validator\Constraints as Assert;
  11. /**
  12.  * @ORM\Entity(repositoryClass="App\Repository\ExerciseRepository")
  13.  * @Vich\Uploadable
  14.  */
  15. class Exercise implements TranslatableInterface
  16. {
  17.   use TranslatableTrait;
  18.   const DIFICULTY_TYPE_HIGH "HIGH";
  19.   const DIFICULTY_TYPE_MEDIUM "MEDIUM";
  20.   const DIFICULTY_TYPE_LOW "LOW";
  21.   /**
  22.    * @ORM\Id()
  23.    * @ORM\GeneratedValue()
  24.    * @ORM\Column(type="integer")
  25.    */
  26.   private $id;
  27.   /**
  28.    * @ORM\ManyToOne(targetEntity="App\Entity\Category", inversedBy="exercises")
  29.    * @ORM\JoinColumn(nullable=false)
  30.    */
  31.   private $category;
  32.   /**
  33.    * @ORM\ManyToMany(targetEntity="App\Entity\Material", inversedBy="exercises")
  34.    * @ORM\JoinColumn(nullable=false)
  35.    */
  36.   private $materials;
  37.     /**
  38.    * @ORM\OneToMany(targetEntity="App\Entity\NoteExercise", mappedBy="exercise", orphanRemoval=true)
  39.    */
  40.   private $notes;
  41.   /**
  42.    * @ORM\Column(type="string", length=255, nullable=true)
  43.    */
  44.   private $image;
  45.   /**
  46.    * @Assert\Length(
  47.    *    max = "50M",
  48.    *   maxMessage = "The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}."
  49.    * )
  50.    *
  51.    * @Vich\UploadableField(mapping="exercise_images", fileNameProperty="image")
  52.    * @var File
  53.    */
  54.   private $imageFile;
  55.   /**
  56.    * @ORM\Column(type="datetime", nullable=true)
  57.    * @var \DateTime
  58.    */
  59.   private $updatedAt;
  60.   /**
  61.    * @ORM\Column(type="string", length=255, nullable=true)
  62.    */
  63.   private $poster;
  64.   /**
  65.    * @Vich\UploadableField(mapping="exercise_images", fileNameProperty="poster")
  66.    * @var File
  67.    */
  68.   private $posterFile;
  69.   /**
  70.    * @ORM\Column(type="string", length=255, nullable=true)
  71.    */
  72.   private $dificulty;
  73.   /**
  74.    * @ORM\Column(type="string", length=255, nullable=true)
  75.    */
  76.   private $intensity;
  77.   /**
  78.    * @ORM\Column(type="integer", nullable=true)
  79.    */
  80.   private $duration;
  81.   /**
  82.    * @ORM\OneToMany(targetEntity="App\Entity\ExerciseCalendar", mappedBy="exercise", orphanRemoval=true)
  83.    */
  84.   private $exerciseCalendars;
  85.   /**
  86.    * @ORM\Column(type="integer")
  87.    */
  88.   private $customer_id;
  89.   /**
  90.    * @ORM\Column(type="integer", nullable=false)
  91.    */
  92.   private $category_id;
  93.   /**
  94.    * @ORM\OneToMany(targetEntity=ExerciseQualification::class, mappedBy="exercise")
  95.    */
  96.   private $exerciseQualifications;
  97.   /**
  98.    * @ORM\Column(type="integer", nullable=true)
  99.    */
  100.   private $is_shared;
  101.   /**
  102.    * @ORM\Column(type="datetime", nullable=true)
  103.    */
  104.   private $deletedAt;
  105.   private $stars;
  106.   public function __construct()
  107.   {
  108.     $this->exerciseCalendars = new ArrayCollection();
  109.     $this->materials = new ArrayCollection();
  110.     $this->exerciseQualifications = new ArrayCollection();
  111.     $this->stars = new ArrayCollection();
  112.     $this->notes = new ArrayCollection();
  113.   }
  114.   public function getId(): ?int
  115.   {
  116.     return $this->id;
  117.   }
  118.   public function getCustomerId(): ?int
  119.   {
  120.     return $this->customer_id;
  121.   }
  122.   public function setCustomerId(?int $customer): self
  123.   {
  124.     $this->customer_id $customer;
  125.     return $this;
  126.   }
  127.   public function setCategoryId(?int $category): self
  128.   {
  129.     $this->category_id $category;
  130.     return $this;
  131.   }
  132.   public function getCategoryId(): ?int
  133.   {
  134.     return $this->category_id;
  135.   }
  136.   public function getCategory(): ?Category
  137.   {
  138.     return $this->category;
  139.   }
  140.   public function setCategory(?Category $category): self
  141.   {
  142.     $this->category $category;
  143.     return $this;
  144.   }
  145.   /**
  146.    * @return \DateTime
  147.    */
  148.   public function getUpdatedAt(): \DateTime
  149.   {
  150.     return $this->updatedAt;
  151.   }
  152.   /**
  153.    * @param \DateTime $updatedAt
  154.    * @return Exercise
  155.    */
  156.   public function setUpdatedAt(\DateTime $updatedAt): Exercise
  157.   {
  158.     $this->updatedAt $updatedAt;
  159.     return $this;
  160.   }
  161.   /**
  162.    * @param File|null $image
  163.    * @return Exercise
  164.    */
  165.   public function setImageFile(File $image null)
  166.   {
  167.     $this->imageFile $image;
  168.     // VERY IMPORTANT:
  169.     // It is required that at least one field changes if you are using Doctrine,
  170.     // otherwise the event listeners won't be called and the file is lost
  171.     if ($image) {
  172.       // if 'updatedAt' is not defined in your entity, use another property
  173.       $this->updatedAt = new \DateTime('now');
  174.     }
  175.     return $this;
  176.   }
  177.   public function getImageFile()
  178.   {
  179.     return $this->imageFile;
  180.   }
  181.   public function getImage(): ?string
  182.   {
  183.     return $this->image;
  184.   }
  185.   public function setImage(?string $image): self
  186.   {
  187.     $this->image $image;
  188.     return $this;
  189.   }
  190.   /**
  191.    * @param File|null $poster
  192.    * @return Exercise
  193.    */
  194.   public function setPosterFile(File $poster null)
  195.   {
  196.     $this->posterFile $poster;
  197.     // VERY IMPORTANT:
  198.     // It is required that at least one field changes if you are using Doctrine,
  199.     // otherwise the event listeners won't be called and the file is lost
  200.     if ($poster) {
  201.       // if 'updatedAt' is not defined in your entity, use another property
  202.       $this->updatedAt = new \DateTime('now');
  203.     }
  204.     return $this;
  205.   }
  206.   public function getPosterFile()
  207.   {
  208.     return $this->posterFile;
  209.   }
  210.   public function getPoster(): ?string
  211.   {
  212.     return $this->poster;
  213.   }
  214.   public function setPoster(?string $poster): self
  215.   {
  216.     $this->poster $poster;
  217.     return $this;
  218.   }
  219.   public function getDificulty(): ?string
  220.   {
  221.     return $this->dificulty;
  222.   }
  223.   public function setDificulty(?string $dificulty): self
  224.   {
  225.     $this->dificulty $dificulty;
  226.     return $this;
  227.   }
  228.   public function getIntensity(): ?string
  229.   {
  230.     return $this->intensity;
  231.   }
  232.   public function setIntensity(?string $intensity): self
  233.   {
  234.     $this->intensity $intensity;
  235.     return $this;
  236.   }
  237.   public function getDuration(): ?int
  238.   {
  239.     return $this->duration;
  240.   }
  241.   public function setDuration(?int $duration): self
  242.   {
  243.     $this->duration $duration;
  244.     return $this;
  245.   }
  246.   public function getIsShared(): ?int
  247.   {
  248.     return $this->is_shared;
  249.   }
  250.   public function setIsShared(?int $isShared): self
  251.   {
  252.     $this->is_shared $isShared;
  253.     return $this;
  254.   }
  255.   /**
  256.    * @return \DateTime
  257.    */
  258.   public function getDeletedAt(): \DateTime
  259.   {
  260.     return $this->deletedAt;
  261.   }
  262.   /**
  263.    * @param \DateTime $deletedAt
  264.    * @return Exercise
  265.    */
  266.   public function setDeletedAt(\DateTime $deletedAt): Exercise
  267.   {
  268.     $this->deletedAt $deletedAt;
  269.     return $this;
  270.   }
  271.   public function __call($method$arguments)
  272.   {
  273.     $method = ('get' === substr($method03) || 'set' === substr($method03)) ? $method 'get' ucfirst($method);
  274.     return $this->proxyCurrentLocaleTranslation($method$arguments);
  275.   }
  276.   public function __get($name)
  277.   {
  278.     $method 'get' ucfirst($name);
  279.     $arguments = [];
  280.     return $this->proxyCurrentLocaleTranslation($method$arguments);
  281.   }
  282.   public function __toArray($imagePath "")
  283.   {
  284.     return [
  285.       "id" => $this->getId(),
  286.       "name" => $this->getName(),
  287.       "image" => !empty($this->getImage()) ? $imagePath $this->getImage() : "",
  288.       "poster" => !empty($this->getPoster()) ? $imagePath $this->getPoster() : "",
  289.       "description" => $this->getDescription(),
  290.       "category" => $this->getCategory()->getId(),
  291.       "dificulty" => $this->getDificulty(),
  292.       "intensity" => $this->getIntensity(),
  293.       "duration" => $this->getDuration(),
  294.       "isShared" => $this->getIsShared(),
  295.       "materials" => $this->getMaterialsArray(),
  296.       "customer" => $this->getCustomerId(),
  297.       "category" => $this->getCategoryId(),
  298.       "notes" => $this->getNotesArray()
  299.     ];
  300.   }
  301.   /**
  302.    * @return Collection|ExerciseCalendar[]
  303.    */
  304.   public function getExerciseCalendars(): Collection
  305.   {
  306.     return $this->exerciseCalendars;
  307.   }
  308.   public function addExerciseCalendar(ExerciseCalendar $exerciseCalendar): self
  309.   {
  310.     if (!$this->exerciseCalendars->contains($exerciseCalendar)) {
  311.       $this->exerciseCalendars[] = $exerciseCalendar;
  312.       $exerciseCalendar->setExercise($this);
  313.     }
  314.     return $this;
  315.   }
  316.   public function removeExerciseCalendar(ExerciseCalendar $exerciseCalendar): self
  317.   {
  318.     if ($this->exerciseCalendars->contains($exerciseCalendar)) {
  319.       $this->exerciseCalendars->removeElement($exerciseCalendar);
  320.       // set the owning side to null (unless already changed)
  321.       if ($exerciseCalendar->getExercise() === $this) {
  322.         $exerciseCalendar->setExercise(null);
  323.       }
  324.     }
  325.     return $this;
  326.   }
  327.   /**
  328.    * @return Collection|Material[]
  329.    */
  330.   public function getMaterials(): Collection
  331.   {
  332.     return $this->materials;
  333.   }
  334.   /**
  335.    * @return array
  336.    */
  337.   public function getMaterialsArray()
  338.   {
  339.     $materials $this->materials;
  340.     $output = [];
  341.     foreach ($materials as $material) {
  342.       $output[] = $material->__toArray();
  343.     }
  344.     return $output;
  345.   }
  346.   /**
  347.    * @return Collection|NoteExercise[]
  348.    */
  349.   public function getNotes(): Collection
  350.   {
  351.     return $this->notes;
  352.   }
  353.     /**
  354.    * @return array
  355.    */
  356.   public function getNotesArray()
  357.   {
  358.     $notes $this->notes;
  359.     $output = [];
  360.     foreach ($notes as $note) {
  361.       $output[] = $note->__toArray();
  362.     }
  363.     return $output;
  364.   }
  365.   public function addMaterial(Material $material): self
  366.   {
  367.     if (!$this->materials->contains($material)) {
  368.       $this->materials[] = $material;
  369.     }
  370.     return $this;
  371.   }
  372.   public function removeMaterial(Material $material): self
  373.   {
  374.     if ($this->materials->contains($material)) {
  375.       $this->materials->removeElement($material);
  376.       // set the owning side to null (unless already changed)
  377.       if ($material->getExercise() === $this) {
  378.         $material->setExercise(null);
  379.       }
  380.     }
  381.     return $this;
  382.   }
  383.   public function removeMaterials(): self
  384.   {
  385.     $materials $this->materials;
  386.     foreach ($materials as $material) {
  387.       $this->materials->removeElement($material);
  388.       if ($material->getExercisesUser() === $this) {
  389.         $material->removeExerciseUser($this);
  390.       }
  391.     }
  392.     return $this;
  393.   }
  394.   public function getExerciseQualifications(): Collection
  395.   {
  396.     return $this->exerciseQualifications;
  397.   }
  398.   public function addExerciseQualification(ExerciseQualification $exerciseQualification): self
  399.   {
  400.     if (!$this->exerciseQualifications->contains($exerciseQualification)) {
  401.       $this->exerciseQualifications[] = $exerciseQualification;
  402.       $exerciseQualification->setExercise($this);
  403.     }
  404.     return $this;
  405.   }
  406.   public function removeExerciseQualification(ExerciseQualification $exerciseQualification): self
  407.   {
  408.     if ($this->exerciseQualifications->contains($exerciseQualification)) {
  409.       $this->exerciseQualifications->removeElement($exerciseQualification);
  410.       // set the owning side to null (unless already changed)
  411.       if ($exerciseQualification->getExercise() === $this) {
  412.         $exerciseQualification->setExercise(null);
  413.       }
  414.     }
  415.     return $this;
  416.   }
  417.   public function getStars(){
  418.     $this->stars 0;
  419.     foreach ($this->exerciseQualifications as $key => $value) {
  420.       $this->stars $this->stars $value->getQuantity();
  421.     }
  422.     if(!$this->stars){
  423.       return $this->stars;
  424.     }
  425.     
  426.     return round($this->stars count($this->exerciseQualifications)) ;
  427.   }
  428.   public function getMedia(){
  429.     $this->stars 0;
  430.     foreach ($this->exerciseQualifications as $key => $value) {
  431.       $this->stars $this->stars $value->getQuantity();
  432.     }
  433.     return $this->stars count($this->exerciseQualifications);
  434.   }
  435. }