40 lines
1.3 KiB
TypeScript
40 lines
1.3 KiB
TypeScript
import { EventsHandler, IEventHandler } from '@nestjs/cqrs';
|
|
import { ChangeDocEvent } from 'src/modules/configuration/couch/domain/events/change-doc.event';
|
|
import { PosLogService } from '../../data/services/pos-log.service';
|
|
import { PosLogModel } from '../../data/models/pos-log.model';
|
|
import { PosLogType } from '../entities/pos-log.entity';
|
|
|
|
@EventsHandler(ChangeDocEvent)
|
|
export class RecordPosLogHandler implements IEventHandler<ChangeDocEvent> {
|
|
constructor(private dataService: PosLogService) {}
|
|
|
|
async handle(event: ChangeDocEvent) {
|
|
try {
|
|
const database = event.data.database;
|
|
const data = event.data.data;
|
|
|
|
if (!['pos_cash_activity', 'pos_activity'].includes(database)) return;
|
|
|
|
const queryRunner = this.dataService
|
|
.getRepository()
|
|
.manager.connection.createQueryRunner();
|
|
|
|
const activity = new PosLogModel();
|
|
|
|
Object.assign(activity, {
|
|
id: data._id,
|
|
type: PosLogType[data.type],
|
|
total_balance: data.withdrawal_cash ?? data.opening_cash_balance,
|
|
pos_number: data.pos_number,
|
|
creator_id: data.pos_admin?.id,
|
|
creator_name: data.pos_admin?.name,
|
|
created_at: data.created_at,
|
|
});
|
|
|
|
await this.dataService.create(queryRunner, PosLogModel, activity);
|
|
} catch (error) {
|
|
console.log('error handling pos activity couch');
|
|
}
|
|
}
|
|
}
|