fix: update service no need add rooms

This commit is contained in:
avicenan
2026-02-22 12:56:38 +07:00
parent 6e3d9c82c9
commit ae69be02b9
2 changed files with 41 additions and 64 deletions

View File

@ -51,7 +51,6 @@ export class ServiceController {
const res_count = query;
const res_list = query
.leftJoinAndSelect("Service.serviceType", "serviceType")
.leftJoinAndSelect("Service.rooms", "rooms")
.orderBy("Service." + param.order_field, param.order_direction)
.offset(offset)
.limit(limit);
@ -86,7 +85,6 @@ export class ServiceController {
const schema = Joi.object().keys({
name: Joi.string().max(256).required().label("Name"),
service_type_id: Joi.string().uuid().required().label("Service Type ID"),
room_ids: Joi.array().items(Joi.string().uuid()).optional().label("Room IDs"),
status: Joi.string().required().label("Status"),
});
@ -95,18 +93,9 @@ export class ServiceController {
let serviceType = await ServiceTypeModel.list({ id: param.service_type_id }).then((q) => q.getOne());
if (!serviceType) throw { message: "Service Type not found" };
let rooms: any[] = [];
if (param.room_ids && param.room_ids.length > 0) {
for (const roomId of param.room_ids) {
const room = await RoomModel.list({ id: roomId }).then((q) => q.getOne());
if (room) rooms.push(room);
}
}
let service = new Service();
service.name = param.name;
service.serviceType = serviceType;
service.rooms = rooms;
service.status = param.status;
service.created_by = req.auth.data.name;
service.updated_by = req.auth.data.name;
@ -141,7 +130,6 @@ export class ServiceController {
let service = await ServiceModel.list({ "Service.id": param.id })
.then((q) => q
.leftJoinAndSelect("Service.serviceType", "serviceType")
.leftJoinAndSelect("Service.rooms", "rooms")
.getOne());
if (!service) throw { message: "Service Not Found" };
@ -171,7 +159,6 @@ export class ServiceController {
id: Joi.string().uuid().required().label("Service ID"),
name: Joi.string().max(256).required().label("Name"),
service_type_id: Joi.string().uuid().required().label("Service Type ID"),
room_ids: Joi.array().items(Joi.string().uuid()).optional().label("Room IDs"),
status: Joi.string().required().label("Status"),
});
@ -181,21 +168,12 @@ export class ServiceController {
if (!serviceType) throw { message: "Service Type not found" };
let service = await ServiceModel.list({ "Service.id": param.id })
.then((q) => q.leftJoinAndSelect("Service.serviceType", "st").leftJoinAndSelect("Service.rooms", "r").getOne());
.then((q) => q.leftJoinAndSelect("Service.serviceType", "st").getOne());
if (!service) throw { message: "Service " + Language.lang.failed_not_found };
let rooms: any[] = [];
if (param.room_ids && param.room_ids.length > 0) {
for (const roomId of param.room_ids) {
const room = await RoomModel.list({ id: roomId }).then((q) => q.getOne());
if (room) rooms.push(room);
}
}
service.name = param.name;
service.serviceType = serviceType;
service.rooms = rooms;
service.status = param.status;
service.updated_by = req.auth.data.name;
await queryRunner.manager.save(service);
@ -213,55 +191,55 @@ export class ServiceController {
}
}
static async updateservicerooms(req: Request, res: Response, next: NextFunction): Promise<void | Response> {
/*
#swagger.tags = ['Service']
#swagger.security = [{ "bearerAuth": [] }]
#swagger.parameters['id'] = { description: '', in: 'path', type: 'string' }
#swagger.requestBody = { required: true, content: { "application/json": { schema: { $ref: "#/components/schemas/servicerooms" } } } }
*/
const queryRunner = OrmHelper.DB.createQueryRunner();
await queryRunner.startTransaction();
// static async updateservicerooms(req: Request, res: Response, next: NextFunction): Promise<void | Response> {
// /*
// #swagger.tags = ['Service']
// #swagger.security = [{ "bearerAuth": [] }]
// #swagger.parameters['id'] = { description: '', in: 'path', type: 'string' }
// #swagger.requestBody = { required: true, content: { "application/json": { schema: { $ref: "#/components/schemas/servicerooms" } } } }
// */
// const queryRunner = OrmHelper.DB.createQueryRunner();
// await queryRunner.startTransaction();
try {
req.body.id = req.params["id"];
// try {
// req.body.id = req.params["id"];
const schema = Joi.object().keys({
id: Joi.string().uuid().required().label("Service ID"),
room_ids: Joi.array().items(Joi.string().uuid()).optional().label("Room IDs"),
});
// const schema = Joi.object().keys({
// id: Joi.string().uuid().required().label("Service ID"),
// room_ids: Joi.array().items(Joi.string().uuid()).optional().label("Room IDs"),
// });
let param: any = await schema.validateAsync(req.body);
// let param: any = await schema.validateAsync(req.body);
let service = await ServiceModel.list({ "Service.id": param.id })
.then((q) => q.leftJoinAndSelect("Service.serviceType", "st").leftJoinAndSelect("Service.rooms", "r").getOne());
// let service = await ServiceModel.list({ "Service.id": param.id })
// .then((q) => q.leftJoinAndSelect("Service.serviceType", "st").leftJoinAndSelect("Service.rooms", "r").getOne());
if (!service) throw { message: "Service " + Language.lang.failed_not_found };
// if (!service) throw { message: "Service " + Language.lang.failed_not_found };
let rooms: any[] = [];
if (param.room_ids && param.room_ids.length > 0) {
for (const roomId of param.room_ids) {
const room = await RoomModel.list({ id: roomId }).then((q) => q.getOne());
if (room) rooms.push(room);
}
}
// let rooms: any[] = [];
// if (param.room_ids && param.room_ids.length > 0) {
// for (const roomId of param.room_ids) {
// const room = await RoomModel.list({ id: roomId }).then((q) => q.getOne());
// if (room) rooms.push(room);
// }
// }
service.rooms = rooms;
service.updated_by = req.auth.data.name;
await queryRunner.manager.save(service);
// service.rooms = rooms;
// service.updated_by = req.auth.data.name;
// await queryRunner.manager.save(service);
await queryRunner.commitTransaction();
// await queryRunner.commitTransaction();
return ReturnHelper.successResponseAny(res, 200, Language.lang.success_update, service);
} catch (e: unknown) {
await queryRunner.rollbackTransaction();
log.error(e);
const err = e as Error;
return ReturnHelper.errorResponse(res, 400, 401, Language.lang.failed_view, err.message);
} finally {
await queryRunner.release();
}
}
// return ReturnHelper.successResponseAny(res, 200, Language.lang.success_update, service);
// } catch (e: unknown) {
// await queryRunner.rollbackTransaction();
// log.error(e);
// const err = e as Error;
// return ReturnHelper.errorResponse(res, 400, 401, Language.lang.failed_view, err.message);
// } finally {
// await queryRunner.release();
// }
// }
static async delete(req: Request, res: Response, next: NextFunction): Promise<Response> {
/*

View File

@ -123,7 +123,6 @@ const doc = {
service: {
$name: "e.g. ER Registration",
$service_type_id: "uuid-string",
$room_ids: ["uuid-string"],
$status: { "@enum": ["Y", "N"] }
},
roomServices: {