refactor: reduce code duplication

This commit is contained in:
Methapon Metanipat 2024-11-12 14:55:56 +07:00
parent 1a18f7c5d7
commit 6fdfd5b140

View file

@ -207,64 +207,18 @@ export class EmployeeController extends Controller {
@Query() page: number = 1, @Query() page: number = 1,
@Query() pageSize: number = 30, @Query() pageSize: number = 30,
) { ) {
const where = { return this.listByCriteria(
OR: queryOrNot<Prisma.EmployeeWhereInput[]>(query, [ req,
{ zipCode,
employeePassport: {
some: { number: { contains: query } },
},
},
{ firstName: { contains: query } },
{ firstNameEN: { contains: query } },
{ lastName: { contains: query } },
{ lastNameEN: { contains: query } },
...whereAddressQuery(query),
]),
AND: {
...filterStatus(status),
customerBranch: {
customerId,
customer: isSystem(req.user)
? undefined
: {
registeredBranch: {
OR: permissionCond(req.user),
},
},
},
subDistrict: zipCode ? { zipCode } : undefined,
gender, gender,
}, status,
} satisfies Prisma.EmployeeWhereInput; visa,
passport,
const [result, total] = await prisma.$transaction([ customerId,
prisma.employee.findMany({ query,
orderBy: [{ statusOrder: "asc" }, { createdAt: "asc" }],
include: {
employeePassport: passport ? { orderBy: { expireDate: "desc" } } : undefined,
employeeVisa: visa ? { orderBy: { expireDate: "desc" } } : undefined,
province: true,
district: true,
subDistrict: true,
customerBranch: {
include: { customer: true },
},
createdBy: true,
updatedBy: true,
},
where,
take: pageSize,
skip: (page - 1) * pageSize,
}),
prisma.employee.count({ where }),
]);
return {
result,
page, page,
pageSize, pageSize,
total, );
};
} }
@Post("list") @Post("list")