Untitled

 avatar
unknown
plain_text
13 days ago
1.4 kB
3
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