diff --git a/src/controllers/registrationfee.ts b/src/controllers/registrationfee.ts index e2056c7..74566a8 100644 --- a/src/controllers/registrationfee.ts +++ b/src/controllers/registrationfee.ts @@ -1,5 +1,5 @@ import { NextFunction, Response } from "express"; -import { RegistrationFee, Service,Paging } from "entity"; +import { RegistrationFee, Service, Paging } from "entity"; import { Request } from "express-jwt"; import Joi from "joi"; import { ILogObj, Logger } from "tslog"; @@ -24,8 +24,12 @@ export class RegistrationFeeController { /* #swagger.tags = ['Registration Fee'] #swagger.security = [{ "bearerAuth": [] }] - #swagger.parameters['filter'] = { description: '', in: 'query', type: 'string' } - #swagger.parameters['limit'] = { in: 'query', required: true, type: 'number' } + #swagger.parameters['filter'] = { + description: "Filter in JSON format. Available fields: type (string, exact match), service_name (string, partial match case-insensitive), service_id (number, exact match). Example: {\"type\":\"premium\",\"service_name\":\"konsultasi\",\"service_id\":5}", + in: 'query', + type: 'string' + } + #swagger.parameters['limit'] = { 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['order_field'] = { in: 'query', required: true, type: 'string' } @@ -47,16 +51,10 @@ export class RegistrationFeeController { const query = OrmHelper.DB.getRepository(RegistrationFee) .createQueryBuilder("RegistrationFee") - .leftJoinAndMapMany( - "RegistrationFee.services", - Service, - "service", - "service.id::text = ANY(RegistrationFee.service)" - ) + .leftJoinAndSelect("RegistrationFee.services", "service") .select([ "RegistrationFee.id", "RegistrationFee.type", - "RegistrationFee.service", "RegistrationFee.created_at", "RegistrationFee.updated_at", "service.id", @@ -73,6 +71,11 @@ export class RegistrationFeeController { query.andWhere("service.name ILIKE :service_name", { service_name: `%${filter.service_name}%` }); } + // ── Filter service.id ───────────────────────────────────────────── + if (filter.service_id && filter.service_id !== "") { + query.andWhere("service.id = :service_id", { service_id: filter.service_id }); + } + if (param.with_deleted) { query.withDeleted(); }