update service fare

This commit is contained in:
wayanrivan
2026-05-15 10:36:11 +07:00
parent c0ecceb195
commit bf6058ebd3

View File

@ -23,10 +23,10 @@ export class ServiceFareController {
#swagger.tags = ['Service Fare']
#swagger.security = [{ "bearerAuth": [] }]
#swagger.parameters['filter'] = {
description: 'Filter data in JSON format. Available fields: Service entity fields (e.g. {\"name\": \"value\"}) and special field {\"service_type_name\": \"value\"} for filtering by service type name (case-insensitive, supports partial match)',
description: 'Filter data in JSON format. Available fields: {\"any\": \"value\"} for searching by Service.name or service type name (case-insensitive, supports partial match)',
in: 'query',
type: 'string',
example: '{\"service_type_name\": \"express\"}'
example: '{\"any\": \"express\"}'
}
#swagger.parameters['limit'] = { in: 'query', required: true, type: 'number' }
#swagger.parameters['page'] = { in: 'query', required: true, type: 'number' }
@ -51,11 +51,11 @@ export class ServiceFareController {
const offset = (param.page - 1) * param.limit;
const limit = param.limit;
// Pisahkan service_type_name dari filter sebelum masuk ke ServiceModel.list
const serviceTypeName = filter?.service_type_name ?? null;
if (filter?.service_type_name) delete filter.service_type_name;
const filterAny = filter.any && filter.any !== "" ? String(filter.any) : "";
let filterObj = { ...filter } as any;
delete filterObj.any;
var query = await ServiceModel.list(filter);
var query = await ServiceModel.list(filterObj);
const res_count = query.clone();
const res_list = query
@ -87,10 +87,10 @@ export class ServiceFareController {
.skip(offset)
.take(limit);
// Filter service_type_name dari subquery
if (serviceTypeName) {
res_list.andWhere('sfa.service_type_name ILIKE :service_type_name', { service_type_name: `%${serviceTypeName}%` });
res_count.andWhere('sfa.service_type_name ILIKE :service_type_name', { service_type_name: `%${serviceTypeName}%` });
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 });
}
if (param.with_deleted) {