feat: include concept popup data in teaser data for eligibility check

This commit is contained in:
Björn Fromme
2026-07-14 14:31:46 +02:00
parent dc44a8ca6d
commit 12bcb9360c
@@ -17,7 +17,8 @@ class ProductRepository extends AbstractRepository
$qb $qb
->select( ->select(
'date.concept as conceptUid', 'date.concept_name as conceptName', 'date.concept as conceptUid', 'date.concept_name as conceptName',
'date.concept_code as conceptCode', 'date.product as productUid', 'date.product_name as productName', 'date.concept_code as conceptCode', 'con.popup_text as conceptPopupText',
'date.product as productUid', 'date.product_name as productName',
'date.product_detail_page as productDetailPage', 'date.product_feature as productFeature', 'date.product_detail_page as productDetailPage', 'date.product_feature as productFeature',
'date.country as countryUid','date.country_name as countryName', 'date.country_code as countryCode', 'date.country as countryUid','date.country_name as countryName', 'date.country_code as countryCode',
'date.region as regionUid', 'date.region_name as regionName', 'date.region_feature as regionFeature', 'date.region as regionUid', 'date.region_name as regionName', 'date.region_feature as regionFeature',
@@ -30,6 +31,7 @@ class ProductRepository extends AbstractRepository
'date.available as available', 'date.pseudo_price as pseudoPrice' 'date.available as available', 'date.pseudo_price as pseudoPrice'
) )
->from('tx_epproducts_domain_model_date', 'date') ->from('tx_epproducts_domain_model_date', 'date')
->leftJoin('date', 'tx_epproducts_domain_model_concept', 'con', 'date.concept = con.uid')
->where($qb->expr()->in( ->where($qb->expr()->in(
'date.product', 'date.product',
$qb->createNamedParameter($productUids, Connection::PARAM_INT_ARRAY)) $qb->createNamedParameter($productUids, Connection::PARAM_INT_ARRAY))
@@ -60,7 +62,7 @@ class ProductRepository extends AbstractRepository
->select( ->select(
'date.concept as conceptUid', 'date.concept_name as conceptName', 'date.concept as conceptUid', 'date.concept_name as conceptName',
'date.concept_code as conceptCode', 'date.concept_sorting as conceptSorting', 'date.concept_code as conceptCode', 'date.concept_sorting as conceptSorting',
'date.concept_popup_text as conceptPopupText', 'con.popup_text as conceptPopupText',
'date.product as productUid', 'date.product_name as productName', 'date.product as productUid', 'date.product_name as productName',
'date.product_detail_page as productDetailPage', 'date.product_feature as productFeature', 'date.product_detail_page as productDetailPage', 'date.product_feature as productFeature',
'date.daytrip as daytrip', 'date.country as countryUid','date.country_name as countryName', 'date.daytrip as daytrip', 'date.country as countryUid','date.country_name as countryName',
@@ -78,6 +80,7 @@ class ProductRepository extends AbstractRepository
'room.type as roomType' 'room.type as roomType'
) )
->from('tx_epproducts_domain_model_date', 'date') ->from('tx_epproducts_domain_model_date', 'date')
->leftJoin('date', 'tx_epproducts_domain_model_concept', 'con', 'date.concept = con.uid')
->leftJoin('date', 'tx_epproducts_domain_model_room', 'room', 'room.date = date.uid') ->leftJoin('date', 'tx_epproducts_domain_model_room', 'room', 'room.date = date.uid')
->where($qb->expr()->andX( ->where($qb->expr()->andX(
$qb->expr()->eq('date.product_searchable', 1), $qb->expr()->eq('date.product_searchable', 1),
@@ -125,31 +128,35 @@ class ProductRepository extends AbstractRepository
$qb $qb
->select( ->select(
'product as productUid', 'product_name as productName', 'product_detail_page as productDetailPage', 'date.product as productUid', 'date.product_name as productName',
'product_feature as productFeature', 'product_teaser as productTeaser', 'product_fact as productFact', 'date.product_detail_page as productDetailPage', 'date.product_feature as productFeature',
'product_slug as productSlug', 'date.product_teaser as productTeaser', 'date.product_fact as productFact',
'hotel as hotelUid', 'hotel_fact as hotelFact', 'hotel_name as hotelName', 'date.product_slug as productSlug',
'hotel_category as hotelCategory', 'region_fact as regionFact', 'region_name as regionName', 'date.hotel as hotelUid', 'date.hotel_fact as hotelFact', 'date.hotel_name as hotelName',
'region_feature as regionFeature', 'date.hotel_category as hotelCategory', 'date.region_fact as regionFact',
'country_name as countryName', 'country_code as countryCode', 'date.region_name as regionName', 'date.region_feature as regionFeature',
'date_start as dateStart', 'date_end as dateEnd', 'uid as dateUid', 'min_price as minPrice', 'date.country_name as countryName', 'date.country_code as countryCode',
'pseudo_price as pseudoPrice', 'nights as nights', 'available as available', 'season as season', 'date.date_start as dateStart', 'date.date_end as dateEnd', 'date.uid as dateUid',
'skipass_included as skiPassIncluded', 'bus_included as busIncluded', 'date.min_price as minPrice', 'date.pseudo_price as pseudoPrice',
'earlybird', 'new', 'daytrip', 'hide_booking_button as hideBookingButton', 'date.nights as nights', 'date.available as available', 'date.season as season',
'low_contingent as lowContingent', 'concept as conceptUid', 'concept_code as conceptCode', 'date.skipass_included as skiPassIncluded', 'date.bus_included as busIncluded',
'concept_name as conceptName', 'concept_popup_text as conceptPopupText', 'board', 'new' 'date.earlybird', 'date.new', 'date.daytrip', 'date.hide_booking_button as hideBookingButton',
'date.low_contingent as lowContingent', 'date.concept as conceptUid',
'date.concept_code as conceptCode', 'date.concept_name as conceptName',
'con.popup_text as conceptPopupText', 'date.board'
) )
->from('tx_epproducts_domain_model_date', 'date') ->from('tx_epproducts_domain_model_date', 'date')
->where('date_start >= NOW()') ->leftJoin('date', 'tx_epproducts_domain_model_concept', 'con', 'date.concept = con.uid')
->groupBy('product') ->where('date.date_start >= NOW()')
->groupBy('date.product')
->addGroupBy('date.hotel') ->addGroupBy('date.hotel')
->addGroupBy('date.date_start') ->addGroupBy('date.date_start')
->addGroupBy('date.nights') ->addGroupBy('date.nights')
->having('available > 0') ->having('date.available > 0')
->orderBy('important', 'DESC') ->orderBy('date.important', 'DESC')
->addOrderBy('new', 'DESC') ->addOrderBy('date.new', 'DESC')
->addOrderBy('concept_sorting') ->addOrderBy('date.concept_sorting')
->addOrderBy('date_start') ->addOrderBy('date.date_start')
; ;
if ($filterSettings['productsPid']) { if ($filterSettings['productsPid']) {
@@ -165,10 +172,10 @@ class ProductRepository extends AbstractRepository
} }
if (empty($filterSettings['productUid'])) { if (empty($filterSettings['productUid'])) {
$qb->andWhere($qb->expr()->eq('product_searchable', 1)); $qb->andWhere($qb->expr()->eq('date.product_searchable', 1));
} else { } else {
$qb->andWhere($qb->expr()->eq( $qb->andWhere($qb->expr()->eq(
'product', 'date.product',
$qb->createNamedParameter($filterSettings['productUid'], Connection::PARAM_INT)) $qb->createNamedParameter($filterSettings['productUid'], Connection::PARAM_INT))
); );
} }