src/Twig/LieuExtension.php line 36

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4.  * Copyright (C) Office National de Publication et de Communication - All Rights Reserved
  5.  *
  6.  * Unauthorized copying of this file, via any medium is strictly prohibited by law
  7.  * This file is proprietary and confidential
  8.  */
  9. namespace App\Twig;
  10. use App\Common\LieuInterface;
  11. use App\Entity\Departement;
  12. use App\Entity\Region;
  13. use App\Entity\Ville;
  14. use Twig\Extension\AbstractExtension;
  15. use Twig\TwigFilter;
  16. final class LieuExtension extends AbstractExtension
  17. {
  18.     public function getFilters(): array
  19.     {
  20.         return [
  21.             new TwigFilter('lieuLibelle', [$this'lieuLibelle']),
  22.             new TwigFilter('lieuRegion', [$this'lieuRegion']),
  23.             new TwigFilter('lieuDepartement', [$this'lieuDepartement']),
  24.             new TwigFilter('lieuVille', [$this'lieuVille']),
  25.         ];
  26.     }
  27.     public function lieuLibelle(?LieuInterface $lieu): ?string
  28.     {
  29.         if ($lieu instanceof Ville) {
  30.             return $lieu->getLibelleAvecCodePostal();
  31.         }
  32.         if ($lieu instanceof Departement) {
  33.             return $lieu->getLibelleAvecCode();
  34.         }
  35.         if ($lieu) {
  36.             return $lieu->getLibelle();
  37.         }
  38.         return null;
  39.     }
  40.     public function lieuVille(?LieuInterface $lieu): ?Ville
  41.     {
  42.         if ($lieu instanceof Ville) {
  43.             return $lieu;
  44.         }
  45.         return null;
  46.     }
  47.     public function lieuDepartement(?LieuInterface $lieu): ?Departement
  48.     {
  49.         if ($lieu instanceof Ville) {
  50.             return $lieu->getDepartement();
  51.         }
  52.         if ($lieu instanceof Departement) {
  53.             return $lieu;
  54.         }
  55.         return null;
  56.     }
  57.     public function lieuRegion(?LieuInterface $lieu): ?Region
  58.     {
  59.         if ($lieu instanceof Ville) {
  60.             $lieu $lieu->getDepartement();
  61.         }
  62.         if ($lieu instanceof Departement) {
  63.             $lieu $lieu->getRegion();
  64.         }
  65.         if ($lieu instanceof Region) {
  66.             return $lieu;
  67.         }
  68.         return null;
  69.     }
  70. }