Chonselgama Coulibaly
01/23/2022, 11:44 AMimport { Prisma } from "@prisma/client";
import { EntityStatusHistoryService } from "src/modules/task/services/entity-status-history.service";
import { EntityStatusService } from "src/modules/task/services/entity-status.service";
import { SaeiStatusEnum } from "src/utils/enums/saei-status.enum";
import { PrismaService } from "src/utils/prisma/prisma.service";
export function adjournApplicationStatusHistoryMiddleware(): Prisma.Middleware {
return async function (
params: Prisma.MiddlewareParams,
next: (params: Prisma.MiddlewareParams) => Promise<any>,
): Promise<Prisma.Middleware> {
if (params.model == 'Entity' && params.action == 'update') {
console.log("IN FIRST CONDITION");
const statusId = (
await new EntityStatusService(new PrismaService()).getEntityStatus(SaeiStatusEnum.AJOURNEE)
).id;
const lastEntityStatusHistory =
await new EntityStatusHistoryService(new PrismaService()).getLastEntityStatusHistory(
params.args.where.id,
);
if (
params.args.data.entityStatusId === statusId &&
lastEntityStatusHistory.statusId !== statusId
) {
console.log("IN SECOND CONDITION");
await new EntityStatusHistoryService(new PrismaService()).createEntityStatusHistory(statusId,params.args.where.id);
}
}
return next(params);
}
} ;
IN APP MODULE
import { HttpModule } from '@nestjs/axios';
import { Module } from '@nestjs/common';
import { ScheduleModule } from '@nestjs/schedule';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { TaskHandlerModule } from './modules/task/task.module';
import { PrismaModule } from "nestjs-prisma";
import { adjournApplicationStatusHistoryMiddleware } from './middleware/adjourn-application-status-history.middleware';
@Module({
imports: [
ScheduleModule.forRoot(),
TaskHandlerModule,
HttpModule,
PrismaModule.forRoot({
isGlobal: true,
prismaServiceOptions: {
middlewares: [adjournApplicationStatusHistoryMiddleware()],
prismaOptions: { log: ['info'] }
},
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}