This commit is contained in:
wayanrivan
2026-05-15 10:58:16 +07:00
parent d178ce1908
commit e11c1def12

View File

@ -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<void | Response> {
/*
#swagger.tags = ['Service Fare']