fix(rate) perbaikan update rate

pull/40/head
Aswin Ashar Abdullah 2024-07-26 15:05:28 +07:00
parent e68524380a
commit 82105e8214
3 changed files with 54 additions and 2 deletions

View File

@ -0,0 +1,43 @@
import { EventsHandler, IEventHandler } from '@nestjs/cqrs';
import { EMPTY_UUID } from 'src/core/strings/constants/base.constants';
import { ItemCreatedEvent } from 'src/modules/item-related/item/domain/entities/event/item-created.event';
import { SeasonPeriodDataService } from 'src/modules/season-related/season-period/data/services/season-period-data.service';
import { Not } from 'typeorm';
import { ItemRateModel } from '../../../data/models/item-rate.model';
import { ItemRateDataService } from '../../../data/services/item-rate-data.service';
@EventsHandler(ItemCreatedEvent)
export class SeasonPeriodHolidayHandler
implements IEventHandler<ItemCreatedEvent>
{
constructor(
private seasonService: SeasonPeriodDataService,
private dataService: ItemRateDataService,
) {}
async handle(event: ItemCreatedEvent) {
const rates = [];
const seasons = await this.seasonService.getManyByOptions({
where: {
id: Not(EMPTY_UUID),
},
});
const queryRunner = this.dataService
.getRepository()
.manager.connection.createQueryRunner();
if (seasons.length) {
for (const season of seasons) {
const rate = new ItemRateModel();
rate.item_id = event.data.id;
rate.season_period_id = season.id;
rates.push(rate);
}
}
// create batch
await this.dataService.createBatch(queryRunner, ItemRateModel, rates);
}
}

View File

@ -16,16 +16,24 @@ import { UpdateItemRateManager } from './domain/usecases/managers/update-item-ra
import { DetailItemRateManager } from './domain/usecases/managers/detail-item-rate.manager'; import { DetailItemRateManager } from './domain/usecases/managers/detail-item-rate.manager';
import { BatchDeleteItemRateManager } from './domain/usecases/managers/batch-delete-item-rate.manager'; import { BatchDeleteItemRateManager } from './domain/usecases/managers/batch-delete-item-rate.manager';
import { ItemRateModel } from './data/models/item-rate.model'; import { ItemRateModel } from './data/models/item-rate.model';
import { SeasonPeriodHolidayHandler } from './domain/usecases/handlers/item-created.handler';
import { SeasonPeriodDataService } from 'src/modules/season-related/season-period/data/services/season-period-data.service';
import { SeasonPeriodModel } from 'src/modules/season-related/season-period/data/models/season-period.model';
@Global() @Global()
@Module({ @Module({
imports: [ imports: [
ConfigModule.forRoot(), ConfigModule.forRoot(),
TypeOrmModule.forFeature([ItemRateModel], CONNECTION_NAME.DEFAULT), TypeOrmModule.forFeature(
[ItemRateModel, SeasonPeriodModel],
CONNECTION_NAME.DEFAULT,
),
CqrsModule, CqrsModule,
], ],
controllers: [ItemRateDataController, ItemRateReadController], controllers: [ItemRateDataController, ItemRateReadController],
providers: [ providers: [
SeasonPeriodHolidayHandler,
IndexItemRateManager, IndexItemRateManager,
DetailItemRateManager, DetailItemRateManager,
CreateItemRateManager, CreateItemRateManager,
@ -33,6 +41,7 @@ import { ItemRateModel } from './data/models/item-rate.model';
UpdateItemRateManager, UpdateItemRateManager,
BatchDeleteItemRateManager, BatchDeleteItemRateManager,
SeasonPeriodDataService,
ItemRateDataService, ItemRateDataService,
ItemRateReadService, ItemRateReadService,

View File

@ -46,7 +46,7 @@ export class SeasonPeriodDataOrchestrator extends BaseDataTransactionOrchestrato
async update(dataId, data, updatePrice = false): Promise<SeasonPeriodEntity> { async update(dataId, data, updatePrice = false): Promise<SeasonPeriodEntity> {
this.updateManager.setData(dataId, { this.updateManager.setData(dataId, {
...data, ...data,
isUpdatePrice: updatePrice isUpdatePrice: updatePrice,
}); });
this.updateManager.setService(this.serviceData, TABLE_NAME.SEASON_PERIOD); this.updateManager.setService(this.serviceData, TABLE_NAME.SEASON_PERIOD);
await this.updateManager.execute(); await this.updateManager.execute();