Extend plugin to use either country or region

This commit is contained in:
Björn Fromme
2022-08-24 18:37:57 +02:00
parent e7bb19f9cd
commit 78469ecf51
2 changed files with 11 additions and 5 deletions
@@ -58,7 +58,7 @@ class CityController extends ActionController
/**
* @param City $city
*/
public function detailAction(City $city = null)
public function detailAction(City $city = null): void
{
if (null === $city) {
$cityUid = $this->settings['cityUid'];
@@ -81,12 +81,14 @@ class CityController extends ActionController
]);
}
public function teasergroupAction()
public function teasergroupAction(): void
{
$regionUid = (int)$this->settings['regionUid'];
$countryUid = (int)$this->settings['countryUid'];
$season = $this->settings['season'];
$citiesPid = (int)$this->settings['citiesStoragePid'];
$cities = $this->cityRepository->getTeasersByRegionAndSeason($regionUid, $season, $citiesPid);
$cities = $this->cityRepository->getTeasersByCountryOrRegionAndSeason($regionUid, $countryUid, $season, $citiesPid);
$data = $this->configurationManager->getContentObject()->data;
$this->view->assign('data', $data);
$this->view->assign('teasers', $cities);
@@ -31,17 +31,21 @@ use EP\EpProducts\Domain\Model\AbstractDestination;
class CityRepository extends AbstractRepository
{
public function getTeasersByRegionAndSeason(int $regionUid, string $season = 'w', int $storagePid = 0)
public function getTeasersByCountryOrRegionAndSeason(int $regionUid = 0, int $countryUid = 0, string $season = 'w', int $storagePid = 0)
{
if ($season === null) {
$season = AbstractDestination::SEASON_WINTER;
}
$query = $this->createQuery();
$constraints = [
$query->equals('region', $regionUid),
$query->equals('season', $season),
$query->equals('excludeFromTeasergroups', 0)
];
if (0 < $regionUid) {
$constraints[] = $query->equals('region', $regionUid);
} elseif (0 < $countryUid) {
$constraints[] = $query->equals('country', $countryUid);
}
if (0 < $storagePid) {
$constraints[] = $query->equals('pid', $storagePid);
}