feat: notify quotation status change

This commit is contained in:
Methapon2001 2025-03-05 13:00:10 +07:00 committed by Methapon Metanipat
parent 071262a85a
commit 2697b4f6e0
4 changed files with 192 additions and 103 deletions

View file

@ -268,14 +268,24 @@ export class RequestDataActionController extends Controller {
}),
]);
await Promise.all([
tx.quotation.updateMany({
where: {
requestData: {
every: { requestDataStatus: RequestDataStatus.Canceled },
tx.quotation
.updateManyAndReturn({
where: {
requestData: {
every: { requestDataStatus: RequestDataStatus.Canceled },
},
},
},
data: { quotationStatus: QuotationStatus.Canceled, urgent: false },
}),
data: { quotationStatus: QuotationStatus.Canceled, urgent: false },
})
.then(async (res) => {
await tx.notification.createMany({
data: res.map((v) => ({
title: "Quotation Status Updated",
detail: v.code + "Canceled",
receiverId: v.createdByUserId,
})),
});
}),
tx.taskOrder.updateMany({
where: {
taskList: {
@ -405,14 +415,25 @@ export class RequestDataActionController extends Controller {
data: { taskStatus: TaskStatus.Canceled },
});
await Promise.all([
tx.quotation.updateMany({
where: {
requestData: {
every: { requestDataStatus: RequestDataStatus.Canceled },
tx.quotation
.updateManyAndReturn({
where: {
quotationStatus: { not: QuotationStatus.Canceled },
requestData: {
every: { requestDataStatus: RequestDataStatus.Canceled },
},
},
},
data: { quotationStatus: QuotationStatus.Canceled, urgent: false },
}),
data: { quotationStatus: QuotationStatus.Canceled, urgent: false },
})
.then(async (res) => {
await tx.notification.createMany({
data: res.map((v) => ({
title: "Quotation Status Updated",
detail: v.code + "Canceled",
receiverId: v.createdByUserId,
})),
});
}),
tx.taskOrder.updateMany({
where: {
taskList: {
@ -479,21 +500,31 @@ export class RequestDataActionController extends Controller {
where: { id: { in: completed } },
data: { requestDataStatus: RequestDataStatus.Completed },
});
await tx.quotation.updateMany({
where: {
quotationStatus: {
notIn: [QuotationStatus.Canceled, QuotationStatus.ProcessComplete],
},
requestData: {
every: {
requestDataStatus: {
in: [RequestDataStatus.Canceled, RequestDataStatus.Completed],
await tx.quotation
.updateManyAndReturn({
where: {
quotationStatus: {
notIn: [QuotationStatus.Canceled, QuotationStatus.ProcessComplete],
},
requestData: {
every: {
requestDataStatus: {
in: [RequestDataStatus.Canceled, RequestDataStatus.Completed],
},
},
},
},
},
data: { quotationStatus: QuotationStatus.ProcessComplete, urgent: false },
});
data: { quotationStatus: QuotationStatus.ProcessComplete, urgent: false },
})
.then(async (res) => {
await tx.notification.createMany({
data: res.map((v) => ({
title: "Quotation Status Updated",
detail: v.code + "Completed",
receiverId: v.createdByUserId,
})),
});
});
// dataRecord.push(record);
return data;
});
@ -812,14 +843,25 @@ export class RequestListController extends Controller {
data: { taskStatus: TaskStatus.Canceled },
});
await Promise.all([
tx.quotation.updateMany({
where: {
requestData: {
every: { requestDataStatus: RequestDataStatus.Canceled },
tx.quotation
.updateManyAndReturn({
where: {
quotationStatus: { not: QuotationStatus.Canceled },
requestData: {
every: { requestDataStatus: RequestDataStatus.Canceled },
},
},
},
data: { quotationStatus: QuotationStatus.Canceled, urgent: false },
}),
data: { quotationStatus: QuotationStatus.Canceled, urgent: false },
})
.then(async (res) => {
await tx.notification.createMany({
data: res.map((v) => ({
title: "Quotation Status Updated",
detail: v.code + "Canceled",
receiverId: v.createdByUserId,
})),
});
}),
tx.taskOrder.updateMany({
where: {
taskList: {
@ -887,19 +929,32 @@ export class RequestListController extends Controller {
where: { id: { in: completed } },
data: { requestDataStatus: RequestDataStatus.Completed },
});
await tx.quotation.updateMany({
where: {
quotationStatus: {
notIn: [QuotationStatus.Canceled, QuotationStatus.ProcessComplete],
},
requestData: {
every: {
requestDataStatus: { in: [RequestDataStatus.Canceled, RequestDataStatus.Completed] },
await tx.quotation
.updateManyAndReturn({
where: {
quotationStatus: {
notIn: [QuotationStatus.Canceled, QuotationStatus.ProcessComplete],
},
requestData: {
every: {
requestDataStatus: {
in: [RequestDataStatus.Canceled, RequestDataStatus.Completed],
},
},
},
},
},
data: { quotationStatus: QuotationStatus.ProcessComplete, urgent: false },
});
data: { quotationStatus: QuotationStatus.ProcessComplete, urgent: false },
})
.then(async (res) => {
await tx.notification.createMany({
data: res.map((v) => ({
title: "Quotation Status Updated",
detail: v.code + "Completed",
receiverId: v.createdByUserId,
})),
});
});
return record;
});
}