src/Entity/MediaLibrary/CooperativeMedia.php line 32

Open in your IDE?
  1. <?php
  2. namespace App\Entity\MediaLibrary;
  3. use App\Annotation\SiteAware;
  4. use App\Entity\AbstractBase;
  5. use App\Entity\Interfaces\DocumentInterface;
  6. use App\Entity\Interfaces\ImageInterface;
  7. use App\Entity\Interfaces\PublishedInterface;
  8. use App\Entity\Interfaces\SiteInterface;
  9. use App\Entity\MiniAbstractBase;
  10. use App\Entity\Traits\HasDocumentTrait;
  11. use App\Entity\Traits\HasImageTrait;
  12. use App\Entity\Traits\NameTrait;
  13. use App\Entity\Traits\PublishedTrait;
  14. use App\Entity\Traits\SiteTrait;
  15. use App\Entity\User;
  16. use App\Repository\MediaLibraries\CooperativeMediaRepository;
  17. use Doctrine\Common\Collections\Collection;
  18. use Doctrine\ORM\Mapping as ORM;
  19. use Gedmo\Mapping\Annotation as Gedmo;
  20. use Symfony\Component\HttpFoundation\File\File;
  21. use Vich\UploaderBundle\Mapping\Annotation as Vich;
  22. /**
  23.  * @ORM\Table(name="vulco_cooperative_media", indexes={@ORM\Index(name="cooperative_media_site_idx", columns={"site"})})
  24.  * @ORM\Entity(repositoryClass=CooperativeMediaRepository::class)
  25.  * @Gedmo\SoftDeleteable(fieldName="removedAt", timeAware=false)
  26.  * @SiteAware(siteFieldName="site")
  27.  * @Vich\Uploadable
  28.  */
  29. class CooperativeMedia extends AbstractBase implements SiteInterfacePublishedInterfaceDocumentInterfaceImageInterface
  30. {
  31.     use NameTrait;
  32.     use SiteTrait;
  33.     use PublishedTrait;
  34.     use HasDocumentTrait;
  35.     use HasImageTrait;
  36.     /**
  37.      * @ORM\Column(type="string", length=255, nullable=false)
  38.      */
  39.     private string $name;
  40.     /**
  41.      * @Vich\UploadableField(mapping="cooperative_media_document", fileNameProperty="documentName")
  42.      */
  43.     private ?File $document null;
  44.     /**
  45.      * @Vich\UploadableField(mapping="cooperative_media_image", fileNameProperty="imageName")
  46.      */
  47.     private ?File $image null;
  48.     /**
  49.      * @ORM\ManyToMany(targetEntity="App\Entity\User", orphanRemoval=true)
  50.      * @ORM\JoinTable(name="vulco_cooperative_media_downloads",
  51.      *     joinColumns={@ORM\JoinColumn(name="cooperative_media_id", referencedColumnName="id")},
  52.      *     inverseJoinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")}
  53.      * )
  54.      */
  55.     private ?Collection $downloads;
  56.     /**
  57.      * @ORM\ManyToOne(targetEntity="App\Entity\MediaLibrary\CooperativeMediaCategory", inversedBy="medias", fetch="EAGER")
  58.      * @ORM\JoinColumn(name="cooperative_media_category_id", referencedColumnName="id")
  59.      */
  60.     private CooperativeMediaCategory $cooperativeMediaCategory;
  61.     public function getDownloads(): ?Collection
  62.     {
  63.         return $this->downloads;
  64.     }
  65.     public function setDownloads(Collection $downloads): self
  66.     {
  67.         $this->downloads $downloads;
  68.         return $this;
  69.     }
  70.     public function addDownload(User $user): self
  71.     {
  72.         if (!$this->downloads->contains($user)) {
  73.             $this->downloads->add($user);
  74.         }
  75.         return $this;
  76.     }
  77.     public function removeDownload(User $user): self
  78.     {
  79.         if ($this->downloads->contains($user)) {
  80.             $this->downloads->remove($user);
  81.         }
  82.         return $this;
  83.     }
  84.     public function countDownloads(): int
  85.     {
  86.         if (null !== $this->getDownloads()) {
  87.             return count($this->getDownloads());
  88.         }
  89.         return 0;
  90.     }
  91.     public function getCooperativeMediaCategory(): CooperativeMediaCategory
  92.     {
  93.         return $this->cooperativeMediaCategory;
  94.     }
  95.     public function setCooperativeMediaCategory(CooperativeMediaCategory $cooperativeMediaCategory): self
  96.     {
  97.         $this->cooperativeMediaCategory $cooperativeMediaCategory;
  98.         return $this;
  99.     }
  100.     public function __toString(): string
  101.     {
  102.         return $this->id $this->getName() : MiniAbstractBase::DEFAULT_EMPTY_STRING;
  103.     }
  104. }