From 111adbb076b6607bafa77ce87ca7165bd87f2bad Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Tue, 24 Dec 2024 18:11:40 +0700 Subject: [PATCH] feat: add task product record --- prisma/schema.prisma | 14 +++++++++++++- src/controllers/07-task-controller.ts | 7 ++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 5546d6a..c2295a0 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -1121,6 +1121,7 @@ model Product { workProduct WorkProduct[] quotationProductServiceList QuotationProductServiceList[] + taskProduct TaskProduct[] createdAt DateTime @default(now()) createdBy User? @relation(name: "ProductCreatedByUser", fields: [createdByUserId], references: [id], onDelete: SetNull) @@ -1519,6 +1520,16 @@ model Task { taskOrderId String } +model TaskProduct { + taskOrderId String + taskOrder TaskOrder @relation(fields: [taskOrderId], references: [id]) + productId String + product Product @relation(fields: [productId], references: [id]) + discount Float? + + @@id([taskOrderId, productId]) +} + model TaskOrder { id String @id @default(cuid()) @@ -1541,7 +1552,8 @@ model TaskOrder { createdBy User @relation(name: "TaskOrderCreatedByUser", fields: [createdByUserId], references: [id]) createdByUserId String - userTask UserTask[] + userTask UserTask[] + taskProduct TaskProduct[] } enum UserTaskStatus { diff --git a/src/controllers/07-task-controller.ts b/src/controllers/07-task-controller.ts index 57df7ea..b2002fd 100644 --- a/src/controllers/07-task-controller.ts +++ b/src/controllers/07-task-controller.ts @@ -144,6 +144,7 @@ export class TaskController extends Controller { where: { id: taskOrderId }, include: { userTask: true, + taskProduct: true, taskList: { where: { requestWorkStep: { responsibleUserId: taskAssignedUserId }, @@ -215,6 +216,7 @@ export class TaskController extends Controller { registeredBranchId?: string; taskList: { requestWorkId: string; step: number }[]; + taskProduct: { productId: string; discount?: number }[]; }, ) { return await prisma.$transaction(async (tx) => { @@ -236,7 +238,7 @@ export class TaskController extends Controller { const code = `PO${year}${month}${last.value.toString().padStart(6, "0")}`; - const { taskList, ...rest } = body; + const { taskList, taskProduct, ...rest } = body; const userAffiliatedBranch = await tx.branch.findFirst({ include: branchRelationPermInclude(req.user), @@ -323,6 +325,7 @@ export class TaskController extends Controller { registeredBranchId: userAffiliatedBranch.id, createdByUserId: req.user.sub, taskList: { create: taskList }, + taskProduct: { create: taskProduct }, }, }); }); @@ -344,6 +347,7 @@ export class TaskController extends Controller { institutionId: string; taskList: { requestWorkId: string; step: number }[]; + taskProduct: { productId: string; discount?: number }[]; }, ) { const record = await prisma.taskOrder.findFirst({ @@ -401,6 +405,7 @@ export class TaskController extends Controller { skipDuplicates: true, }, }, + taskProduct: { deleteMany: {}, create: body.taskProduct }, }, }); }