diff --git a/src/controllers/customer-branch-controller.ts b/src/controllers/customer-branch-controller.ts index 9ae3615..2d40baf 100644 --- a/src/controllers/customer-branch-controller.ts +++ b/src/controllers/customer-branch-controller.ts @@ -117,20 +117,28 @@ export class CustomerBranchController extends Controller { @Query() page: number = 1, @Query() pageSize: number = 30, ) { + const filterStatus = (val?: Status) => { + if (!val) return {}; + + return val !== Status.CREATED && val !== Status.ACTIVE + ? { status: val } + : { OR: [{ status: Status.CREATED }, { status: Status.ACTIVE }] }; + }; + const where = { OR: [ - { nameEN: { contains: query }, zipCode, status }, - { name: { contains: query }, zipCode, status }, - { email: { contains: query }, zipCode, status }, - { code: { contains: query }, zipCode, status }, - { address: { contains: query }, zipCode, status }, - { addressEN: { contains: query }, zipCode, status }, - { province: { name: { contains: query } }, zipCode, status }, - { province: { nameEN: { contains: query } }, zipCode, status }, - { district: { name: { contains: query } }, zipCode, status }, - { district: { nameEN: { contains: query } }, zipCode, status }, - { subDistrict: { name: { contains: query } }, zipCode, status }, - { subDistrict: { nameEN: { contains: query } }, zipCode, status }, + { nameEN: { contains: query }, zipCode, ...filterStatus(status) }, + { name: { contains: query }, zipCode, ...filterStatus(status) }, + { email: { contains: query }, zipCode, ...filterStatus(status) }, + { code: { contains: query }, zipCode, ...filterStatus(status) }, + { address: { contains: query }, zipCode, ...filterStatus(status) }, + { addressEN: { contains: query }, zipCode, ...filterStatus(status) }, + { province: { name: { contains: query } }, zipCode, ...filterStatus(status) }, + { province: { nameEN: { contains: query } }, zipCode, ...filterStatus(status) }, + { district: { name: { contains: query } }, zipCode, ...filterStatus(status) }, + { district: { nameEN: { contains: query } }, zipCode, ...filterStatus(status) }, + { subDistrict: { name: { contains: query } }, zipCode, ...filterStatus(status) }, + { subDistrict: { nameEN: { contains: query } }, zipCode, ...filterStatus(status) }, { customer: { OR: [{ customerName: { contains: query } }, { customerNameEN: { contains: query } }], diff --git a/src/controllers/customer-controller.ts b/src/controllers/customer-controller.ts index a9554f5..d43fecd 100644 --- a/src/controllers/customer-controller.ts +++ b/src/controllers/customer-controller.ts @@ -143,10 +143,17 @@ export class CustomerController extends Controller { @Query() pageSize: number = 30, @Query() includeBranch: boolean = false, ) { + const filterStatus = (val?: Status) => { + if (!val) return {}; + + return val !== Status.CREATED && val !== Status.ACTIVE + ? { status: val } + : { OR: [{ status: Status.CREATED }, { status: Status.ACTIVE }] }; + }; const where = { OR: [ - { customerName: { contains: query }, customerType, status }, - { customerNameEN: { contains: query }, customerType, status }, + { customerName: { contains: query }, customerType, status, ...filterStatus(status) }, + { customerNameEN: { contains: query }, customerType, status, ...filterStatus(status) }, ], } satisfies Prisma.CustomerWhereInput; diff --git a/src/controllers/employee-controller.ts b/src/controllers/employee-controller.ts index 69ec871..2dc9614 100644 --- a/src/controllers/employee-controller.ts +++ b/src/controllers/employee-controller.ts @@ -234,12 +234,20 @@ export class EmployeeController extends Controller { @Query() page: number = 1, @Query() pageSize: number = 30, ) { + const filterStatus = (val?: Status) => { + if (!val) return {}; + + return val !== Status.CREATED && val !== Status.ACTIVE + ? { status: val } + : { OR: [{ status: Status.CREATED }, { status: Status.ACTIVE }] }; + }; + const where = { OR: [ - { firstName: { contains: query }, zipCode, gender, status }, - { firstNameEN: { contains: query }, zipCode, gender, status }, - { lastName: { contains: query }, zipCode, gender, status }, - { lastNameEN: { contains: query }, zipCode, gender, status }, + { firstName: { contains: query }, zipCode, gender, ...filterStatus(status) }, + { firstNameEN: { contains: query }, zipCode, gender, ...filterStatus(status) }, + { lastName: { contains: query }, zipCode, gender, ...filterStatus(status) }, + { lastNameEN: { contains: query }, zipCode, gender, ...filterStatus(status) }, ], } satisfies Prisma.EmployeeWhereInput; diff --git a/src/controllers/product/group-controller.ts b/src/controllers/product/group-controller.ts index 317f4f9..9f7735d 100644 --- a/src/controllers/product/group-controller.ts +++ b/src/controllers/product/group-controller.ts @@ -41,12 +41,22 @@ export class ProductGroup extends Controller { } @Get() - async getProductGroup(@Query() query: string = "") { + async getProductGroup(@Query() query: string = "", @Query() status?: Status) { + const filterStatus = (val?: Status) => { + if (!val) return {}; + + return val !== Status.CREATED && val !== Status.ACTIVE + ? { status: val } + : { OR: [{ status: Status.CREATED }, { status: Status.ACTIVE }] }; + }; + const where = { - OR: [{ name: { contains: query } }, { detail: { contains: query } }], + OR: [ + { name: { contains: query }, ...filterStatus(status) }, + { detail: { contains: query }, ...filterStatus(status) }, + ], } satisfies Prisma.ProductGroupWhereInput; - const result = prisma.productGroup.findMany({ orderBy: { createdAt: "asc" }, where }); - return result; + return prisma.productGroup.findMany({ orderBy: { createdAt: "asc" }, where }); } @Get("{groupId}") diff --git a/src/controllers/product/product-controller.ts b/src/controllers/product/product-controller.ts index aabdbc5..954f1a4 100644 --- a/src/controllers/product/product-controller.ts +++ b/src/controllers/product/product-controller.ts @@ -55,12 +55,24 @@ function imageLocation(id: string) { export class ProductController extends Controller { @Get() async getProduct( + @Query() status?: Status, @Query() query: string = "", @Query() page: number = 1, @Query() pageSize: number = 30, ) { + const filterStatus = (val?: Status) => { + if (!val) return {}; + + return val !== Status.CREATED && val !== Status.ACTIVE + ? { status: val } + : { OR: [{ status: Status.CREATED }, { status: Status.ACTIVE }] }; + }; + const where = { - OR: [{ name: { contains: query } }, { detail: { contains: query } }], + OR: [ + { name: { contains: query }, ...filterStatus(status) }, + { detail: { contains: query }, ...filterStatus(status) }, + ], } satisfies Prisma.ProductWhereInput; const [result, total] = await prisma.$transaction([ diff --git a/src/controllers/product/type-controller.ts b/src/controllers/product/type-controller.ts index ef859da..93db012 100644 --- a/src/controllers/product/type-controller.ts +++ b/src/controllers/product/type-controller.ts @@ -43,10 +43,24 @@ export class ProductType extends Controller { } @Get() - async getProductType(@Query() query: string = "", @Query() productGroupId?: string) { + async getProductType( + @Query() query: string = "", + @Query() productGroupId?: string, + @Query() status?: Status, + ) { + const filterStatus = (val?: Status) => { + if (!val) return {}; + + return val !== Status.CREATED && val !== Status.ACTIVE + ? { status: val } + : { OR: [{ status: Status.CREATED }, { status: Status.ACTIVE }] }; + }; const where = { AND: { productGroupId }, - OR: [{ name: { contains: query } }, { detail: { contains: query } }], + OR: [ + { name: { contains: query }, ...filterStatus(status) }, + { detail: { contains: query }, ...filterStatus(status) }, + ], } satisfies Prisma.ProductTypeWhereInput; const result = prisma.productType.findMany({ orderBy: { createdAt: "asc" }, where }); return result;