update service fare
This commit is contained in:
@ -22,7 +22,12 @@ export class ServiceFareController {
|
|||||||
/*
|
/*
|
||||||
#swagger.tags = ['Service Fare']
|
#swagger.tags = ['Service Fare']
|
||||||
#swagger.security = [{ "bearerAuth": [] }]
|
#swagger.security = [{ "bearerAuth": [] }]
|
||||||
#swagger.parameters['filter'] = { description: '', in: 'query', type: 'string' }
|
#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)',
|
||||||
|
in: 'query',
|
||||||
|
type: 'string',
|
||||||
|
example: '{\"service_type_name\": \"express\"}'
|
||||||
|
}
|
||||||
#swagger.parameters['limit'] = { in: 'query', required: true, type: 'number' }
|
#swagger.parameters['limit'] = { in: 'query', required: true, type: 'number' }
|
||||||
#swagger.parameters['page'] = { in: 'query', required: true, type: 'number' }
|
#swagger.parameters['page'] = { in: 'query', required: true, type: 'number' }
|
||||||
#swagger.parameters['with_deleted'] = { in: 'query', required: true, type: 'boolean' }
|
#swagger.parameters['with_deleted'] = { in: 'query', required: true, type: 'boolean' }
|
||||||
@ -46,6 +51,10 @@ export class ServiceFareController {
|
|||||||
const offset = (param.page - 1) * param.limit;
|
const offset = (param.page - 1) * param.limit;
|
||||||
const limit = 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;
|
||||||
|
|
||||||
var query = await ServiceModel.list(filter);
|
var query = await ServiceModel.list(filter);
|
||||||
|
|
||||||
const res_count = query.clone();
|
const res_count = query.clone();
|
||||||
@ -65,7 +74,7 @@ export class ServiceFareController {
|
|||||||
.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') // ← fix di sini
|
.innerJoin("service_types", "st", 's."serviceTypeId" = st.id AND st.deleted_at IS NULL')
|
||||||
.groupBy('sf."serviceId", st.name');
|
.groupBy('sf."serviceId", st.name');
|
||||||
},
|
},
|
||||||
"sfa",
|
"sfa",
|
||||||
@ -78,6 +87,12 @@ export class ServiceFareController {
|
|||||||
.skip(offset)
|
.skip(offset)
|
||||||
.take(limit);
|
.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 (param.with_deleted) {
|
if (param.with_deleted) {
|
||||||
res_count.withDeleted();
|
res_count.withDeleted();
|
||||||
res_list.withDeleted();
|
res_list.withDeleted();
|
||||||
|
|||||||
Reference in New Issue
Block a user