diff --git a/src/controllers/service_fare.ts b/src/controllers/service_fare.ts index 3b67e4f..0e1caff 100644 --- a/src/controllers/service_fare.ts +++ b/src/controllers/service_fare.ts @@ -57,8 +57,8 @@ export class ServiceFareController { var query = await ServiceModel.list(filterObj); - const res_count = query.clone(); - const res_list = query + // ← res_count dipindah ke bawah setelah leftJoin + const base_query = query .select([ "Service.id", "Service.name", @@ -82,15 +82,19 @@ export class ServiceFareController { ) .addSelect('COALESCE(sfa.min, 0)', "min_fare") .addSelect('COALESCE(sfa.max, 0)', "max_fare") - .addSelect("st.name", "service_type_name") + .addSelect('sfa.service_type_name', "service_type_name"); + + // 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) .skip(offset) .take(limit); if (filterAny !== "") { const anyVal = filterAny.includes("%") ? filterAny : `%${filterAny}%`; - res_list.andWhere("(Service.name ILIKE :any OR st.service_type_name ILIKE :any)", { any: anyVal }); - res_count.andWhere("(Service.name ILIKE :any OR st.service_type_name ILIKE :any)", { any: anyVal }); + 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 }); } if (param.with_deleted) { @@ -118,7 +122,6 @@ 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']