feat: update task order revert status if removed
This commit is contained in:
parent
b1c56b7c4e
commit
87a1c3fa80
1 changed files with 63 additions and 26 deletions
|
|
@ -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 } });
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue