From 1290fb748ef30eab53fef8a45181ebebf23374ff Mon Sep 17 00:00:00 2001 From: Methapon Metanipat Date: Thu, 7 Nov 2024 14:00:05 +0700 Subject: [PATCH] feat: add institution --- prisma/schema.prisma | 4 +-- .../04-flow-template-controller.ts | 36 +++++++++++++++++-- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index ff251d9..908cc55 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -982,7 +982,7 @@ model WorkflowTemplateStepInstitution { group String - workflowTemplateStep WorkflowTemplateStep @relation(fields: [workflowTemplateStepId], references: [id]) + workflowTemplateStep WorkflowTemplateStep @relation(fields: [workflowTemplateStepId], references: [id], onDelete: Cascade) workflowTemplateStepId String } @@ -997,7 +997,7 @@ model WorkflowTemplateStep { responsiblePerson WorkflowTemplateStepUser[] responsibleInstitution WorkflowTemplateStepInstitution[] - workflowTemplate WorkflowTemplate? @relation(fields: [workflowTemplateId], references: [id]) + workflowTemplate WorkflowTemplate? @relation(fields: [workflowTemplateId], references: [id], onDelete: Cascade) workflowTemplateId String? } diff --git a/src/controllers/04-flow-template-controller.ts b/src/controllers/04-flow-template-controller.ts index 8ded548..297905d 100644 --- a/src/controllers/04-flow-template-controller.ts +++ b/src/controllers/04-flow-template-controller.ts @@ -35,6 +35,7 @@ type WorkflowPayload = { type?: string | null; value?: string[] | null; responsiblePersonId?: string[]; + responsibleInstitution?: string[]; }[]; registeredBranchId?: string; status?: Status; @@ -81,6 +82,7 @@ export class FlowTemplateController extends Controller { responsiblePerson: { include: { user: true }, }, + responsibleInstitution: true, }, }, }, @@ -90,12 +92,24 @@ export class FlowTemplateController extends Controller { }), prisma.workflowTemplate.count({ where }), ]); - return { result, page, pageSize, total }; + + return { + result: result.map((r) => ({ + ...r, + step: r.step.map((v) => ({ + ...v, + responsibleInstitution: v.responsibleInstitution.map((institution) => institution.group), + })), + })), + page, + pageSize, + total, + }; } @Get("{templateId}") async getFlowTemplateById(@Request() _req: RequestWithUser, @Path() templateId: string) { - return await prisma.workflowTemplate.findFirst({ + const record = await prisma.workflowTemplate.findFirst({ include: { step: { include: { @@ -103,12 +117,23 @@ export class FlowTemplateController extends Controller { responsiblePerson: { include: { user: true }, }, + responsibleInstitution: true, }, }, }, where: { id: templateId }, orderBy: { createdAt: "asc" }, }); + + if (!record) throw notFoundError("FlowTemplate"); + + return { + ...record, + step: record.step.map((v) => ({ + ...v, + responsibleInstitution: v.responsibleInstitution.map((institution) => institution.group), + })), + }; } @Post() @@ -176,6 +201,9 @@ export class FlowTemplateController extends Controller { userId: id, })), }, + responsibleInstitution: { + create: v.responsibleInstitution?.map((group) => ({ group })), + }, })), }, }, @@ -241,6 +269,10 @@ export class FlowTemplateController extends Controller { skipDuplicates: true, }, }, + responsibleInstitution: { + deleteMany: {}, + create: v.responsibleInstitution?.map((group) => ({ group })), + }, }, })), },