feat(SPG-780): sync data session type

pull/59/head
Firman Ramdhani 2024-08-08 14:51:38 +07:00
parent 8de744bc58
commit 1dae9ec356
2 changed files with 63 additions and 0 deletions

View File

@ -44,6 +44,12 @@ import { TransactionTaxModel } from 'src/modules/transaction/transaction/data/mo
import { TransactionItemModel } from 'src/modules/transaction/transaction/data/models/transaction-item.model';
import { VipCodeCreatedHandler } from './domain/managers/vip-code.handler';
import { ItemRateModel } from 'src/modules/item-related/item-rate/data/models/item-rate.model';
import {
SeasonTypeDeletedHandler,
SeasonTypeUpdatedHandler,
} from './domain/managers/season-type.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';
@Module({
imports: [
@ -52,6 +58,7 @@ import { ItemRateModel } from 'src/modules/item-related/item-rate/data/models/it
[
ItemModel,
ItemRateModel,
SeasonPeriodModel,
UserModel,
TransactionModel,
TransactionTaxModel,
@ -82,6 +89,10 @@ import { ItemRateModel } from 'src/modules/item-related/item-rate/data/models/it
UserUpdatedHandler,
UserPrivilegeUpdateHandler,
SeasonTypeDeletedHandler,
SeasonTypeUpdatedHandler,
SeasonPeriodDataService,
TransactionDataService,
UserDataService,
ItemDataService,

View File

@ -0,0 +1,52 @@
import { EventsHandler, IEventHandler } from '@nestjs/cqrs';
import { CouchService } from '../../data/services/couch.service';
import { SeasonTypeDeletedEvent } from 'src/modules/season-related/season-type/domain/entities/event/season-type-deleted.event';
import { SeasonTypeChangeStatusEvent } from 'src/modules/season-related/season-type/domain/entities/event/season-type-change-status.event';
import { SeasonTypeUpdatedEvent } from 'src/modules/season-related/season-type/domain/entities/event/season-type-updated.event';
import { SeasonPeriodDataService } from 'src/modules/season-related/season-period/data/services/season-period-data.service';
@EventsHandler(SeasonTypeDeletedEvent)
export class SeasonTypeDeletedHandler
implements IEventHandler<SeasonTypeDeletedEvent>
{
constructor(private couchService: CouchService) {}
async handle(event: SeasonTypeDeletedEvent) {
console.log('deleted session type');
}
}
@EventsHandler(SeasonTypeChangeStatusEvent, SeasonTypeUpdatedEvent)
export class SeasonTypeUpdatedHandler
implements IEventHandler<SeasonTypeChangeStatusEvent>
{
constructor(
private couchService: CouchService,
private seasonPeriodService: SeasonPeriodDataService,
) {}
async handle(event: SeasonTypeChangeStatusEvent) {
const data = event.data.data;
const typeID = data.id;
const periods = await this.seasonPeriodService.getManyByOptions({
where: {
season_type_id: typeID,
},
relations: ['season_type'],
});
for (const period of periods) {
const dataID = period.id;
const couchData = await this.couchService.getDoc(dataID, 'season_period');
if (couchData) {
await this.couchService.updateDoc(
{
_id: dataID,
...period,
},
'season_period',
);
}
}
}
}