update: filter in registrationfee

This commit is contained in:
wayanrivan
2026-04-20 10:07:15 +07:00
parent e34ccc0cde
commit 787ca4ad25
2 changed files with 27 additions and 8 deletions

View File

@ -15,7 +15,7 @@ const log: Logger<ILogObj> = new Logger({
});
const RegistrationFeeCreateAndUpdateSchema = {
service: Joi.array().items(Joi.string().allow(null,"").uuid()).optional().label("Service"),
service: Joi.array().items(Joi.string().allow(null, "").uuid()).optional().label("Service"),
type: Joi.string().valid("emergency", "outpatient").required().label("Type"),
};
@ -24,15 +24,23 @@ export class RegistrationFeeController {
/*
#swagger.tags = ['Registration Fee']
#swagger.security = [{ "bearerAuth": [] }]
#swagger.parameters['filter'] = { description: '', in: 'query', type: 'string' }
*/
try {
const result = await OrmHelper.DB.getRepository(RegistrationFee)
const schema = Joi.object().keys({
filter: Joi.string().allow("").optional().label("Filter"),
});
const param = await schema.validateAsync(req.query);
const filter = param.filter && param.filter !== "" ? JSON.parse(param.filter) : {};
const query = OrmHelper.DB.getRepository(RegistrationFee)
.createQueryBuilder("RegistrationFee")
.leftJoinAndMapMany(
"RegistrationFee.services", // ← property yang akan diisi
"RegistrationFee.services",
Service,
"service",
"service.id::text = ANY(RegistrationFee.service)" // ← join langsung ke kolom array
"service.id::text = ANY(RegistrationFee.service)"
)
.select([
"RegistrationFee.id",
@ -42,8 +50,19 @@ export class RegistrationFeeController {
"RegistrationFee.updated_at",
"service.id",
"service.name",
])
.getMany();
]);
// ── Filter RegistrationFee.type ───────────────────────────────────
if (filter.type && filter.type !== "") {
query.andWhere("RegistrationFee.type = :type", { type: filter.type });
}
// ── Filter service.name ───────────────────────────────────────────
if (filter.service_name && filter.service_name !== "") {
query.andWhere("service.name ILIKE :service_name", { service_name: `%${filter.service_name}%` });
}
const result = await query.getMany();
if (!result || result.length === 0) throw { message: "Registration Fee " + Language.lang.failed_not_found };

View File

@ -374,12 +374,12 @@ export class UserToRoomController {
.where("user = :userId", { userId: param.user_id })
.execute();
let relation: UserToRoom;
let relation: UserToRoom | any;
for (const roomId of param.room_ids) {
relation = new UserToRoom();
relation.user = await userRepo.findOneBy({ id: param.user_id });
relation.room = await roomRepo.findOneBy({ id: roomId });
relation.created_by = req.auth.data.name;
relation.created_by = req.auth?.data.name;
await userToRoomRepo.save(relation);
}