diff --git a/src/controllers/room_to_pharmacy.ts b/src/controllers/room_to_pharmacy.ts index 3287d7d..bb18f5c 100644 --- a/src/controllers/room_to_pharmacy.ts +++ b/src/controllers/room_to_pharmacy.ts @@ -262,7 +262,7 @@ export class RoomToPharmacyController { const data = new RoomToPharmacy() data.pharmacy_room = param.pharmacy_room_id; data.room = param.room_id; - data.created_by = req.auth.data.name; + data.created_by = req.auth?.data.name; await OrmHelper.DB.manager.save(data); @@ -348,7 +348,7 @@ export class RoomToPharmacyController { if (data != null) { data.pharmacy_room = param.pharmacy_room_id; data.room = param.room_id; - data.updated_by = req.auth.data.name; + data.updated_by = req.auth?.data.name; await repo.save(data); } @@ -370,12 +370,29 @@ export class RoomToPharmacyController { */ try { const schema = Joi.object().keys({ - id: Joi.string().uuid().required().label("RoomToPharmacy Id"), + id: Joi.string().uuid().required().label("Room Id"), }); let param: any = await schema.validateAsync(req.params); - let data = await RoomToPharmacyModel.list({ "id": param.id }).then((q) => q.getOne()); + let data = await OrmHelper.DB.getRepository(Room) + .createQueryBuilder("room") + .leftJoinAndSelect("room.department", "department") + .leftJoinAndMapMany( + "room.roomToPharmacies", + RoomToPharmacy, + "room_to_pharmacy", + "room_to_pharmacy.room_id = room.id" + ) + .leftJoinAndMapOne( + "room_to_pharmacy.pharmacy_room", + Room, + "pharmacy_room", + "pharmacy_room.id = room_to_pharmacy.pharmacy_room_id" + ) + .where("room.id = :id", { id: param.id }) + .getOne(); + if (!data) throw { message: "RoomToPharmacy Not Found" }; return ReturnHelper.successResponseAny(res, 200, Language.lang.success_view, data); diff --git a/src/model/room_to_pharmacy.ts b/src/model/room_to_pharmacy.ts index b143762..ac48dfd 100644 --- a/src/model/room_to_pharmacy.ts +++ b/src/model/room_to_pharmacy.ts @@ -5,30 +5,19 @@ import { RoomToPharmacy, Room } from "entity"; export class RoomToPharmacyModel { static async list(filter = {}): Promise> { - const repo = OrmHelper.DB.getRepository(Room); - const query = repo - .createQueryBuilder("room") - .leftJoinAndSelect("room.department", "department") - .leftJoinAndMapMany( - "room.roomToPharmacies", - RoomToPharmacy, - "room_to_pharmacy", - "room_to_pharmacy.room_id = room.id" - ) - .leftJoinAndMapOne( - "room_to_pharmacy.pharmacy_room", - Room, - "pharmacy_room", - "pharmacy_room.id = room_to_pharmacy.pharmacy_room_id" - ) - .where("department.id IN (:...departmentIds)", { - departmentIds: [ - '42bc42a7-e2a7-4f95-a788-9d9e51a51a20', - '3fc39ff1-b4bc-4276-92ef-def7ca9432fb', - 'a0d2ef11-6927-4e5c-8628-6acf26351071', - ] - }); + const repo = OrmHelper.DB.getRepository(RoomToPharmacy); + let whereAttr: string[] = []; + let whereVal: any = {}; + if (filter && Object.keys(filter).length > 0) { + whereAttr = [...whereAttr, ...CommonHelper.handleQueryFilter(filter).whereAttr]; + whereVal = { ...whereVal, ...CommonHelper.handleQueryFilter(filter).whereVal }; + } + + var query = repo.createQueryBuilder("room_to_pharmacy"); + if (whereAttr.length != 0) { + query = query.where(whereAttr.join(" and "), whereVal); + } return query; }