From ec104565f05509f6220f0c023c0a7364fdad0fd7 Mon Sep 17 00:00:00 2001 From: "fazri.is" Date: Wed, 15 Apr 2026 15:10:31 +0700 Subject: [PATCH] update --- src/controllers/examination_detail.ts | 31 ++++++++++++++++++++------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/src/controllers/examination_detail.ts b/src/controllers/examination_detail.ts index 592a251..4d9ffc3 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); @@ -135,8 +151,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" };