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() pageSize: number = 30,
) {
const where = {
OR: queryOrNot<Prisma.EmployeeWhereInput[]>(query, [
{
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,
},
} satisfies Prisma.EmployeeWhereInput;
const [result, total] = await prisma.$transaction([
prisma.employee.findMany({
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,
return this.listByCriteria(
req,
zipCode,
gender,
status,
visa,
passport,
customerId,
query,
page,
pageSize,
total,
};
);
}
@Post("list")