import { Controller, Delete, Get, Path, Put, Query, Request, Route, Security, Tags } from "tsoa"; import { RequestWithUser } from "../interfaces/user"; import prisma from "../db"; @Route("api/v1/request-list") @Tags("Request List") export class RequestListController extends Controller { @Get() @Security("keycloak") async getRequest( @Request() req: RequestWithUser, @Query() page: number = 1, @Query() pageSize: number = 30, ) { const [result, total] = await prisma.$transaction([ prisma.requestWork.findMany({ include: { request: { include: { quotation: true, employee: true, }, }, productService: { include: { service: true, work: true, product: true, }, }, }, take: pageSize, skip: (page - 1) * pageSize, }), prisma.requestWork.count(), ]); return { result, page, pageSize, total }; } @Get("{requestId}") async getRequestById(@Path() requestId: string) { return await prisma.requestWork.findFirst({ include: { request: { include: { quotation: true, employee: true, }, }, productService: { include: { service: true, work: true, product: true, }, }, }, where: { id: requestId }, }); } /** @todo */ @Put("{requestId}") async updateRequestById(@Request() req: RequestWithUser, @Path() requestId: string) { return {}; } /** @todo */ @Delete("{requestId}") async deleteRequestById(@Request() req: RequestWithUser, @Path() requestId: string) { return {}; } } export class RequestListAttachmentController extends Controller {}