コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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));
        }
コード例 #3
0
ファイル: CompanyEmployeeService.cs プロジェクト: junlu3/CMS
 public IPagedList <CompanyEmployee> Search(CompanyEmployeeSearchModel searchModel)
 {
     return(_companyEmployeeRepository.Search(searchModel));
 }