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

View File

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