diff --git a/src/controllers/examination_detail.ts b/src/controllers/examination_detail.ts index 4b400ae..0b8fa19 100644 --- a/src/controllers/examination_detail.ts +++ b/src/controllers/examination_detail.ts @@ -48,22 +48,38 @@ export class ExaminationDetailController { const offset = (param.page - 1) * param.limit; let limit = param.limit; - const res_count = query; - const res_list = query - .leftJoinAndSelect("ExaminationDetail.measurement_unit", "measurementUnit") - .leftJoinAndSelect("ExaminationDetail.reference_range", "referenceRange") + const res_count = query.clone(); + const res_ids = query + .clone() + .select("ExaminationDetail.id", "id") .orderBy("ExaminationDetail." + param.order_field, param.order_direction) .offset(offset) .limit(limit); if (param.with_deleted) { res_count.withDeleted(); - res_list.withDeleted(); + res_ids.withDeleted(); } const current_page = param.page; const total_count_data = await res_count.getCount(); - const list_data = await res_list.getMany(); + const ids = (await res_ids.getRawMany()).map((r: any) => r.id).filter(Boolean); + + let list_data: any[] = []; + if (ids.length > 0) { + const res_list = OrmHelper.DB.getRepository(ExaminationDetail) + .createQueryBuilder("ExaminationDetail") + .leftJoinAndSelect("ExaminationDetail.measurement_unit", "measurementUnit") + .leftJoinAndSelect("ExaminationDetail.reference_range", "referenceRange") + .where("ExaminationDetail.id IN (:...ids)", { ids }) + .orderBy("ExaminationDetail." + param.order_field, param.order_direction); + + if (param.with_deleted) { + res_list.withDeleted(); + } + + list_data = await res_list.getMany(); + } const count_data = CommonHelper.countObject(list_data); return ReturnHelper.successResponselist(res, 200, Language.lang.success_view, count_data, current_page, total_count_data, list_data); @@ -140,8 +156,7 @@ export class ExaminationDetailController { let param: any = await schema.validateAsync(req.params); - let examinationDetail = await ExaminationDetailModel.list({ "ExaminationDetail.id": param.id }) - .then((q) => q.leftJoinAndSelect("ExaminationDetail.measurement_unit", "measurementUnit").leftJoinAndSelect("ExaminationDetail.reference_range", "referenceRange").getOne()); + let examinationDetail = await ExaminationDetailModel.list({ "ExaminationDetail.id": param.id }).then((q) => q.leftJoinAndSelect("ExaminationDetail.measurement_unit", "measurementUnit").leftJoinAndSelect("ExaminationDetail.reference_range", "referenceRange").getOne()); if (!examinationDetail) throw { message: "Examination Detail Not Found" };