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 permissionCheckCompany(req.user, record.registeredBranch);
|
||||||
|
|
||||||
await prisma.taskOrder.update({
|
if (record.taskList.some((v) => v.taskStatus !== "Pending")) {
|
||||||
where: { id: taskOrderId },
|
throw new HttpError(
|
||||||
include: {
|
HttpStatus.BAD_REQUEST,
|
||||||
taskList: {
|
"One or more task is not pending",
|
||||||
include: {
|
"taskListNotPending",
|
||||||
requestWorkStep: {
|
);
|
||||||
include: {
|
}
|
||||||
requestWork: true,
|
|
||||||
},
|
return await prisma.$transaction(async (tx) => {
|
||||||
},
|
await Promise.all(
|
||||||
},
|
record.taskList
|
||||||
},
|
.filter(
|
||||||
institution: true,
|
|
||||||
registeredBranch: true,
|
|
||||||
createdBy: true,
|
|
||||||
},
|
|
||||||
data: {
|
|
||||||
...body,
|
|
||||||
taskList: {
|
|
||||||
deleteMany: record?.taskList.filter(
|
|
||||||
(lhs) =>
|
(lhs) =>
|
||||||
!body.taskList.find(
|
!body.taskList.find(
|
||||||
(rhs) => lhs.requestWorkId === rhs.requestWorkId && lhs.step === rhs.step,
|
(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) =>
|
(lhs) =>
|
||||||
!record?.taskList.find(
|
!body.taskList.find(
|
||||||
(rhs) => lhs.requestWorkId === rhs.requestWorkId && lhs.step === rhs.step,
|
(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: {
|
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 } });
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue