public List <Employee> LoadEmployees(EmployeePageRequest pageRequest)
        {
            var employees = Context.Employees.Include(e => e.Title).ToList();

            UpdateAdditionalDetail(employees);

            return(FilterEmployeesByCriteria(employees, pageRequest));
        }
        private List <Employee> FilterEmployeesByCriteria(List <Employee> employees, EmployeePageRequest pageRequest)
        {
            if (pageRequest.Criteria == null || !pageRequest.Criteria.Any())
            {
                return(employees);
            }

            pageRequest.RemoveEmptyCriteria();

            foreach (var criteria in pageRequest.Criteria)
            {
                var searchValue = criteria.Value;

                switch (criteria.Key)
                {
                case EmployeeFilterKey.All:
                    employees = employees.Where(x => (x.DisplayId.ContainIgnoreCase(searchValue) ||
                                                      x.Name.ContainIgnoreCase(searchValue) ||
                                                      x.Title.Name.ContainIgnoreCase(searchValue) ||
                                                      x.Email.ContainIgnoreCase(searchValue) ||
                                                      x.Address.ContainIgnoreCase(searchValue))).ToList();
                    break;

                case EmployeeFilterKey.Id:
                    employees = employees.Where(x => x.DisplayId.ContainIgnoreCase(searchValue)).ToList();
                    break;

                case EmployeeFilterKey.Name:
                    employees = employees.Where(x => x.Name.ContainIgnoreCase(searchValue)).ToList();
                    break;

                case EmployeeFilterKey.Title:
                    employees = employees.Where(x => x.Title.Name.ContainIgnoreCase(searchValue)).ToList();
                    break;

                case EmployeeFilterKey.Email:
                    employees = employees.Where(x => x.Email.ContainIgnoreCase(searchValue)).ToList();
                    break;

                default:
                    employees = employees.Where(x => x.Address.ContainIgnoreCase(searchValue)).ToList();
                    break;
                }
            }

            return(employees);
        }
Example #3
0
        public List <Employee> LoadEmployees(EmployeePageRequest pageRequest)
        {
            var result = employeeRepository.LoadEmployees(pageRequest);

            result.ForEach(x =>
            {
                x.Title = new Title
                {
                    Id   = x.Title.Id,
                    Name = x.Title.Name
                };
                x.EmployeeSkill = x.EmployeeSkill?.Select(s => new EmployeeSkill
                {
                    Id         = s.Id,
                    EmployeeId = x.Id,
                    SkillId    = s.SkillId,
                    Skill      = new Skill {
                        Id = s.SkillId, Name = s.Skill.Name
                    }
                }).ToList();
            });

            return(result);
        }