private void SearchCompanyEmployees(CompanyEmployeeSearchViewModel model) { using (UnitOfWorkManager.NewUnitOfWork()) { LoadPostStatus(model); var healthStatus = _categoryService.GetByParentName("HealthStatus"); LoadHealthStatus(model, healthStatus); var adverseFactors = _companyEmployeeService.GetAdverseFactors(); LoadAdverseFator(model, _companyEmployeeService.GetAdverseFactors()); IList <string> departments = _companyEmployeeService.GetDepartments(); IList <string> workTypes = _companyEmployeeService.GetWorkTypes(WorkContext.CurrentMembershipUser.Company.Id); LoadDepartments(model, departments); LoadWorkTypes(model, workTypes); var searchModel = new CompanyEmployeeSearchModel { PageIndex = model.PageIndex, KeyWords = string.IsNullOrEmpty(model.KeyWords) ? "" : model.KeyWords, SelectedAdverseFactor = model.SelectedAdverseFactor, SelectedHealthStatus = model.SelectedHealthStatus, SelectedPostStatus = model.SelectedPostStatus, SeletedWorkType = model.SelectedWorkType, SelectedDepartment = model.SelectedDepartment, CompanyId = WorkContext.CurrentMembershipUser.Company.Id, PageSize = int.MaxValue }; model.Employees = _companyEmployeeService.Search(searchModel); } }
public IPagedList <CompanyEmployee> Search(CompanyEmployeeSearchModel searchModel) { string selectedAdverseFactor = null; bool adverseFactorCompareNullOrEmpty = false; if (searchModel.SelectedAdverseFactor != null) { selectedAdverseFactor = searchModel.SelectedAdverseFactor.Replace("NULL", ""); adverseFactorCompareNullOrEmpty = true; } string selectedDepartment = null; bool departmentCompareNullOrEmpty = false; if (searchModel.SelectedDepartment != null) { selectedDepartment = searchModel.SelectedDepartment.Replace("NULL", ""); departmentCompareNullOrEmpty = true; } string selectedWorkType = null; bool workTypeCompareEmptyOrNull = false; if (searchModel.SeletedWorkType != null) { selectedWorkType = searchModel.SeletedWorkType.Replace("NULL", ""); workTypeCompareEmptyOrNull = true; } var query = _context.CompanyEmployee .Where(x => x.Deleted == false && (searchModel.CompanyId == null || x.Company.Id == searchModel.CompanyId) && (searchModel.KeyWords == string.Empty || x.EmployeeBaseInfo.UserName == searchModel.KeyWords || x.EmployeeBaseInfo.IDCard == searchModel.KeyWords || x.WorkNumber == searchModel.KeyWords || x.Email == searchModel.KeyWords || x.ContactPhone == searchModel.KeyWords) && (searchModel.SelectedAdverseFactor == null || selectedAdverseFactor.Contains(x.AdverseFactor) || adverseFactorCompareNullOrEmpty == false || adverseFactorCompareNullOrEmpty == true && string.IsNullOrEmpty(x.AdverseFactor) == true) && (searchModel.SelectedDepartment == null || selectedDepartment.Contains(x.Department) || departmentCompareNullOrEmpty == false || departmentCompareNullOrEmpty == true && string.IsNullOrEmpty(x.Department) == true) && (searchModel.SelectedHealthStatus == null || x.HealthStatus.Id == searchModel.SelectedHealthStatus) && (searchModel.SelectedPostStatus == null || (searchModel.SelectedPostStatus == (int?)CompanyEmployeePostStatus.Leave) && x.LeaveDate != null || searchModel.SelectedPostStatus == (int?)CompanyEmployeePostStatus.Stay && x.LeaveDate == null) && (searchModel.SeletedWorkType == null || selectedWorkType.Contains(x.WorkType) || workTypeCompareEmptyOrNull == false || workTypeCompareEmptyOrNull == true && string.IsNullOrEmpty(x.WorkType)) ) .OrderByDescending(x => x.StartPostDate); var count = query.Count(); var result = query.Skip((searchModel.PageIndex - 1) * searchModel.PageSize).Take(searchModel.PageSize).ToList(); return(new PagedList <CompanyEmployee>(result, searchModel.PageIndex, searchModel.PageSize, count)); }
public IPagedList <CompanyEmployee> Search(CompanyEmployeeSearchModel searchModel) { return(_companyEmployeeRepository.Search(searchModel)); }