<?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\Twig;
use App\Common\LieuInterface;
use App\Entity\Departement;
use App\Entity\Region;
use App\Entity\Ville;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
final class LieuExtension extends AbstractExtension
{
public function getFilters(): array
{
return [
new TwigFilter('lieuLibelle', [$this, 'lieuLibelle']),
new TwigFilter('lieuRegion', [$this, 'lieuRegion']),
new TwigFilter('lieuDepartement', [$this, 'lieuDepartement']),
new TwigFilter('lieuVille', [$this, 'lieuVille']),
];
}
public function lieuLibelle(?LieuInterface $lieu): ?string
{
if ($lieu instanceof Ville) {
return $lieu->getLibelleAvecCodePostal();
}
if ($lieu instanceof Departement) {
return $lieu->getLibelleAvecCode();
}
if ($lieu) {
return $lieu->getLibelle();
}
return null;
}
public function lieuVille(?LieuInterface $lieu): ?Ville
{
if ($lieu instanceof Ville) {
return $lieu;
}
return null;
}
public function lieuDepartement(?LieuInterface $lieu): ?Departement
{
if ($lieu instanceof Ville) {
return $lieu->getDepartement();
}
if ($lieu instanceof Departement) {
return $lieu;
}
return null;
}
public function lieuRegion(?LieuInterface $lieu): ?Region
{
if ($lieu instanceof Ville) {
$lieu = $lieu->getDepartement();
}
if ($lieu instanceof Departement) {
$lieu = $lieu->getRegion();
}
if ($lieu instanceof Region) {
return $lieu;
}
return null;
}
}