From 09b0133bf47ab066b13366cca32d9a7a31d2e526 Mon Sep 17 00:00:00 2001 From: shancheas Date: Thu, 19 Jun 2025 15:34:12 +0700 Subject: [PATCH] fix: update booking item pricing logic to use current rate based on season period IDs --- .../usecases/managers/booking-item.manager.ts | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/src/modules/booking-online/order/domain/usecases/managers/booking-item.manager.ts b/src/modules/booking-online/order/domain/usecases/managers/booking-item.manager.ts index 416635a..21577cb 100644 --- a/src/modules/booking-online/order/domain/usecases/managers/booking-item.manager.ts +++ b/src/modules/booking-online/order/domain/usecases/managers/booking-item.manager.ts @@ -42,8 +42,11 @@ export class BookingItemManager extends IndexItemManager { const { data, total } = result; const hasRates = (this.filterParam.season_period_ids?.length ?? 0) > 0; const items = data.map((item) => { + const currentRate = item.item_rates.find((rate) => + this.filterParam.season_period_ids.includes(rate.season_period_id), + ); const { item_rates, ...rest } = item; - const rate = item_rates?.[0]?.['price'] ?? rest.base_price; + const rate = currentRate?.['price'] ?? rest.base_price; return { ...rest, base_price: hasRates ? rate : rest.base_price, @@ -51,17 +54,4 @@ export class BookingItemManager extends IndexItemManager { }); return { total, data: items }; } - - setQueryFilter( - queryBuilder: SelectQueryBuilder, - ): SelectQueryBuilder { - const query = super.setQueryFilter(queryBuilder); - - if (this.filterParam.season_period_ids) { - query.andWhere(`item_rates.season_period_id In (:...seasonIds)`, { - seasonIds: this.filterParam.season_period_ids, - }); - } - return query; - } }