src/Entity/Category.php line 17

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. /**
  11.  * @ORM\Entity(repositoryClass="App\Repository\CategoryRepository")
  12.  * @Vich\Uploadable
  13.  */
  14. class Category implements TranslatableInterface
  15. {
  16.   use TranslatableTrait;
  17.     /**
  18.      * @ORM\Id()
  19.      * @ORM\GeneratedValue()
  20.      * @ORM\Column(type="integer")
  21.      */
  22.     private $id;
  23.     /**
  24.      * @ORM\Column(type="string", length=255, nullable=true)
  25.      */
  26.     private $image;
  27.     /**
  28.      * @ORM\Column(type="boolean")
  29.      */
  30.     private $isVisible;
  31.     /**
  32.      * @Vich\UploadableField(mapping="exercise_images", fileNameProperty="image")
  33.      * @var File
  34.      */
  35.     private $imageFile;
  36.     /**
  37.      * @ORM\Column(type="datetime", nullable=true)
  38.      * @var \DateTime
  39.      */
  40.     private $updatedAt;
  41.     /**
  42.      * @ORM\OneToMany(targetEntity="App\Entity\Exercise", mappedBy="category", orphanRemoval=true)
  43.      */
  44.     private $exercises;
  45.     public function __construct()
  46.     {
  47.         $this->exercises = new ArrayCollection();
  48.     }
  49.     public function getId(): ?int
  50.     {
  51.         return $this->id;
  52.     }
  53.     /**
  54.      * @return \DateTime
  55.      */
  56.     public function getUpdatedAt(): \DateTime
  57.     {
  58.         return $this->updatedAt;
  59.     }
  60.     /**
  61.      * @param \DateTime $updatedAt
  62.      * @return Category
  63.      */
  64.     public function setUpdatedAt(\DateTime $updatedAt): Category
  65.     {
  66.         $this->updatedAt $updatedAt;
  67.         return $this;
  68.     }
  69.   /**
  70.      * @param File|null $image
  71.      * @return Category
  72.      */
  73.     public function setImageFile(File $image null)
  74.     {
  75.       $this->imageFile $image;
  76.         // VERY IMPORTANT:
  77.         // It is required that at least one field changes if you are using Doctrine,
  78.         // otherwise the event listeners won't be called and the file is lost
  79.         if ($image) {
  80.             // if 'updatedAt' is not defined in your entity, use another property
  81.             $this->updatedAt = new \DateTime('now');
  82.         }
  83.         return $this;
  84.     }
  85.   public function getImageFile()
  86.   {
  87.     return $this->imageFile;
  88.   }
  89.     public function getImage(): ?string
  90.     {
  91.         return $this->image;
  92.     }
  93.     public function setImage(?string $image): self
  94.     {
  95.         $this->image $image;
  96.         return $this;
  97.     }
  98.     /**
  99.      * @return Collection|Exercise[]
  100.      */
  101.     public function getExercises(): Collection
  102.     {
  103.         return $this->exercises;
  104.     }
  105.     public function addExercise(Exercise $exercise): self
  106.     {
  107.         if (!$this->exercises->contains($exercise)) {
  108.             $this->exercises[] = $exercise;
  109.             $exercise->setCategory($this);
  110.         }
  111.         return $this;
  112.     }
  113.     public function removeExercise(Exercise $exercise): self
  114.     {
  115.         if ($this->exercises->contains($exercise)) {
  116.             $this->exercises->removeElement($exercise);
  117.             // set the owning side to null (unless already changed)
  118.             if ($exercise->getCategory() === $this) {
  119.                 $exercise->setCategory(null);
  120.             }
  121.         }
  122.         return $this;
  123.     }
  124.     public function __call($method$arguments)
  125.     {
  126.       $method = ('get' === substr($method03) || 'set' === substr($method03)) ? $method 'get'ucfirst($method);
  127.       return $this->proxyCurrentLocaleTranslation($method$arguments);
  128.     }
  129.     public function __get($name)
  130.     {
  131.       $method 'get'ucfirst($name);
  132.       $arguments = [];
  133.       return $this->proxyCurrentLocaleTranslation($method$arguments);
  134.     }
  135.     /**
  136.      * @return mixed
  137.      */
  138.     public function __toString()
  139.     {
  140.       return self::getName();
  141.     }
  142.     public function __toArray($imagePath "")
  143.     {
  144.       return [
  145.         "id"=>$this->getId(),
  146.         "name"=>$this->getName(),
  147.         "description"=>$this->getDescription(),
  148.         "image"=> !empty($this->getImage()) ? $imagePath $this->getImage() : ""
  149.       ];
  150.     }
  151.     
  152.     public function getIsVisible()
  153.     {
  154.       return $this->isVisible;
  155.     }
  156.     public function setIsVisible(bool $isVisible): self
  157.     {
  158.       $this->isVisible $isVisible;
  159.       return $this;
  160.     }
  161. }