update
This commit is contained in:
@ -57,34 +57,31 @@ export class ServiceFareController {
|
|||||||
|
|
||||||
var query = await ServiceModel.list(filterObj);
|
var query = await ServiceModel.list(filterObj);
|
||||||
|
|
||||||
// ← res_count dipindah ke bawah setelah leftJoin
|
|
||||||
const base_query = query
|
const base_query = query
|
||||||
.select([
|
.select([
|
||||||
"Service.id",
|
"Service.id",
|
||||||
"Service.name",
|
"Service.name",
|
||||||
])
|
])
|
||||||
|
.leftJoin("Service.serviceType", "st")
|
||||||
|
.addSelect("st.name", "service_type_name")
|
||||||
.leftJoin(
|
.leftJoin(
|
||||||
qb => {
|
qb => {
|
||||||
return qb
|
return qb
|
||||||
.select('sf."serviceId"', "serviceId")
|
.select('sf."serviceId"', "serviceId")
|
||||||
.addSelect("COALESCE(MIN(sf.fare), 0)", "min")
|
.addSelect("COALESCE(MIN(sf.fare), 0)", "min")
|
||||||
.addSelect("COALESCE(MAX(sf.fare), 0)", "max")
|
.addSelect("COALESCE(MAX(sf.fare), 0)", "max")
|
||||||
.addSelect("st.name", "service_type_name")
|
|
||||||
.from("service_fares", "sf")
|
.from("service_fares", "sf")
|
||||||
.innerJoin("fare_type", "ft", 'sf."faretypeId" = ft.id AND ft.deleted_at IS NULL')
|
.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("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("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"');
|
||||||
.groupBy('sf."serviceId", st.name');
|
|
||||||
},
|
},
|
||||||
"sfa",
|
"sfa",
|
||||||
'sfa."serviceId" = Service.id'
|
'sfa."serviceId" = Service.id'
|
||||||
)
|
)
|
||||||
.addSelect('COALESCE(sfa.min, 0)', "min_fare")
|
.addSelect('COALESCE(sfa.min, 0)', "min_fare")
|
||||||
.addSelect('COALESCE(sfa.max, 0)', "max_fare")
|
.addSelect('COALESCE(sfa.max, 0)', "max_fare");
|
||||||
.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_count = base_query.clone();
|
||||||
const res_list = base_query
|
const res_list = base_query
|
||||||
.orderBy("Service." + param.order_field, param.order_direction)
|
.orderBy("Service." + param.order_field, param.order_direction)
|
||||||
@ -93,8 +90,8 @@ export class ServiceFareController {
|
|||||||
|
|
||||||
if (filterAny !== "") {
|
if (filterAny !== "") {
|
||||||
const anyVal = filterAny.includes("%") ? filterAny : `%${filterAny}%`;
|
const anyVal = filterAny.includes("%") ? filterAny : `%${filterAny}%`;
|
||||||
res_list.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 sfa.service_type_name ILIKE :any)", { any: anyVal });
|
res_count.andWhere("(Service.name ILIKE :any OR st.name ILIKE :any)", { any: anyVal });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (param.with_deleted) {
|
if (param.with_deleted) {
|
||||||
@ -122,6 +119,7 @@ export class ServiceFareController {
|
|||||||
return ReturnHelper.errorResponse(res, 400, 401, Language.lang.failed_view, err.message);
|
return ReturnHelper.errorResponse(res, 400, 401, Language.lang.failed_view, err.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static async option(req: Request, res: Response, next: NextFunction): Promise<void | Response> {
|
static async option(req: Request, res: Response, next: NextFunction): Promise<void | Response> {
|
||||||
/*
|
/*
|
||||||
#swagger.tags = ['Service Fare']
|
#swagger.tags = ['Service Fare']
|
||||||
|
|||||||
Reference in New Issue
Block a user