<?php
namespace App\Entity;
use App\Entity\Common\AutoTimestampTrait;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
/**
* @ORM\Entity(repositoryClass="App\Repository\DiaporamaRepository")
* @ORM\HasLifecycleCallbacks
* @Vich\Uploadable
*/
class Diaporama
{
use AutoTimestampTrait;
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $titre;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $texte;
/**
* @ORM\Column(type="boolean", options={"default" : false}, nullable=true)
*/
private $actif;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $position;
/**
* @Assert\Valid
* @ORM\OneToMany(targetEntity="App\Entity\DiaporamaPhoto", mappedBy="diaporama", orphanRemoval=true, cascade={"persist"})
* @ORM\OrderBy({"position": "ASC"})
*/
private $photo;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $principal;
/**
* @ORM\ManyToMany(targetEntity=Etablissement::class, inversedBy="diaporamas")
*/
private $etablissements;
/**
* @ORM\OneToMany(targetEntity=Etablissement::class, mappedBy="diapoPrincipal")
*/
private $etabs;
public function __construct()
{
$this->photo = new ArrayCollection();
$this->etablissements = new ArrayCollection();
$this->etabs = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getTitre(): ?string
{
return $this->titre;
}
public function setTitre(string $titre): self
{
$this->titre = $titre;
return $this;
}
public function getTexte(): ?string
{
return $this->texte;
}
public function setTexte(?string $texte): self
{
$this->texte = $texte;
return $this;
}
public function getActif(): ?bool
{
return $this->actif;
}
public function setActif(bool $actif): self
{
$this->actif = $actif;
return $this;
}
public function getPosition(): ?int
{
return $this->position;
}
public function setPosition(?int $position): self
{
$this->position = $position;
return $this;
}
// public function getEtablissement(): ?Etablissement
// {
// return $this->etablissement;
// }
//
// public function setEtablissement(?Etablissement $etablissement): self
// {
// $this->etablissement = $etablissement;
//
// return $this;
// }
/**
* @return Collection|DiaporamaPhoto[]
*/
public function getPhoto(): Collection
{
return $this->photo;
}
public function addPhoto(DiaporamaPhoto $photo): self
{
if (!$this->photo->contains($photo)) {
$this->photo[] = $photo;
$photo->setDiaporama($this);
}
return $this;
}
public function setPhoto(Collection $photo): self
{
$this->photo = $photo;
return $this;
}
public function removePhoto(DiaporamaPhoto $photo): self
{
if ($this->photo->contains($photo)) {
$this->photo->removeElement($photo);
// set the owning side to null (unless already changed)
if ($photo->getDiaporama() === $this) {
$photo->setDiaporama(null);
}
}
return $this;
}
public function getPrincipal(): ?bool
{
return $this->principal;
}
public function setPrincipal(bool $principal): self
{
$this->principal = $principal;
return $this;
}
/**
* @return Collection<int, Etablissement>
*/
public function getEtablissements(): Collection
{
return $this->etablissements;
}
public function addEtablissement(Etablissement $etablissement): self
{
if (!$this->etablissements->contains($etablissement)) {
$this->etablissements[] = $etablissement;
}
return $this;
}
public function removeEtablissement(Etablissement $etablissement): self
{
$this->etablissements->removeElement($etablissement);
return $this;
}
// Rétro-compaitiblité avec la nouvelle relation, cf getter commenté par Yosser
public function getEtablissement() {
return $this->etablissements[0];
}
/**
* @return Collection<int, Etablissement>
*/
public function getEtabs(): Collection
{
return $this->etabs;
}
public function addEtab(Etablissement $etab): self
{
if (!$this->etabs->contains($etab)) {
$this->etabs[] = $etab;
$etab->setDiapoPrincipal($this);
}
return $this;
}
public function removeEtab(Etablissement $etab): self
{
if ($this->etabs->removeElement($etab)) {
// set the owning side to null (unless already changed)
if ($etab->getDiapoPrincipal() === $this) {
$etab->setDiapoPrincipal(null);
}
}
return $this;
}
}