fixing doctor package searching

This commit is contained in:
avicenan
2026-03-17 16:20:03 +07:00
parent 33c526b832
commit a749e62c05
2 changed files with 26 additions and 20 deletions

View File

@ -7,6 +7,7 @@ import { ReturnHelper } from "../helpers/express/return";
import { Language } from "../langs/lang";
import { DoctorItemPackageModel } from "../model/doctor_item_package";
import { OrmHelper } from "../helpers/orm";
import CommonHelper from "../helpers/common";
const log: Logger<ILogObj> = new Logger({
name: "[DoctorItemPackageController]",
@ -36,33 +37,42 @@ export class DoctorItemPackageController {
});
let param: any = await schema.validateAsync(req.query);
let filter = param.filter && param.filter !== "" ? JSON.parse(param.filter) : {};
filter.doctor_id = param.doctor_id;
const query = await DoctorItemPackageModel.list(filter);
let filter = param.filter && param.filter !== "" ? JSON.parse(param.filter) : {};
let filterAny = filter.any && filter.any !== "" ? filter.any : "";
let filterObj = { ...filter } as any;
delete filterObj.any;
filterObj = { ...filterObj, "DoctorItemPackage.doctor": param.doctor_id };
const query = await DoctorItemPackageModel.list(filterObj, filterAny);
const orderField = param.order_field || "id";
const orderDirection = param.order_direction || "asc";
const total_count_data = await query.getCount();
const offset = (param.page - 1) * param.limit;
const rows = await query
const res_count = query;
const res_list = query
.leftJoinAndSelect("DoctorItemPackage.items", "ItemMaster")
.leftJoinAndSelect("ItemMaster.generic_name", "GenericName")
.leftJoinAndSelect("ItemMaster.type_detail", "item_type")
.orderBy("DoctorItemPackage." + orderField, orderDirection)
.offset(offset)
.limit(param.limit)
.getMany();
const packages = rows.map((row: any) => ({
id: row.id,
name: row.name,
description: row.description || null,
active: row.active,
items: row.items || [],
}));
// const packages = rows.map((row: any) => ({
// id: row.id,
// name: row.name,
// description: row.description || null,
// active: row.active,
// items: row.items || [],
// }));
const list_data = packages;
const count_data = packages.length;
const current_page = param.page;
const total_count_data = await res_count.getCount();
const list_data = await res_list.getMany();
const count_data = CommonHelper.countObject(list_data);
return ReturnHelper.successResponselist(res, 200, Language.lang.success_view, count_data, current_page, total_count_data, list_data);
} catch (e: unknown) {

View File

@ -16,7 +16,7 @@ export class DoctorItemPackageModel {
}
if (filterAny && filterAny !== "" && filterAny !== null && filterAny !== undefined) {
const filterResult = CommonHelper.handleFilter({
filter: JSON.stringify({ any: filterAny }),
filter: JSON.stringify({ any: filterAny.toLowerCase() }),
col_any_eq: [],
col_any_like: ["DoctorItemPackage.name"],
});
@ -29,10 +29,6 @@ export class DoctorItemPackageModel {
let query = repo
.createQueryBuilder("DoctorItemPackage")
.leftJoinAndSelect("DoctorItemPackage.doctor", "Doctor")
.leftJoinAndSelect("DoctorItemPackage.items", "ItemMaster")
.leftJoinAndSelect("ItemMaster.generic_name", "GenericName");
if (whereAttr.length != 0) {
query = query.where(whereAttr.join(" and "), whereVal);
}