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,43 +381,71 @@ export class TaskController extends Controller {
await permissionCheckCompany(req.user, record.registeredBranch);
await prisma.taskOrder.update({
where: { id: taskOrderId },
include: {
taskList: {
include: {
requestWorkStep: {
include: {
requestWork: true,
},
},
},
},
institution: true,
registeredBranch: true,
createdBy: true,
},
data: {
...body,
taskList: {
deleteMany: record?.taskList.filter(
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" } },
},
}),
),
createMany: {
data: body.taskList.filter(
);
return await tx.taskOrder.update({
where: { id: taskOrderId },
include: {
taskList: {
include: {
requestWorkStep: {
include: {
requestWork: true,
},
},
},
},
institution: true,
registeredBranch: true,
createdBy: true,
},
data: {
...body,
taskList: {
deleteMany: record?.taskList.filter(
(lhs) =>
!record?.taskList.find(
!body.taskList.find(
(rhs) => lhs.requestWorkId === rhs.requestWorkId && lhs.step === rhs.step,
),
),
skipDuplicates: true,
createMany: {
data: body.taskList.filter(
(lhs) =>
!record?.taskList.find(
(rhs) => lhs.requestWorkId === rhs.requestWorkId && lhs.step === rhs.step,
),
),
skipDuplicates: true,
},
},
taskProduct: { deleteMany: {}, create: body.taskProduct },
},
taskProduct: { deleteMany: {}, create: body.taskProduct },
},
});
});
}
@ -431,6 +459,7 @@ export class TaskController extends Controller {
registeredBranch: {
include: branchRelationPermInclude(req.user),
},
taskList: true,
},
});
@ -438,6 +467,14 @@ export class TaskController extends Controller {
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 tx.taskOrder.delete({ where: { id: taskOrderId } });
});