src/Entity/Beat.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\BeatRepository;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\DBAL\Types\Types;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use finfo;
  9. use Symfony\Component\HttpFoundation\File\File;
  10. use Symfony\Component\Validator\Constraints as Assert;
  11. use Vich\UploaderBundle\Mapping\Annotation as Vich;
  12. #[ORM\Entity(repositoryClassBeatRepository::class)]
  13. #[Vich\Uploadable]
  14. class Beat
  15. {
  16.     #[ORM\Id]
  17.     #[ORM\GeneratedValue]
  18.     #[ORM\Column]
  19.     private ?int $id null;
  20.     #[ORM\Column(length255)]
  21.     private ?string $name null;
  22.     #[Vich\UploadableField(mapping'beats_beat'fileNameProperty'instrumentalFileName'size'instrumentalSize')]
  23.     public ?File $instrumentalFile null;
  24.     #[ORM\Column(nullabletrue)]
  25.     private ?string $instrumentalFileName null;
  26.     #[ORM\Column(nullabletrue)]
  27.     private ?int $instrumentalSize null;
  28.     #[Vich\UploadableField(mapping'beats_image'fileNameProperty'imageName'size'imageSize')]
  29.     public ?File $imageFile null;
  30.     #[ORM\Column(nullabletrue)]
  31.     private ?string $imageName null;
  32.     #[ORM\Column(nullabletrue)]
  33.     private ?int $imageSize null;
  34.     #[ORM\Column(nullabletrue)]
  35.     private ?\DateTime $updatedAt null;
  36.     #[ORM\ManyToMany(targetEntityBeatCategory::class, inversedBy'beats')]
  37.     private Collection $category;
  38.     #[ORM\ManyToOne(inversedBy'beats')]
  39.     private ?BeatAuthor $author null;
  40.     #[ORM\OneToMany(mappedBy'beat'targetEntityBattle::class)]
  41.     private Collection $battles;
  42.     #[ORM\Column(nullabletrue)]
  43.     private ?\DateTime $beatLength null;
  44.     #[ORM\Column(nullabletrue)]
  45.     private ?\DateTime $createdAt null;
  46.     #[ORM\ManyToMany(targetEntityClient::class, mappedBy'favoriteBeats')]
  47.     private Collection $favoritedClients;
  48.     public function __toString()
  49.     {
  50.         return (string)$this->getName();
  51.     }
  52.     public function __construct()
  53.     {
  54.         $this->category = new ArrayCollection();
  55.         $this->battles = new ArrayCollection();
  56.         $this->favoritedClients = new ArrayCollection();
  57.     }
  58.     public function getId(): ?int
  59.     {
  60.         return $this->id;
  61.     }
  62.     public function getName(): ?string
  63.     {
  64.         return $this->name;
  65.     }
  66.     public function setName(string $name): static
  67.     {
  68.         $this->name $name;
  69.         return $this;
  70.     }
  71.     public function setInstrumentalFile(?File $instrumentalFile null): void
  72.     {
  73.         $this->instrumentalFile $instrumentalFile;
  74.         if (null !== $instrumentalFile) {
  75.             // It is required that at least one field changes if you are using doctrine
  76.             // otherwise the event listeners won't be called and the file is lost
  77.             $this->updatedAt = new \DateTime();
  78.         }
  79.     }
  80.     public function getInstrumentalFile(): ?File
  81.     {
  82.         return $this->instrumentalFile;
  83.     }
  84.     public function setInstrumentalFileName(?string $instrumentalFileName): void
  85.     {
  86.         $this->instrumentalFileName $instrumentalFileName;
  87.     }
  88.     public function getInstrumentalFileName(): ?string
  89.     {
  90.         return $this->instrumentalFileName;
  91.     }
  92.     public function setInstrumentalSize(?int $instrumentalSize): void
  93.     {
  94.         $this->instrumentalSize $instrumentalSize;
  95.     }
  96.     public function getInstrumentalSize(): ?int
  97.     {
  98.         return $this->instrumentalSize;
  99.     }
  100.     public function getImageFile(): ?File
  101.     {
  102.         return $this->imageFile;
  103.     }
  104.     public function setImageName(?string $imageName): void
  105.     {
  106.         $this->imageName $imageName;
  107.     }
  108.     public function getImageName(): ?string
  109.     {
  110.         return $this->imageName;
  111.     }
  112.     public function setImageSize(?int $imageSize): void
  113.     {
  114.         $this->imageSize $imageSize;
  115.     }
  116.     public function getImageSize(): ?int
  117.     {
  118.         return $this->imageSize;
  119.     }
  120.     /**
  121.      * @return Collection<int, BeatCategory>
  122.      */
  123.     public function getCategory(): Collection
  124.     {
  125.         return $this->category;
  126.     }
  127.     public function addCategory(BeatCategory $category): static
  128.     {
  129.         if (!$this->category->contains($category)) {
  130.             $this->category->add($category);
  131.         }
  132.         return $this;
  133.     }
  134.     public function removeCategory(BeatCategory $category): static
  135.     {
  136.         $this->category->removeElement($category);
  137.         return $this;
  138.     }
  139.     public function getAuthor(): ?BeatAuthor
  140.     {
  141.         return $this->author;
  142.     }
  143.     public function setAuthor(?BeatAuthor $author): static
  144.     {
  145.         $this->author $author;
  146.         return $this;
  147.     }
  148.     /**
  149.      * @return Collection<int, Battle>
  150.      */
  151.     public function getBattles(): Collection
  152.     {
  153.         return $this->battles;
  154.     }
  155.     public function addBattle(Battle $battle): static
  156.     {
  157.         if (!$this->battles->contains($battle)) {
  158.             $this->battles->add($battle);
  159.             $battle->setBeat($this);
  160.         }
  161.         return $this;
  162.     }
  163.     public function removeBattle(Battle $battle): static
  164.     {
  165.         if ($this->battles->removeElement($battle)) {
  166.             // set the owning side to null (unless already changed)
  167.             if ($battle->getBeat() === $this) {
  168.                 $battle->setBeat(null);
  169.             }
  170.         }
  171.         return $this;
  172.     }
  173.     public function getBeatLength(): ?\DateTimeInterface
  174.     {
  175.         return $this->beatLength;
  176.     }
  177.     public function setBeatLength(?\DateTimeInterface $beatLength): static
  178.     {
  179.         $this->beatLength $beatLength;
  180.         return $this;
  181.     }
  182.     public function getCreatedAt(): ?\DateTime
  183.     {
  184.         return $this->createdAt;
  185.     }
  186.     public function setCreatedAt(?\DateTime $createdAt): static
  187.     {
  188.         $this->createdAt $createdAt;
  189.         return $this;
  190.     }
  191.     /**
  192.      * @return Collection<int, Client>
  193.      */
  194.     public function getFavoritedClients(): Collection
  195.     {
  196.         return $this->favoritedClients;
  197.     }
  198.     public function addFavoritedClient(Client $favoritedClient): static
  199.     {
  200.         if (!$this->favoritedClients->contains($favoritedClient)) {
  201.             $this->favoritedClients->add($favoritedClient);
  202.             $favoritedClient->addFavoriteBeat($this);
  203.         }
  204.         return $this;
  205.     }
  206.     public function removeFavoritedClient(Client $favoritedClient): static
  207.     {
  208.         if ($this->favoritedClients->removeElement($favoritedClient)) {
  209.             $favoritedClient->removeFavoriteBeat($this);
  210.         }
  211.         return $this;
  212.     }
  213. //    /**
  214. //     * @Vich\UploadableField\PreUpload
  215. //     */
  216. //    public function validateAudioFile(File $audioFile): void
  217. //    {
  218. //
  219. //        $finfo = new Finfo(FILEINFO_MIME_TYPE);
  220. //        $mimeType = $finfo->file($audioFile->getRealPath());
  221. //
  222. //        if (in_array($mimeType, ['audio/mpeg', 'audio/wav', 'audio/ogg'])) {
  223. //            $allowedDuration = 60; // 1 minute in seconds
  224. //            $fileInfo = ffmpeg_probe($audioFile->getRealPath());
  225. //            $duration = $fileInfo['format']['duration'];
  226. //
  227. //            if ($duration > $allowedDuration) {
  228. //                throw new \Exception("Audio file cannot be longer than 1 minute.");
  229. //            }
  230. //        }
  231. //
  232. //    }
  233. }