<?php
namespace App\Entity;
use App\Repository\MediaRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Serializer\Annotation\Ignore;
use Symfony\Component\Validator\Context\ExecutionContextInterface;
/**
* @ORM\Entity(repositoryClass=MediaRepository::class)
* @Vich\Uploadable
*/
class Media
{
const TYPE_CANDIDATURE = "candidature";
const TYPE_POST_CANDIDATURE = "postCandidature";
const TYPE_CUSTOMER = "parent";
const TYPE_EMPLOYE = "employé";
const ENTITY_TRANSLATION = [
'sejour' => 'App\Entity\Sejour',
'sejour_session' => 'App\Entity\SejourSession',
'inscription' => 'App\Entity\Inscription',
'enfant' => 'enfant'
];
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $name;
/**
* @ORM\Column(type="string", length=512, nullable=true)
*/
private $description;
/**
* @ORM\Column(type="string", length=512, nullable=true)
*/
private $filePath;
/**
* @ORM\OneToMany(targetEntity=Media::class, mappedBy="mediaParent")
*/
private $mediaChildren;
/**
* @Vich\UploadableField(mapping="frontend_image", fileNameProperty="filePath")
* @var File|null
*
*/
private $imgFile;
/**
* @Ignore()
* @Vich\UploadableField(mapping="private_file", fileNameProperty="filePath") *
* @var File|null
*
*/
private $privateFile;
/**
* @ORM\Column(type="json", nullable=true)
*/
private $attributes = [];
/**
* @ORM\Column(type="string", length=511 , nullable=true)
*/
private $altAttribute;
/**
* @ORM\Column(type="boolean")
*/
private $isStandalone;
/**
* @ORM\Column(type="boolean",options={"default": false})
*/
private $isMigrated;
/**
* @ORM\OneToMany(targetEntity=SejourSessionMediaCategorie::class, mappedBy="media",cascade={"persist"})
*/
private $sejourSessionMediaCategories;
/**
* @ORM\ManyToOne(targetEntity=MediaCategorie::class, inversedBy="media", fetch="EAGER")
* @ORM\JoinColumn(nullable=false)
*/
private $mediaCategorie;
/**
* @ORM\ManyToOne(targetEntity=Media::class, inversedBy="mediaParent", fetch="EAGER")
* @ORM\JoinColumn(nullable=true)
*/
private $mediaParent;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $position;
/**
* @ORM\OneToMany(targetEntity=ContactMediaCategorie::class, mappedBy="media")
*/
private $contactMediaCategories;
/**
* @ORM\OneToMany(targetEntity=ArticleMediaCategorie::class, mappedBy="media")
*/
private $articleMediaCategories;
/**
* @ORM\ManyToOne(targetEntity=Sejour::class, inversedBy="medias",cascade={"persist"})
*/
private $sejour;
/**
* @ORM\ManyToOne(targetEntity=Candidature::class, inversedBy="medias")
*/
private $candidature;
/**
* @ORM\ManyToOne(targetEntity=Contact::class, inversedBy="medias")
*/
private $contact;
/**
* @ORM\ManyToOne(targetEntity=SejourSession::class, inversedBy="medias",cascade={"persist"})
*/
private $sejourSession;
/**
* @ORM\ManyToOne(targetEntity=Inscription::class, inversedBy="medias")
*/
private $inscription;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $updatedDate;
/**
* @ORM\ManyToMany(targetEntity=EmailInfo::class, mappedBy="attachments")
*/
private $emailInfos;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $legacyId;
/**
* @ORM\ManyToOne(targetEntity=Saison::class, inversedBy="medias")
*/
private $saison;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $isValidated;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $rejectedReason;
public function __construct()
{
$this->sejourSessionMediaCategories = new ArrayCollection();
$this->isStandalone = true;
$this->isMigrated = false;
$this->updatedDate = new \Datetime();
$this->contactMediaCategories = new ArrayCollection();
$this->articleMediaCategories = new ArrayCollection();
$this->emailInfos = new ArrayCollection();
$this->mediaChildren = new ArrayCollection();
}
/**
* @return Collection|self[]
*/
public function getMediaChildren(): Collection
{
return $this->mediaChildren;
}
public function addMediaChild(self $child): self
{
if (!$this->mediaChildren->contains($child)) {
$this->mediaChildren[] = $child;
$child->setMediaParent($this);
}
return $this;
}
public function removeMediaChild(self $child): self
{
if ($this->mediaChildren->removeElement($child)) {
// set the owning side to null (unless already changed)
if ($child->getMediaParent() === $this) {
$child->setMediaParent(null);
}
}
return $this;
}
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(?string $name): self
{
$this->name = $name;
return $this;
}
public function getRejectedReason(): ?string
{
return $this->rejectedReason;
}
public function setRejectedReason(?string $rejectedReason): self
{
$this->rejectedReason = $rejectedReason;
return $this;
}
public function getDescription(): ?string
{
return $this->description;
}
public function setDescription(string $description): self
{
$this->description = $description;
return $this;
}
public function getFilePath(): ?string
{
return $this->filePath;
}
public function setFilePath(?string $filePath): self
{
$this->filePath = $filePath;
return $this;
}
public function getAttributes(): ?array
{
return $this->attributes;
}
public function setAttributes(?array $attributes): self
{
$this->attributes = $attributes;
return $this;
}
public function getAltAttribute(): ?string
{
return $this->altAttribute;
}
public function setAltAttribute(string $altAttribute): self
{
$this->altAttribute = $altAttribute;
return $this;
}
public function getIsStandalone(): ?bool
{
return $this->isStandalone;
}
public function setIsStandalone(bool $isStandalone): self
{
$this->isStandalone = $isStandalone;
return $this;
}
public function getIsMigrated(): ?bool
{
return $this->isMigrated;
}
public function setIsMigrated(bool $isMigrated): self
{
$this->isMigrated = $isMigrated;
return $this;
}
/**
* @return Collection|SejourSessionMediaCategorie[]
*/
public function getSejourSessionMediaCategories(): Collection
{
return $this->sejourSessionMediaCategories;
}
public function addSejourSessionMediaCategorie(SejourSessionMediaCategorie $sejourSessionMediaCategorie): self
{
if (!$this->sejourSessionMediaCategories->contains($sejourSessionMediaCategorie)) {
$this->sejourSessionMediaCategories[] = $sejourSessionMediaCategorie;
$sejourSessionMediaCategorie->setMedia($this);
}
return $this;
}
public function removeSejourSessionMediaCategorie(SejourSessionMediaCategorie $sejourSessionMediaCategorie): self
{
if ($this->sejourSessionMediaCategories->removeElement($sejourSessionMediaCategorie)) {
// set the owning side to null (unless already changed)
if ($sejourSessionMediaCategorie->getMedia() === $this) {
$sejourSessionMediaCategorie->setMedia(null);
}
}
return $this;
}
public function getMediaCategorie(): ?MediaCategorie
{
return $this->mediaCategorie;
}
public function setMediaCategorie(?MediaCategorie $MediaCategorie): self
{
$this->mediaCategorie = $MediaCategorie;
return $this;
}
public function getMediaParent(): ?Media
{
return $this->mediaParent;
}
public function setMediaParent(?Media $mediaParent): self
{
$this->mediaParent = $mediaParent;
return $this;
}
public function getPosition(): ?int
{
return $this->position;
}
public function setPosition(?int $position): self
{
$this->position = $position;
return $this;
}
public function setImgFile(?File $imageFile = null)
{
$this->imgFile = $imageFile;
if ($imageFile) {
// if 'updatedAt' is not defined in your entity, use another property
$this->legacyId = 1;
if (file_exists($imageFile->getPathname()))
return(in_array($imageFile->guessExtension(),$this->mediaCategorie->getAllowedFormat()));
}
return true;
}
public function getImgFile(): ?File
{
return $this->imgFile;
}
public function setPrivateFile(?File $imageFile = null)
{
$this->privateFile = $imageFile;
if ($imageFile) {
// if 'updatedAt' is not defined in your entity, use another property
$this->updatedDate = new \DateTime('now');
if (file_exists($imageFile->getPathname()))
return(in_array($imageFile->guessExtension(),$this->mediaCategorie->getAllowedFormat()));
}
return true;
}
public function isFileOk()
{
if($this->imgFile == null) return true;
return(in_array($this->imgFile->getExtension(),$this->mediaCategorie->getAllowedFormat()));
}
public function getPrivateFile(): ?File
{
return $this->privateFile;
}
/**
* @return Collection|ContactMediaCategorie[]
*/
public function getContactMediaCategories(): Collection
{
return $this->contactMediaCategories;
}
public function addContactMediaCategory(ContactMediaCategorie $contactMediaCategory): self
{
if (!$this->contactMediaCategories->contains($contactMediaCategory)) {
$this->contactMediaCategories[] = $contactMediaCategory;
$contactMediaCategory->setMedia($this);
}
return $this;
}
public function removeContactMediaCategory(ContactMediaCategorie $contactMediaCategory): self
{
if ($this->contactMediaCategories->removeElement($contactMediaCategory)) {
// set the owning side to null (unless already changed)
if ($contactMediaCategory->getMedia() === $this) {
$contactMediaCategory->setMedia(null);
}
}
return $this;
}
/**
* @return Collection|ArticleMediaCategorie[]
*/
public function getArticleMediaCategories(): Collection
{
return $this->articleMediaCategories;
}
public function addArticleMediaCategory(ArticleMediaCategorie $articleMediaCategory): self
{
if (!$this->articleMediaCategories->contains($articleMediaCategory)) {
$this->articleMediaCategories[] = $articleMediaCategory;
$articleMediaCategory->setMedia($this);
}
return $this;
}
public function removeArticleMediaCategory(ArticleMediaCategorie $articleMediaCategory): self
{
if ($this->articleMediaCategories->removeElement($articleMediaCategory)) {
// set the owning side to null (unless already changed)
if ($articleMediaCategory->getMedia() === $this) {
$articleMediaCategory->setMedia(null);
}
}
return $this;
}
public function getSejour(): ?Sejour
{
return $this->sejour;
}
public function setSejour(?Sejour $sejour): self
{
$this->sejour = $sejour;
return $this;
}
public function getCandidature(): ?Candidature
{
return $this->candidature;
}
public function setCandidature(?Candidature $candidature): self
{
$this->candidature = $candidature;
return $this;
}
public function getContact(): ?Contact
{
return $this->contact;
}
public function setContact(?Contact $contact): self
{
$this->contact = $contact;
return $this;
}
public function getSejourSession(): ?SejourSession
{
return $this->sejourSession;
}
public function setSejourSession(?SejourSession $sejourSession): self
{
$this->sejourSession = $sejourSession;
return $this;
}
public function getInscription(): ?Inscription
{
return $this->inscription;
}
public function setInscription(?Inscription $inscription): self
{
$this->inscription = $inscription;
return $this;
}
public function getUpdatedDate(): ?\DateTimeInterface
{
return $this->updatedDate;
}
public function setUpdatedDate(?\DateTimeInterface $updatedDate): self
{
$this->updatedDate = $updatedDate;
return $this;
}
/**
* @return Collection|EmailInfo[]
*/
public function getEmailInfos(): Collection
{
return $this->emailInfos;
}
public function addEmailInfo(EmailInfo $emailInfo): self
{
if (!$this->emailInfos->contains($emailInfo)) {
$this->emailInfos[] = $emailInfo;
$emailInfo->addAttachment($this);
}
return $this;
}
public function removeEmailInfo(EmailInfo $emailInfo): self
{
if ($this->emailInfos->removeElement($emailInfo)) {
$emailInfo->removeAttachment($this);
}
return $this;
}
public function getLegacyId(): ?int
{
return $this->legacyId;
}
public function setLegacyId(?int $legacyId): self
{
$this->legacyId = $legacyId;
return $this;
}
public function getSaison(): ?Saison
{
return $this->saison;
}
public function setSaison(?Saison $saison): self
{
$this->saison = $saison;
return $this;
}
public function getIsValidated(): ?bool
{
return $this->isValidated;
}
public function setIsValidated(?bool $isValidated): self
{
$this->isValidated = $isValidated;
return $this;
}
}