<?php
namespace App\Entity\Gestiform\Admin;
use App\Entity\AbstractEntity;
use App\Entity\Common\Adresse;
use App\Entity\Gestiform\Formations\Dossier\Dossier;
use App\Repository\Gestiform\Admin\SiteRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Mime\Address;
use Symfony\Component\Serializer\Annotation as Serializer;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity(repositoryClass=SiteRepository::class)
* @UniqueEntity(fields={"siret"}, message="Le SIRET doit ĂȘtre unique.")
*/
class Site extends AbstractEntity
{
/**
* @ORM\Column(type="string", length=255, nullable=false)
*/
private string $intitule;
/**
* @ORM\Column(type="string", length=14, unique=true, nullable=true)
* @Assert\Regex(
* pattern="/^[0-9]{14}$/",
* message="Le SIRET doit contenir exactement 14 chiffres."
* )
*/
private ?string $siret = null;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private ?string $numeroUAI = null;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private ?bool $virtuel = null;
/**
* @ORM\ManyToOne(targetEntity=Societe::class, inversedBy="sites")
* @ORM\JoinColumn(nullable=true)
*/
private ?Societe $societe = null;
/**
* @ORM\ManyToOne(targetEntity=Adresse::class, cascade={"persist"})
* @ORM\JoinColumn(nullable=true)
*/
private ?Adresse $adresse = null;
/**
* @ORM\OneToMany(targetEntity=Salle::class, mappedBy="site")
*/
private Collection $salles;
/**
* @ORM\OneToMany(targetEntity=Dossier::class, mappedBy="site")
* @Serializer\Ignore()
*/
private Collection $dossiers;
public function __construct()
{
$this->salles = new ArrayCollection();
$this->dossiers = new ArrayCollection();
}
public function getIntitule(): ?string
{
return $this->intitule;
}
public function setIntitule(string $intitule): self
{
$this->intitule = $intitule;
return $this;
}
public function getSiret(): ?string
{
return $this->siret;
}
public function setSiret(?string $siret): self
{
$this->siret = $siret;
return $this;
}
public function getSociete(): ?Societe
{
return $this->societe;
}
public function setSociete(?Societe $societe): self
{
$this->societe = $societe;
return $this;
}
public function getAdresse(): ?Adresse
{
return $this->adresse;
}
public function setAdresse(?Adresse $adresse): self
{
$this->adresse = $adresse;
return $this;
}
/**
* @return Collection<int, Salle>
*/
public function getSalles(): Collection
{
return $this->salles;
}
public function setSalles(Collection $salles): self
{
$this->salles = $salles;
return $this;
}
public function addSalle(Salle $salle): self
{
if (!$this->salles->contains($salle)) {
$this->salles->add($salle);
$salle->setSite($this);
}
return $this;
}
public function removeSalle(Salle $salle): self
{
if ($this->salles->removeElement($salle)) {
// set the owning side to null (unless already changed)
if ($salle->getSite() === $this) {
$salle->setSite(null);
}
}
return $this;
}
public function isVirtuel(): ?bool
{
return $this->virtuel;
}
public function setVirtuel(?bool $virtuel): self
{
$this->virtuel = $virtuel;
return $this;
}
public function getNumeroUAI(): ?string
{
return $this->numeroUAI;
}
public function setNumeroUAI(?string $numeroUAI): self
{
$this->numeroUAI = $numeroUAI;
return $this;
}
}