From 27d80de0ec720c75f66e2f32bf91f499ab115cc2 Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Wed, 8 Jan 2025 13:09:59 +0700 Subject: [PATCH] feat: add restart task within same order --- src/controllers/07-task-controller.ts | 39 +++++++++++++++++++-------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/src/controllers/07-task-controller.ts b/src/controllers/07-task-controller.ts index d50e089..28b65cf 100644 --- a/src/controllers/07-task-controller.ts +++ b/src/controllers/07-task-controller.ts @@ -452,6 +452,7 @@ export class TaskActionController extends Controller { return await prisma.$transaction(async (tx) => { const promises = body.map(async (v) => { const record = await tx.task.findFirst({ + include: { requestWorkStep: true }, where: { step: v.step, requestWorkId: v.requestWorkId, @@ -459,6 +460,16 @@ export class TaskActionController extends Controller { }, }); if (!record) throw notFoundError("Task List"); + + if (v.taskStatus === TaskStatus.Restart && record.requestWorkStep.responsibleUserId) { + await tx.userTask.updateMany({ + where: { + taskOrderId: record.taskOrderId, + userId: record.requestWorkStep.responsibleUserId, + }, + data: { userTaskStatus: UserTaskStatus.Restart }, + }); + } return await tx.task.update({ where: { id: record.id }, data: { @@ -520,13 +531,7 @@ export class TaskActionController extends Controller { @Post("complete") @Security("keycloak") - async completeTaskOrder( - @Request() req: RequestWithUser, - @Path() taskOrderId: string, - @Query() submitUserId?: string, - ) { - submitUserId = submitUserId ?? req.user.sub; - + async completeTaskOrder(@Request() req: RequestWithUser, @Path() taskOrderId: string) { const record = await prisma.taskOrder.findFirst({ where: { id: taskOrderId } }); if (!record) throw notFoundError("Task Order"); @@ -540,16 +545,25 @@ export class TaskActionController extends Controller { tx.requestWorkStepStatus.updateMany({ where: { task: { - some: { taskOrderId, taskStatus: TaskStatus.Redo }, + some: { + taskOrderId, + taskStatus: { notIn: [TaskStatus.Canceled, TaskStatus.Success] }, + }, }, }, data: { workStatus: RequestWorkStatus.Ready }, }), + tx.task.updateMany({ + where: { + taskOrderId: taskOrderId, + taskStatus: TaskStatus.Restart, + }, + data: { taskStatus: TaskStatus.Redo }, + }), tx.task.updateMany({ where: { taskOrderId: taskOrderId, taskStatus: TaskStatus.Validate, - requestWorkStep: { responsibleUserId: submitUserId }, }, data: { taskStatus: TaskStatus.Complete }, }), @@ -712,13 +726,16 @@ export class UserTaskController extends Controller { userTask: userTaskStatus ? { some: - userTaskStatus !== UserTaskStatus.Pending + userTaskStatus !== UserTaskStatus.Pending && userTaskStatus !== UserTaskStatus.Restart ? { userTaskStatus, userId: req.user.sub, } : undefined, - none: userTaskStatus === UserTaskStatus.Pending ? { userId: req.user.sub } : undefined, + none: + userTaskStatus === UserTaskStatus.Pending || userTaskStatus === UserTaskStatus.Restart + ? { userId: req.user.sub } + : undefined, } : undefined, OR: queryOrNot(query, [