This commit is contained in:
wayanrivan
2026-04-30 08:32:15 +07:00
parent bb2d77e825
commit a9d0f649a8

View File

@ -1,5 +1,5 @@
import { NextFunction, Response } from "express"; import { NextFunction, Response } from "express";
import { RegistrationFee, Service,Paging } from "entity"; import { RegistrationFee, Service, Paging } from "entity";
import { Request } from "express-jwt"; import { Request } from "express-jwt";
import Joi from "joi"; import Joi from "joi";
import { ILogObj, Logger } from "tslog"; import { ILogObj, Logger } from "tslog";
@ -24,8 +24,12 @@ export class RegistrationFeeController {
/* /*
#swagger.tags = ['Registration Fee'] #swagger.tags = ['Registration Fee']
#swagger.security = [{ "bearerAuth": [] }] #swagger.security = [{ "bearerAuth": [] }]
#swagger.parameters['filter'] = { description: '', in: 'query', type: 'string' } #swagger.parameters['filter'] = {
#swagger.parameters['limit'] = { in: 'query', required: true, type: 'number' } 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['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' }
#swagger.parameters['order_field'] = { in: 'query', required: true, type: 'string' } #swagger.parameters['order_field'] = { in: 'query', required: true, type: 'string' }
@ -47,16 +51,10 @@ export class RegistrationFeeController {
const query = OrmHelper.DB.getRepository(RegistrationFee) const query = OrmHelper.DB.getRepository(RegistrationFee)
.createQueryBuilder("RegistrationFee") .createQueryBuilder("RegistrationFee")
.leftJoinAndMapMany( .leftJoinAndSelect("RegistrationFee.services", "service")
"RegistrationFee.services",
Service,
"service",
"service.id::text = ANY(RegistrationFee.service)"
)
.select([ .select([
"RegistrationFee.id", "RegistrationFee.id",
"RegistrationFee.type", "RegistrationFee.type",
"RegistrationFee.service",
"RegistrationFee.created_at", "RegistrationFee.created_at",
"RegistrationFee.updated_at", "RegistrationFee.updated_at",
"service.id", "service.id",
@ -73,6 +71,11 @@ export class RegistrationFeeController {
query.andWhere("service.name ILIKE :service_name", { service_name: `%${filter.service_name}%` }); 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) { if (param.with_deleted) {
query.withDeleted(); query.withDeleted();
} }