diff --git a/src/controllers/room_services.ts b/src/controllers/room_services.ts index 6844db0..ba3522a 100644 --- a/src/controllers/room_services.ts +++ b/src/controllers/room_services.ts @@ -67,8 +67,8 @@ export class RoomServicesController { name: room.department.name } : null, services: room.services ? room.services.map(service => ({ - service_id: service.id, - service_name: service.name + id: service.id, + name: service.name })) : [] })); @@ -173,6 +173,56 @@ export class RoomServicesController { } } + static async detail(req: Request, res: Response, next: NextFunction): Promise { + /* + #swagger.tags = ['Room Services'] + #swagger.security = [{ "bearerAuth": [] }] + #swagger.parameters['id'] = { description: 'Room ID', in: 'path', type: 'string' } + */ + try { + const schema = Joi.object().keys({ + id: Joi.string().uuid().required().label("Room ID"), + }); + + let param: any = await schema.validateAsync(req.params); + + let room = await RoomModel.list({ "Room.id": param.id }) + .then((q) => q.leftJoinAndSelect("Room.services", "s") + .leftJoinAndSelect("Room.department", "department").getOne()); + + if (!room) throw { message: "Room " + Language.lang.failed_not_found }; + + // Transform data: Format room with services + const detail_data = { + id: room.id, + room: room.room, + code: room.code, + description: room.description, + status: room.status, + department: room.department ? { + id: room.department.id, + name: room.department.name + } : null, + services: room.services ? room.services.map(service => ({ + id: service.id, + name: service.name + })) : [] + }; + + return ReturnHelper.successResponseAny(res, 200, Language.lang.success_view, detail_data); + } catch (e: unknown) { + log.error(e); + const err = e as Error; + return ReturnHelper.errorResponse( + res, + 400, + 401, + Language.lang.failed_not_found, + err.message + ); + } + } + static async update(req: Request, res: Response, next: NextFunction): Promise { /* #swagger.tags = ['Room Services'] diff --git a/src/routes/private.ts b/src/routes/private.ts index 07f44c6..4539a2c 100644 --- a/src/routes/private.ts +++ b/src/routes/private.ts @@ -113,6 +113,7 @@ export class RoutePrivate { app.get('/api/room-services/list', RoomServicesController.list) app.get('/api/room-services/list-by-service', RoomServicesController.listByService) + app.get('/api/room-services/detail/:id', RoomServicesController.detail) app.put('/api/room-services/:id', RoomServicesController.update) app.get('/api/service-type/list', ServiceTypeController.list)