diff --git a/src/modules/item-related/item/data/services/item-data.service.ts b/src/modules/item-related/item/data/services/item-data.service.ts index 534d542..70656a8 100644 --- a/src/modules/item-related/item/data/services/item-data.service.ts +++ b/src/modules/item-related/item/data/services/item-data.service.ts @@ -6,6 +6,7 @@ import { ItemModel } from '../models/item.model'; import { CONNECTION_NAME } from 'src/core/strings/constants/base.constants'; import { Repository } from 'typeorm'; import { ItemRateModel } from 'src/modules/item-related/item-rate/data/models/item-rate.model'; +import { ItemRateDataService } from 'src/modules/item-related/item-rate/data/services/item-rate-data.service'; @Injectable() export class ItemDataService extends BaseDataService { @@ -15,6 +16,7 @@ export class ItemDataService extends BaseDataService { @InjectRepository(ItemRateModel, CONNECTION_NAME.DEFAULT) private repoItemRate: Repository, + private rateService: ItemRateDataService, ) { super(repo); } @@ -31,4 +33,34 @@ export class ItemDataService extends BaseDataService { { price: newPrice }, ); } + + async updateBreakdownBundling(id: string): Promise { + const item_rates = await this.repoItemRate.find({ + where: { + item_id: id, + }, + }); + + for (const rate of item_rates) { + const { item_id, season_period_id } = rate; + const bundling = await this.repo.findOne({ + relations: ['bundling_items'], + where: { + id: item_id, + }, + }); + + console.log(bundling.name); + const ids = bundling.bundling_items.map((item) => item.id); + const totalRates = await this.rateService.itemsRateTotal( + season_period_id, + ids, + ); + this.rateService.updateRatesBySeasonItem( + season_period_id, + bundling.id, + totalRates, + ); + } + } } diff --git a/src/modules/item-related/item/domain/entities/item.entity.ts b/src/modules/item-related/item/domain/entities/item.entity.ts index 53620cd..90fa227 100644 --- a/src/modules/item-related/item/domain/entities/item.entity.ts +++ b/src/modules/item-related/item/domain/entities/item.entity.ts @@ -16,4 +16,5 @@ export interface ItemEntity extends BaseStatusEntity { use_queue: boolean; show_to_booking: boolean; + breakdown_bundling?: boolean; } diff --git a/src/modules/item-related/item/domain/usecases/managers/update-item.manager.ts b/src/modules/item-related/item/domain/usecases/managers/update-item.manager.ts index 12d972a..510da69 100644 --- a/src/modules/item-related/item/domain/usecases/managers/update-item.manager.ts +++ b/src/modules/item-related/item/domain/usecases/managers/update-item.manager.ts @@ -31,6 +31,10 @@ export class UpdateItemManager extends BaseUpdateManager { newBasePrice, itemId, ); + + if (this.result.breakdown_bundling) { + this.dataService.updateBreakdownBundling(itemId); + } return; }