<?php
declare(strict_types=1);
/*
* Copyright (C) Office National de Publication et de Communication - All Rights Reserved
*
* Unauthorized copying of this file, via any medium is strictly prohibited by law
* This file is proprietary and confidential
*/
namespace App\Entity;
use App\Common\CoordonneesInterface;
use App\Common\LieuInterface;
use App\Entity\Common\IdAsStringTrait;
use App\Entity\Common\IsEmptyTrait;
use App\Entity\Common\UpdatableTrait;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* @ORM\Entity(repositoryClass="App\Repository\DepartementRepository")
* @ORM\Table(
* name="departement",
* indexes={
* @ORM\Index(columns={"libelle", "slug"})
* }
* )
*/
class Departement implements LieuInterface
{
use DepartementElasticTrait;
use IdAsStringTrait;
use IsEmptyTrait;
use UpdatableTrait;
/**
* @ORM\Column(type="string", length=150, nullable=true, unique=true)
* @Gedmo\Slug(fields={"libelle", "id"})
*/
private $slug;
/** @ORM\Column(type="string", nullable=true) */
private $libelle;
/** @ORM\ManyToOne(targetEntity="AncienneRegion", inversedBy="departements", cascade={"persist"}) */
private $ancienneRegion;
/**
* @ORM\OneToMany(targetEntity="Ville", mappedBy="departement")
* @ORM\OrderBy({"libelle": "ASC"})
*/
private $villes;
/** @ORM\OneToOne(targetEntity="DepartementCoordonnees", mappedBy="departement") */
private $coordonnees;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Etablissement", mappedBy="departement")
*/
private $etablissements;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Region", inversedBy="departements")
*/
private $region;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $onglets;
public function __construct()
{
$this->villes = new ArrayCollection();
$this->etablissements = new ArrayCollection();
}
public function setSlug(string $slug): void
{
$this->slug = $slug;
}
public function getSlug(): ?string
{
return $this->slug;
}
public function setLibelle(string $libelle): void
{
$this->libelle = $libelle;
}
public function getLibelle(): ?string
{
return $this->libelle;
}
public function getLibelleAvecCode(): ?string
{
$libelle = $this->libelle;
if ($this->id) {
$libelle = trim($libelle.' ('.$this->id.')');
}
return $libelle;
}
public function setAncienneRegion(AncienneRegion $ancienneRegion): void
{
$this->ancienneRegion = $ancienneRegion;
}
public function getAncienneRegion(): ?AncienneRegion
{
return $this->ancienneRegion;
}
public function addVille(Ville $ville): void
{
$this->villes[] = $ville;
}
public function removeVille(Ville $ville): void
{
$this->villes->removeElement($ville);
}
public function getVilles(): Collection
{
return $this->villes;
}
public function setCoordonnees(DepartementCoordonnees $coordonnees): void
{
$this->coordonnees = $coordonnees;
}
public function getCoordonnees(): ?CoordonneesInterface
{
return $this->coordonnees;
}
public function getRegion(): ?Region
{
$ancienneRegion = $this->getAncienneRegion();
return $ancienneRegion ? $ancienneRegion->getRegion() : null;
}
/**
* @return Collection|Etablissement[]
*/
public function getEtablissements(): Collection
{
return $this->etablissements;
}
public function addEtablissement(Etablissement $etablissement): self
{
if (!$this->etablissements->contains($etablissement)) {
$this->etablissements[] = $etablissement;
$etablissement->setDepartement($this);
}
return $this;
}
public function removeEtablissement(Etablissement $etablissement): self
{
if ($this->etablissements->contains($etablissement)) {
$this->etablissements->removeElement($etablissement);
// set the owning side to null (unless already changed)
if ($etablissement->getDepartement() === $this) {
$etablissement->setDepartement(null);
}
}
return $this;
}
public function setRegion(?Region $region): self
{
$this->region = $region;
return $this;
}
public function getOnglets(): ?string
{
return $this->onglets;
}
public function setOnglets(?string $onglets): self
{
$this->onglets = $onglets;
return $this;
}
}