diff --git a/src/controllers/room_to_pharmacy.ts b/src/controllers/room_to_pharmacy.ts index b4d35fc..b3c56cc 100644 --- a/src/controllers/room_to_pharmacy.ts +++ b/src/controllers/room_to_pharmacy.ts @@ -73,7 +73,11 @@ export class RoomToPharmacyController { /* #swagger.tags = ['RoomToPharmacy'] #swagger.security = [{ "bearerAuth": [] }] - #swagger.parameters['filter'] = { description: '', in: 'query', type: 'string' } + #swagger.parameters['filter'] = { + description: "Filter in JSON format. Available fields: room (string, partial match case-insensitive), code (string, partial match case-insensitive), status (string, exact match), pharmacy_room (string, partial match case-insensitive). Example: {\"room\":\"igd\",\"code\":\"R01\",\"status\":\"active\",\"pharmacy_room\":\"apotek\"}", + 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' } @@ -134,6 +138,16 @@ export class RoomToPharmacyController { roomQuery.andWhere("room.status = :status", { status: filter.status }); } + // Filter room.code + if (filter.code && filter.code !== "") { + roomQuery.andWhere("room.code ILIKE :code", { code: `%${filter.code}%` }); + } + + // Filter pharmacy_room.room + if (filter.pharmacy_room && filter.pharmacy_room !== "") { + roomQuery.andWhere("pharmacy_room.room ILIKE :pharmacy_room", { pharmacy_room: `%${filter.pharmacy_room}%` }); + } + const total_count_data = await roomQuery.clone().getCount(); const rooms = await roomQuery