From af4093d439a1003fc0a87cf4c07f78c2194727c9 Mon Sep 17 00:00:00 2001 From: Kanjana Date: Thu, 3 Apr 2025 18:00:21 +0700 Subject: [PATCH] add router updata-messenger add update defaultMessengerId --- .../20250403074007_add/migration.sql | 5 +++ prisma/schema.prisma | 4 ++ src/controllers/06-request-list-controller.ts | 44 +++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 prisma/migrations/20250403074007_add/migration.sql diff --git a/prisma/migrations/20250403074007_add/migration.sql b/prisma/migrations/20250403074007_add/migration.sql new file mode 100644 index 0000000..c0d8bb6 --- /dev/null +++ b/prisma/migrations/20250403074007_add/migration.sql @@ -0,0 +1,5 @@ +-- AlterTable +ALTER TABLE "RequestData" ADD COLUMN "defaultMessengerId" TEXT; + +-- AddForeignKey +ALTER TABLE "RequestData" ADD CONSTRAINT "RequestData_defaultMessengerId_fkey" FOREIGN KEY ("defaultMessengerId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index acc8cec..666fa32 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -493,6 +493,7 @@ model User { requestWorkStepStatus RequestWorkStepStatus[] userTask UserTask[] + RequestData RequestData[] } model UserResponsibleArea { @@ -1469,6 +1470,9 @@ model RequestData { flow Json? + defaultMessenger User? @relation(fields: [defaultMessengerId], references: [id]) + defaultMessengerId String? + requestWork RequestWork[] createdAt DateTime @default(now()) diff --git a/src/controllers/06-request-list-controller.ts b/src/controllers/06-request-list-controller.ts index 4bf6710..646130c 100644 --- a/src/controllers/06-request-list-controller.ts +++ b/src/controllers/06-request-list-controller.ts @@ -234,6 +234,35 @@ export class RequestDataController extends Controller { return record; } + + @Post("updata-messenger") + @Security("keycloak") + async updateRequestData( + @Request() req: RequestWithUser, + @Body() + boby: { + defaultMessengerId: string; + requestDataId: string[]; + }, + ) { + const record = await prisma.requestData.updateManyAndReturn({ + where: { + id: { in: boby.requestDataId }, + quotation: { + registeredBranch: { + OR: permissionCond(req.user), + }, + }, + }, + data: { + defaultMessengerId: boby.defaultMessengerId, + }, + }); + + if (record.length <= 0) throw notFoundError("Request Data"); + + return record[0]; + } } @Route("/api/v1/request-data/{requestDataId}") @@ -891,6 +920,21 @@ export class RequestListController extends Controller { update: payload, }); + if (record.responsibleUserId === null) { + await prisma.requestWorkStepStatus.update({ + where: { + step_requestWorkId: { + step: step, + requestWorkId, + }, + responsibleUserId: null, + }, + data: { + responsibleUserId: record.requestWork?.request.defaultMessengerId, + }, + }); + } + switch (payload.workStatus) { case "Ready": if (record.requestWork.request.requestDataStatus === "Pending") {