diff --git a/src/controllers/room.ts b/src/controllers/room.ts index 2ee1fff..9febf1b 100644 --- a/src/controllers/room.ts +++ b/src/controllers/room.ts @@ -15,6 +15,7 @@ import fileUpload from "express-fileupload"; import { v4 as uuidv4 } from 'uuid'; import fs from "fs"; import path from "path"; +import { Brackets } from "typeorm"; const log: Logger = new Logger({ name: "[RoomController]", @@ -92,24 +93,60 @@ export class RoomController { /* #swagger.tags = ['Room'] #swagger.security = [{ "bearerAuth": [] }] - */ + #swagger.parameters['id'] = { + in: 'query', + type: 'string', + required: false, + description: 'Department Id (optional)' + } + */ try { + const schema = Joi.object().keys({ + id: Joi.string().uuid().optional().label("Department Id"), + }); + + let param: any = await schema.validateAsync(req.query); + const query = await RoomModel.list(); - query.select([ - "Room.id", - "Room.room", - ]).orderBy("Room.room", "ASC"); + query + .select([ + "Room.id", + "Room.room", + ]) + .orderBy("Room.room", "ASC"); + + // ✅ optional filter by departmentId + if (param.id) { + query.andWhere("Room.departmentId = :departmentId", { + departmentId: param.id, + }); + } const total_count_data = await query.getCount(); const list_data = await query.getMany(); const count_data = CommonHelper.countObject(list_data); - return ReturnHelper.successResponselist(res, 200, Language.lang.success_view, count_data, 1, total_count_data, list_data); + return ReturnHelper.successResponselist( + res, + 200, + Language.lang.success_view, + count_data, + 1, + total_count_data, + list_data + ); } catch (e: unknown) { log.error(e); const err = e as Error; - return ReturnHelper.errorResponse(res, 400, 401, Language.lang.failed_view, err.message); + + return ReturnHelper.errorResponse( + res, + 400, + 401, + Language.lang.failed_view, + err.message + ); } } diff --git a/src/routes/private.ts b/src/routes/private.ts index 507272a..2d6a308 100644 --- a/src/routes/private.ts +++ b/src/routes/private.ts @@ -144,7 +144,7 @@ export class RoutePrivate { app.put('/api/diagnostic-procedure/restore/:id', DiagnosticProcedureController.restore) app.get('/api/room/list', RoomController.list) - app.get('/api/room/option', RoomController.option) + app.get('/api/room/option', RoomController.option); app.post('/api/room/create', RoomController.create) app.get('/api/room/detail/:id', RoomController.detail) app.put('/api/room/update/:id', RoomController.update)