public IActionResult ListEmployees(ListEmployeeFilter filter)
        {
            var employees = _repository.Employees;

            if (filter.DepartmentId.HasValue)
            {
                employees = employees.Where(e => e.DepartmentId == filter.DepartmentId.Value);
            }

            if (filter.EmployedSince.HasValue)
            {
                employees = employees.Where(e => e.EmploymentStartDate >= filter.EmployedSince.Value);
            }

            if (filter.Type.HasValue)
            {
                employees = employees.Where(e => e.Type == filter.Type.Value);
            }

            if (!string.IsNullOrWhiteSpace(filter.Name))
            {
                employees = employees.Where(e => e.Name.Contains(filter.Name));
            }

            var model = new ListEmployeeViewModel();

            model.Employees = employees.Select(i => new ListEmployeeItem
            {
                Name       = i.Name,
                Department = i.Department.Name,
                Type       = i.Type,
                HireDate   = i.EmploymentStartDate
            }).ToArray();

            model.Filter      = filter;
            model.Departments = _repository.Departments.ToArray()
                                .Select(i => new SelectListItem()
            {
                Text = i.Name, Value = i.Id.ToString()
            });
            model.EmployeeTypes = ((EmployeeType[])Enum.GetValues(typeof(EmployeeType))).Select(i => new SelectListItem
            {
                Text = i.ToString("G"), Value = ((int)i).ToString()
            });

            return(View(model));
        }
Example #2
0
        protected override void OnAppearing()
        {
            base.OnAppearing();

            BindingContext = new ListEmployeeViewModel();
        }