diff --git a/src/controllers/06-request-list-controller.ts b/src/controllers/06-request-list-controller.ts index 9e40a7a..b0f1b73 100644 --- a/src/controllers/06-request-list-controller.ts +++ b/src/controllers/06-request-list-controller.ts @@ -7,7 +7,50 @@ import { createPermCondition } from "../services/permission"; // User in company can see. const permissionCond = createPermCondition((_) => true); -@Route("api/v1/request-list") +@Route("/api/v1/request") +@Tags("Request List") +export class RequestDataController extends Controller { + @Get() + @Security("keycloak") + async getRequestData( + @Request() req: RequestWithUser, + @Query() page: number = 1, + @Query() pageSize: number = 30, + ) { + const where = { + quotation: { + customerBranch: { + customer: { + registeredBranch: { OR: permissionCond(req.user) }, + }, + }, + }, + } satisfies Prisma.RequestDataWhereInput; + + const [result, total] = await prisma.$transaction([ + prisma.requestData.findMany({ + where, + include: { + quotation: { + include: { + customerBranch: { + include: { customer: true }, + }, + }, + }, + employee: true, + }, + take: pageSize, + skip: (page - 1) * pageSize, + }), + prisma.requestData.count({ where }), + ]); + + return { result, page, pageSize, total }; + } +} + +@Route("/api/v1/request-list") @Tags("Request List") export class RequestListController extends Controller { @Get() @@ -16,9 +59,11 @@ export class RequestListController extends Controller { @Request() req: RequestWithUser, @Query() page: number = 1, @Query() pageSize: number = 30, + @Query() requestDataId?: string, ) { const where = { request: { + id: requestDataId, quotation: { customerBranch: { customer: {