From 9cd50ad817ec13638d4e2a5c569840efe1aeae53 Mon Sep 17 00:00:00 2001 From: Aswin Ashar Abdullah Date: Fri, 26 Jul 2024 15:43:34 +0700 Subject: [PATCH] fix(SPG-655) Item Rate saat filter harga jadi mengambil base price (kemungkinan ada salah ambil priority --- src/core/strings/constants/base.constants.ts | 10 ++++++ .../managers/index-item-rate.manager.ts | 36 +++++++++++++------ 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/src/core/strings/constants/base.constants.ts b/src/core/strings/constants/base.constants.ts index 0ce2413..0e1f7d4 100644 --- a/src/core/strings/constants/base.constants.ts +++ b/src/core/strings/constants/base.constants.ts @@ -20,6 +20,16 @@ export enum ORDER_TYPE { DESC = 'DESC', } +export const DAY = [ + 'minggu', + 'senin', + 'selasa', + 'rabu', + 'kamis', + 'jumat', + 'sabtu', +]; + export enum CONNECTION_NAME { DEFAULT = 'default', } diff --git a/src/modules/item-related/item-rate/domain/usecases/managers/index-item-rate.manager.ts b/src/modules/item-related/item-rate/domain/usecases/managers/index-item-rate.manager.ts index 7c29f07..f0aae90 100644 --- a/src/modules/item-related/item-rate/domain/usecases/managers/index-item-rate.manager.ts +++ b/src/modules/item-related/item-rate/domain/usecases/managers/index-item-rate.manager.ts @@ -6,7 +6,7 @@ import { RelationParam, } from 'src/core/modules/domain/entities/base-filter.entity'; import { ItemEntity } from 'src/modules/item-related/item/domain/entities/item.entity'; -import { STATUS } from 'src/core/strings/constants/base.constants'; +import { DAY, STATUS } from 'src/core/strings/constants/base.constants'; @Injectable() export class IndexItemRateManager extends BaseIndexManager { @@ -26,18 +26,32 @@ export class IndexItemRateManager extends BaseIndexManager { d <= new Date(this.filterParam.end_date); d.setDate(d.getDate() + 1) ) { - const rate = item['item_rates']?.find( - (rate) => - rate.season_period?.status == STATUS.ACTIVE && - d >= new Date(rate.season_period.start_date) && - d <= new Date(rate.season_period.end_date), - ); + const day: string = DAY[d.getDay()]; + const rates = item['item_rates'] + ?.filter((rate) => { + const days: string[] = rate.season_period.days ?? []; + if (rate.season_period.priority == 2) { + return ( + rate.season_period?.status == STATUS.ACTIVE && + d >= new Date(rate.season_period.start_date) && + d <= new Date(rate.season_period.end_date) && + days.includes(day) + ); + } else { + return ( + rate.season_period?.status == STATUS.ACTIVE && + d >= new Date(rate.season_period.start_date) && + d <= new Date(rate.season_period.end_date) + ); + } + }) + .sort((a, b) => a.season_period.priority - b.season_period.priority); prices.push({ date: new Date(d), - price: rate?.price ?? item.base_price, - season_type: rate?.season_period?.season_type ?? null, - holiday_name: rate?.season_period?.holiday_name ?? null, + price: rates[0]?.price ?? item.base_price, + season_type: rates[0]?.season_period?.season_type ?? null, + holiday_name: rates[0]?.season_period?.holiday_name ?? null, }); } @@ -91,6 +105,8 @@ export class IndexItemRateManager extends BaseIndexManager { 'season_period.holiday_name', 'season_period.start_date', 'season_period.end_date', + 'season_period.priority', + 'season_period.days', 'season_type.id', 'season_type.name',