From e11c1def1288d18b9bb32cfddb6756b48d52b5dd Mon Sep 17 00:00:00 2001 From: wayanrivan Date: Fri, 15 May 2026 10:58:16 +0700 Subject: [PATCH] update --- src/controllers/service_fare.ts | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/controllers/service_fare.ts b/src/controllers/service_fare.ts index 0e1caff..faf70ee 100644 --- a/src/controllers/service_fare.ts +++ b/src/controllers/service_fare.ts @@ -57,34 +57,31 @@ export class ServiceFareController { var query = await ServiceModel.list(filterObj); - // ← res_count dipindah ke bawah setelah leftJoin const base_query = query .select([ "Service.id", "Service.name", ]) + .leftJoin("Service.serviceType", "st") + .addSelect("st.name", "service_type_name") .leftJoin( qb => { return qb .select('sf."serviceId"', "serviceId") .addSelect("COALESCE(MIN(sf.fare), 0)", "min") .addSelect("COALESCE(MAX(sf.fare), 0)", "max") - .addSelect("st.name", "service_type_name") .from("service_fares", "sf") .innerJoin("fare_type", "ft", 'sf."faretypeId" = ft.id AND ft.deleted_at IS NULL') .innerJoin("service_classes", "sc", 'sf."serviceClassId" = sc.id AND sc.deleted_at IS NULL') .innerJoin("services", "s", 'sf."serviceId" = s.id AND s.deleted_at IS NULL') - .innerJoin("service_types", "st", 's."serviceTypeId" = st.id AND st.deleted_at IS NULL') - .groupBy('sf."serviceId", st.name'); + .groupBy('sf."serviceId"'); }, "sfa", 'sfa."serviceId" = Service.id' ) .addSelect('COALESCE(sfa.min, 0)', "min_fare") - .addSelect('COALESCE(sfa.max, 0)', "max_fare") - .addSelect('sfa.service_type_name', "service_type_name"); + .addSelect('COALESCE(sfa.max, 0)', "max_fare"); - // Clone setelah leftJoin sudah ada, sehingga sfa dikenal di kedua query const res_count = base_query.clone(); const res_list = base_query .orderBy("Service." + param.order_field, param.order_direction) @@ -93,8 +90,8 @@ export class ServiceFareController { if (filterAny !== "") { const anyVal = filterAny.includes("%") ? filterAny : `%${filterAny}%`; - res_list.andWhere("(Service.name ILIKE :any OR sfa.service_type_name ILIKE :any)", { any: anyVal }); - res_count.andWhere("(Service.name ILIKE :any OR sfa.service_type_name ILIKE :any)", { any: anyVal }); + res_list.andWhere("(Service.name ILIKE :any OR st.name ILIKE :any)", { any: anyVal }); + res_count.andWhere("(Service.name ILIKE :any OR st.name ILIKE :any)", { any: anyVal }); } if (param.with_deleted) { @@ -122,6 +119,7 @@ export class ServiceFareController { return ReturnHelper.errorResponse(res, 400, 401, Language.lang.failed_view, err.message); } } + static async option(req: Request, res: Response, next: NextFunction): Promise { /* #swagger.tags = ['Service Fare']