diff --git a/src/controllers/03-customer-controller.ts b/src/controllers/03-customer-controller.ts index 1854842..5a6ef36 100644 --- a/src/controllers/03-customer-controller.ts +++ b/src/controllers/03-customer-controller.ts @@ -170,6 +170,10 @@ export class CustomerController extends Controller { @Query() activeBranchOnly?: boolean, @Query() startDate?: Date, @Query() endDate?: Date, + @Query() businessType?: string, + @Query() province?: string, + @Query() district?: string, + @Query() subDistrict?: string, ) { const where = { OR: queryOrNot(query, [ @@ -192,6 +196,47 @@ export class CustomerController extends Controller { : permissionCond(req.user, { activeOnly: activeBranchOnly }), }, }, + branch: { + some: { + AND: [ + businessType + ? { + OR: [ + { businessType: { name: { contains: businessType, mode: "insensitive" } } }, + { businessType: { nameEN: { contains: businessType, mode: "insensitive" } } }, + ], + } + : {}, + + province + ? { + OR: [ + { province: { name: { contains: province, mode: "insensitive" } } }, + { province: { nameEN: { contains: province, mode: "insensitive" } } }, + ], + } + : {}, + + district + ? { + OR: [ + { district: { name: { contains: district, mode: "insensitive" } } }, + { district: { nameEN: { contains: district, mode: "insensitive" } } }, + ], + } + : {}, + + subDistrict + ? { + OR: [ + { subDistrict: { name: { contains: subDistrict, mode: "insensitive" } } }, + { subDistrict: { nameEN: { contains: subDistrict, mode: "insensitive" } } }, + ], + } + : {}, + ], + }, + }, ...whereDateQuery(startDate, endDate), } satisfies Prisma.CustomerWhereInput;