From 026bf44bc74068cadbc05a1815cbf6e56eae9db9 Mon Sep 17 00:00:00 2001 From: Methapon Metanipat Date: Mon, 18 Nov 2024 10:44:13 +0700 Subject: [PATCH] feat: add relation document to request work --- src/controllers/06-request-list-controller.ts | 38 +++++++++++++++++-- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/src/controllers/06-request-list-controller.ts b/src/controllers/06-request-list-controller.ts index 55127d1..a6aa2a4 100644 --- a/src/controllers/06-request-list-controller.ts +++ b/src/controllers/06-request-list-controller.ts @@ -4,6 +4,7 @@ import prisma from "../db"; import { Prisma, RequestDataStatus, RequestWorkStatus } from "@prisma/client"; import { createPermCondition } from "../services/permission"; import { queryOrNot } from "../utils/relation"; +import { notFoundError } from "../utils/error"; // User in company can see. const permissionCond = createPermCondition((_) => true); @@ -153,7 +154,9 @@ export class RequestListController extends Controller { include: { service: true, work: true, - product: true, + product: { + include: { document: true }, + }, }, }, }, @@ -163,12 +166,25 @@ export class RequestListController extends Controller { prisma.requestWork.count({ where }), ]); - return { result, page, pageSize, total }; + return { + result: result.map((v) => { + return Object.assign(v, { + productService: Object.assign(v.productService, { + product: Object.assign(v.productService.product, { + document: v.productService.product.document.map((doc) => doc.name), + }), + }), + }); + }), + page, + pageSize, + total, + }; } @Get("{requestWorkId}") async getRequestWorkById(@Path() requestWorkId: string) { - return await prisma.requestWork.findFirst({ + const record = await prisma.requestWork.findFirst({ include: { request: { include: { @@ -180,12 +196,26 @@ export class RequestListController extends Controller { include: { service: true, work: true, - product: true, + product: { + include: { + document: true, + }, + }, }, }, }, where: { id: requestWorkId }, }); + + if (!record) throw notFoundError("Request Work"); + + return Object.assign(record, { + productService: Object.assign(record.productService, { + product: Object.assign(record.productService.product, { + document: record.productService.product.document.map((doc) => doc.name), + }), + }), + }); } @Put("{requestWorkId}")