feat: update task order revert status if removed

This commit is contained in:
Methapon2001 2025-01-22 16:47:20 +07:00
parent b1c56b7c4e
commit 87a1c3fa80

View file

@ -381,7 +381,34 @@ export class TaskController extends Controller {
await permissionCheckCompany(req.user, record.registeredBranch); await permissionCheckCompany(req.user, record.registeredBranch);
await prisma.taskOrder.update({ if (record.taskList.some((v) => v.taskStatus !== "Pending")) {
throw new HttpError(
HttpStatus.BAD_REQUEST,
"One or more task is not pending",
"taskListNotPending",
);
}
return await prisma.$transaction(async (tx) => {
await Promise.all(
record.taskList
.filter(
(lhs) =>
!body.taskList.find(
(rhs) => lhs.requestWorkId === rhs.requestWorkId && lhs.step === rhs.step,
),
)
.map((v) =>
tx.task.update({
where: { id: v.id },
data: {
requestWorkStep: { update: { workStatus: "Pending" } },
},
}),
),
);
return await tx.taskOrder.update({
where: { id: taskOrderId }, where: { id: taskOrderId },
include: { include: {
taskList: { taskList: {
@ -419,6 +446,7 @@ export class TaskController extends Controller {
taskProduct: { deleteMany: {}, create: body.taskProduct }, taskProduct: { deleteMany: {}, create: body.taskProduct },
}, },
}); });
});
} }
@Delete("{taskOrderId}") @Delete("{taskOrderId}")
@ -431,6 +459,7 @@ export class TaskController extends Controller {
registeredBranch: { registeredBranch: {
include: branchRelationPermInclude(req.user), include: branchRelationPermInclude(req.user),
}, },
taskList: true,
}, },
}); });
@ -438,6 +467,14 @@ export class TaskController extends Controller {
await permissionCheck(req.user, record.registeredBranch); await permissionCheck(req.user, record.registeredBranch);
if (record.taskList.some((v) => v.taskStatus !== "Pending")) {
throw new HttpError(
HttpStatus.BAD_REQUEST,
"One or more task is not pending",
"taskListNotPending",
);
}
await Promise.all([deleteFolder(fileLocation.task.attachment(taskOrderId))]); await Promise.all([deleteFolder(fileLocation.task.attachment(taskOrderId))]);
await tx.taskOrder.delete({ where: { id: taskOrderId } }); await tx.taskOrder.delete({ where: { id: taskOrderId } });
}); });