public async Task <IActionResult> Get([FromQuery] EmployeeSearchParametrs parametrs) { var employees = await _employeeService.Get(parametrs); if (employees == null) { return(NotFound()); } return(Ok(employees)); }
public async Task <List <EmployeeViewResult> > Get(EmployeeSearchParametrs parametrs) { var query = _dbContext.Employees .Include(d => d.Department) .Include(d => d.Department.Manager) .AsQueryable(); if (parametrs.Id.HasValue) { query = query.Where(e => e.Id == parametrs.Id); } if (!string.IsNullOrWhiteSpace(parametrs.Name)) { query = query.Where(e => e.Name.ToLower().Contains(parametrs.Name.ToLower())); } if (!string.IsNullOrWhiteSpace(parametrs.Email)) { query = query.Where(e => e.Email.Contains(parametrs.Email)); } if (!string.IsNullOrWhiteSpace(parametrs.JobTitle)) { query = query.Where(e => e.JobTitle.ToLower().Equals(parametrs.JobTitle.ToLower())); } if (parametrs.DepartmentId.HasValue) { query = query.Where(e => e.DepartmentId.HasValue && e.DepartmentId == parametrs.DepartmentId); } if (parametrs.ManagerId.HasValue) { query = query.Where(e => e.Department.ManagerId.HasValue && e.Department.ManagerId == parametrs.ManagerId); } var employees = await query.ToListAsync(); if (employees.Count == 0) { return(null); } List <EmployeeViewResult> employeeViews = new List <EmployeeViewResult>(); foreach (var employee in employees) { employeeViews.Add(new EmployeeViewResult { Id = employee.Id, Name = employee.Name, PhoneNumber = employee.PhoneNumber, Email = employee.Email, JobTitle = employee.JobTitle, DepartmentName = employee.Department?.Name, ManagerName = employee.Department?.Manager?.Name }); } return(employeeViews); }