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 * @param City $city
*/ */
public function detailAction(City $city = null) public function detailAction(City $city = null): void
{ {
if (null === $city) { if (null === $city) {
$cityUid = $this->settings['cityUid']; $cityUid = $this->settings['cityUid'];
@@ -81,12 +81,14 @@ class CityController extends ActionController
]); ]);
} }
public function teasergroupAction() public function teasergroupAction(): void
{ {
$regionUid = (int)$this->settings['regionUid']; $regionUid = (int)$this->settings['regionUid'];
$countryUid = (int)$this->settings['countryUid'];
$season = $this->settings['season']; $season = $this->settings['season'];
$citiesPid = (int)$this->settings['citiesStoragePid']; $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; $data = $this->configurationManager->getContentObject()->data;
$this->view->assign('data', $data); $this->view->assign('data', $data);
$this->view->assign('teasers', $cities); $this->view->assign('teasers', $cities);
@@ -31,17 +31,21 @@ use EP\EpProducts\Domain\Model\AbstractDestination;
class CityRepository extends AbstractRepository 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) { if ($season === null) {
$season = AbstractDestination::SEASON_WINTER; $season = AbstractDestination::SEASON_WINTER;
} }
$query = $this->createQuery(); $query = $this->createQuery();
$constraints = [ $constraints = [
$query->equals('region', $regionUid),
$query->equals('season', $season), $query->equals('season', $season),
$query->equals('excludeFromTeasergroups', 0) $query->equals('excludeFromTeasergroups', 0)
]; ];
if (0 < $regionUid) {
$constraints[] = $query->equals('region', $regionUid);
} elseif (0 < $countryUid) {
$constraints[] = $query->equals('country', $countryUid);
}
if (0 < $storagePid) { if (0 < $storagePid) {
$constraints[] = $query->equals('pid', $storagePid); $constraints[] = $query->equals('pid', $storagePid);
} }