<?php
/**
* Created by simpson <simpsonwork@gmail.com>
* Date: 2019-04-02
* Time: 11:35
*/
namespace App\Twig;
use App\Entity\Location\City;
use App\Service\DefaultCityProvider;
use App\Repository\CityRepository;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
class DefaultCityExtension extends AbstractExtension
{
public function __construct(
protected DefaultCityProvider $defaultCityProvider,
private CityRepository $cityRepository
) {}
public function getFunctions()
{
return [
new TwigFunction('default_city', [$this, 'defaultCity']),
new TwigFunction('existing_cities', [$this, 'existingCities']),
];
}
public function existingCities(iterable $profiles): array
{
$ids = [];
foreach ($profiles as $profile) {
$ids[] = $profile->getCity()->getId();
}
return $this->cityRepository->findExistingByIds($ids);
}
public function defaultCity(): City
{
return $this->defaultCityProvider->getDefaultCity();
}
}