src/Twig/DefaultCityExtension.php line 41

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by simpson <simpsonwork@gmail.com>
  4.  * Date: 2019-04-02
  5.  * Time: 11:35
  6.  */
  7. namespace App\Twig;
  8. use App\Entity\Location\City;
  9. use App\Service\DefaultCityProvider;
  10. use App\Repository\CityRepository;
  11. use Twig\Extension\AbstractExtension;
  12. use Twig\TwigFunction;
  13. class DefaultCityExtension extends AbstractExtension
  14. {
  15.     public function __construct(
  16.         protected DefaultCityProvider $defaultCityProvider,
  17.         private CityRepository $cityRepository
  18.     ) {}
  19.     public function getFunctions()
  20.     {
  21.         return [
  22.             new TwigFunction('default_city', [$this, 'defaultCity']),
  23.             new TwigFunction('existing_cities', [$this, 'existingCities']),
  24.         ];
  25.     }
  26.     public function existingCities(iterable $profiles): array
  27.     {
  28.         $ids = [];
  29.         foreach ($profiles as $profile) {
  30.             $ids[] = $profile->getCity()->getId();
  31.         }
  32.         return $this->cityRepository->findExistingByIds($ids);
  33.     }
  34.     public function defaultCity(): City
  35.     {
  36.         return $this->defaultCityProvider->getDefaultCity();
  37.     }
  38. }