upd: add detail for room services

This commit is contained in:
avicenan
2026-02-22 21:51:52 +07:00
parent ae69be02b9
commit 5321003931
2 changed files with 53 additions and 2 deletions

View File

@ -67,8 +67,8 @@ export class RoomServicesController {
name: room.department.name name: room.department.name
} : null, } : null,
services: room.services ? room.services.map(service => ({ services: room.services ? room.services.map(service => ({
service_id: service.id, id: service.id,
service_name: service.name name: service.name
})) : [] })) : []
})); }));
@ -173,6 +173,56 @@ export class RoomServicesController {
} }
} }
static async detail(req: Request, res: Response, next: NextFunction): Promise<void | Response> {
/*
#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<void | Response> { static async update(req: Request, res: Response, next: NextFunction): Promise<void | Response> {
/* /*
#swagger.tags = ['Room Services'] #swagger.tags = ['Room Services']

View File

@ -113,6 +113,7 @@ export class RoutePrivate {
app.get('/api/room-services/list', RoomServicesController.list) app.get('/api/room-services/list', RoomServicesController.list)
app.get('/api/room-services/list-by-service', RoomServicesController.listByService) 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.put('/api/room-services/:id', RoomServicesController.update)
app.get('/api/service-type/list', ServiceTypeController.list) app.get('/api/service-type/list', ServiceTypeController.list)