Untitled
unknown
plain_text
7 months ago
1.4 kB
4
Indexable
async findAllWithPaginationAndSearch(
queryDto: EmployeeQueryDto
) {
const { search, page = 1, limit = 10 } = queryDto;
const query = this.employeeRepository.createQueryBuilder('employee')
.leftJoinAndSelect('employee.WorkDatum', 'WorkDatum')
.leftJoinAndSelect('employee.religion', 'religion')
.leftJoinAndSelect('employee.address', 'address')
.leftJoinAndSelect('employee.marital', 'marital')
.leftJoinAndSelect('employee.emergency', 'emergency')
.leftJoinAndSelect('employee.education', 'education')
.leftJoinAndSelect('employee.medical_record', 'medical_record')
.leftJoinAndSelect('employee.insurance', 'insurance')
.leftJoinAndSelect('employee.career_transfer', 'career_transfer')
.leftJoinAndSelect('employee.career_resign', 'career_resign')
.leftJoinAndSelect('WorkDatum.bu', 'bu')
.leftJoinAndSelect('WorkDatum.dept', 'dept')
.leftJoinAndSelect('WorkDatum.org', 'org')
.leftJoinAndSelect('WorkDatum.position', 'position')
.leftJoinAndSelect('WorkDatum.grade', 'grade');
if (search) {
query.where('employee.name ILIKE :search', { search: `%${search}%` });
}
query.skip((page - 1) * limit).take(limit);
const [result, total] = await query.getManyAndCount();
return {
data: result,
total,
page,
lastPage: Math.ceil(total / limit),
};
}
Editor is loading...
Leave a Comment