From 0aa20d3728e25aa469b7adae2622c450ea30ad56 Mon Sep 17 00:00:00 2001 From: Kanjana Date: Wed, 14 May 2025 14:18:08 +0700 Subject: [PATCH] change detail notification task --- src/controllers/07-task-controller.ts | 19 +++- src/services/schedule.ts | 151 +++++++++++++++++--------- 2 files changed, 112 insertions(+), 58 deletions(-) diff --git a/src/controllers/07-task-controller.ts b/src/controllers/07-task-controller.ts index 3f15e07..e806797 100644 --- a/src/controllers/07-task-controller.ts +++ b/src/controllers/07-task-controller.ts @@ -614,12 +614,19 @@ export class TaskActionController extends Controller { request: { include: { quotation: true, + employee: true, + }, + }, + productService: { + include: { + product: true, }, }, }, }, }, }, + taskOrder: true, }, where: { step: v.step, @@ -640,14 +647,18 @@ export class TaskActionController extends Controller { } if (v.taskStatus === TaskStatus.Failed) { - const code = record.requestWorkStep.requestWork.request.quotation.code; - const name = record.requestWorkStep.requestWork.request.quotation.workName; + const taskCode = record.taskOrder.code; + const taskName = record.taskOrder.taskName; + const productCode = record.requestWorkStep.requestWork.productService.product.code; + const productName = record.requestWorkStep.requestWork.productService.product.name; + const employeeName = `${record.requestWorkStep.requestWork.request.employee.namePrefix}.${record.requestWorkStep.requestWork.request.employee.firstNameEN} ${record.requestWorkStep.requestWork.request.employee.lastNameEN}`; await tx.notification.create({ data: { title: "ใบรายการคำขอที่จัดการเกิดปัญหา / Task Failed", - detail: `ใบรายการคำขอรหัส / code : ${code} - ${name} ใบรายการคำขอเกิดปัญหา`, - receiverId: record.requestWorkStep.requestWork.request.quotation.updatedByUserId, + detail: `ใบรายการคำขอรหัส ${taskCode}: ${taskName} รหัสสินค้า ${productCode}: ${productName} ของลูกจ้าง ${employeeName} เกิดข้อผิดพลาด`, + groupReceiver: { create: { name: "document_checker" } }, + registeredBranchId: record.taskOrder.registeredBranchId, }, }); } diff --git a/src/services/schedule.ts b/src/services/schedule.ts index 40e8763..dd0591e 100644 --- a/src/services/schedule.ts +++ b/src/services/schedule.ts @@ -2,6 +2,7 @@ import dayjs from "dayjs"; import { CronJob } from "cron"; import prisma from "../db"; +import { Prisma } from "@prisma/client"; const jobs = [ CronJob.from({ @@ -55,6 +56,15 @@ const jobs = [ customer: true, }, }, + quotationWorker: { + include: { + quotation: true, + }, + orderBy: { + createdAt: "desc", + }, + take: 1, + }, }, where: { employeePassport: { @@ -65,34 +75,46 @@ const jobs = [ }, }); - await employeeExpireData.map(async (record) => { - const fullName = `${record.namePrefix}${record.firstNameEN} ${record.lastNameEN}`; - const expireDate = `${dayjs(record.employeePassport[0].expireDate).format("DD/MM")}/${dayjs(record.employeePassport[0].expireDate).year() + 543}`; - const textDetail = `ลูกจ้างรหัส / code : ${record.code} ชื่อ : ${fullName} หนังสือเดินทางจะหมดอายุในวันที่ ${expireDate}`; - const duplicateText = await prisma.notification.findFirst({ - where: { - detail: textDetail, - }, - }); + await Promise.all( + employeeExpireData.map(async (record) => { + const fullName = `${record.namePrefix}.${record.firstNameEN} ${record.lastNameEN}`; + const expireDate = `${dayjs(record.employeePassport[0].expireDate).format("DD/MM")}/${dayjs(record.employeePassport[0].expireDate).year() + 543}`; + const textDetail = `ลูกจ้างรหัส / code : ${record.code} ชื่อ : ${fullName} หนังสือเดินทางจะหมดอายุในวันที่ ${expireDate}`; + const duplicateText = await prisma.notification.findFirst({ + where: { + detail: textDetail, + }, + }); - if (!duplicateText) { - await prisma.notification - .create({ - data: { - title: "หนังสือเดินทางลูกจ้างหมดอายุ / Employee Passport Expire", - detail: textDetail, - groupReceiver: { - create: [{ name: "sale" }, { name: "head_of_sale" }], - }, - registeredBranchId: record.customerBranch.customer.registeredBranchId, - }, - }) - .then(() => console.log("[INFO]: Create notification employee passport expired, OK.")) - .catch((e) => - console.error("[ERR]: Create notification employee passport expired, FAILED.", e), - ); - } - }); + const dataNotification: Prisma.NotificationCreateArgs["data"] = { + title: "หนังสือเดินทางลูกจ้างหมดอายุ / Employee Passport Expire", + detail: textDetail, + }; + + if (record.quotationWorker && record.quotationWorker.length > 0) { + dataNotification.receiverId = record.quotationWorker[0].quotation.updatedByUserId; + dataNotification.registeredBranchId = + record.quotationWorker[0].quotation.registeredBranchId; + } else { + (dataNotification.groupReceiver = { + create: [{ name: "sale" }, { name: "head_of_sale" }], + }), + (dataNotification.registeredBranchId = + record.customerBranch.customer.registeredBranchId); + } + + if (!duplicateText) { + await prisma.notification + .create({ + data: dataNotification, + }) + .then(() => console.log("[INFO]: Create notification employee passport expired, OK.")) + .catch((e) => + console.error("[ERR]: Create notification employee passport expired, FAILED.", e), + ); + } + }), + ); }, }), CronJob.from({ @@ -112,6 +134,15 @@ const jobs = [ customer: true, }, }, + quotationWorker: { + include: { + quotation: true, + }, + orderBy: { + createdAt: "desc", + }, + take: 1, + }, }, where: { employeeVisa: { @@ -122,34 +153,46 @@ const jobs = [ }, }); - await employeeVisaData.map(async (record) => { - const fullName = `${record.namePrefix}${record.firstNameEN} ${record.lastNameEN}`; - const expireDate = `${dayjs(record.employeeVisa[0].expireDate).format("DD/MM")}/${dayjs(record.employeeVisa[0].expireDate).year() + 543}`; - const textDetail = `ลูกจ้างรหัส / code : ${record.code} ชื่อ : ${fullName} ข้อมูลการตรวจลงตราจะหมดอายุในวันที่ ${expireDate}`; - const duplicateText = await prisma.notification.findFirst({ - where: { - detail: textDetail, - }, - }); + await Promise.all( + employeeVisaData.map(async (record) => { + const fullName = `${record.namePrefix}.${record.firstNameEN} ${record.lastNameEN}`; + const expireDate = `${dayjs(record.employeeVisa[0].expireDate).format("DD/MM")}/${dayjs(record.employeeVisa[0].expireDate).year() + 543}`; + const textDetail = `ลูกจ้างรหัส / code : ${record.code} ชื่อ : ${fullName} ข้อมูลการตรวจลงตราจะหมดอายุในวันที่ ${expireDate}`; + const duplicateText = await prisma.notification.findFirst({ + where: { + detail: textDetail, + }, + }); - if (!duplicateText) { - await prisma.notification - .create({ - data: { - title: "ข้อมูลการตรวจลงตราลูกจ้างหมดอายุ / Employee Visa Expire", - detail: textDetail, - groupReceiver: { - create: [{ name: "sale" }, { name: "head_of_sale" }], - }, - registeredBranchId: record.customerBranch.customer.registeredBranchId, - }, - }) - .then(() => console.log("[INFO]: Create notification employee visa expired, OK.")) - .catch((e) => - console.error("[ERR]: Create notification employee visa expired, FAILED.", e), - ); - } - }); + const dataNotification: Prisma.NotificationCreateArgs["data"] = { + title: "ข้อมูลการตรวจลงตราลูกจ้างหมดอายุ / Employee Visa Expire", + detail: textDetail, + }; + + if (record.quotationWorker && record.quotationWorker.length > 0) { + dataNotification.receiverId = record.quotationWorker[0].quotation.updatedByUserId; + dataNotification.registeredBranchId = + record.quotationWorker[0].quotation.registeredBranchId; + } else { + (dataNotification.groupReceiver = { + create: [{ name: "sale" }, { name: "head_of_sale" }], + }), + (dataNotification.registeredBranchId = + record.customerBranch.customer.registeredBranchId); + } + + if (!duplicateText) { + await prisma.notification + .create({ + data: dataNotification, + }) + .then(() => console.log("[INFO]: Create notification employee visa expired, OK.")) + .catch((e) => + console.error("[ERR]: Create notification employee visa expired, FAILED.", e), + ); + } + }), + ); }, }), ];