private bool CanTakeEmployee(SearchCompanyDTO searchCompany, Employee employee) { var a = (searchCompany.EmployeeDateOfBirthTo == null || employee.DateOfBirth < searchCompany.EmployeeDateOfBirthTo); var b = (searchCompany.EmployeeDateOfBirthFrom == null || employee.DateOfBirth > searchCompany.EmployeeDateOfBirthFrom); var c = (!searchCompany.EmployeeJobTitles.Any() || searchCompany.EmployeeJobTitles.Contains(employee.JobTitle)); var d = a && b && c; return(d); }
public async Task <ICollection <CompanySearchResultDTO> > SearchCompany(SearchCompanyDTO searchCompany) { var result = await Task.Run(() => { var entries = _dbContext.Companies.Include(x => x.Employees).Where(x => string.IsNullOrEmpty(searchCompany.Keyword) || (x.Name.Contains(searchCompany.Keyword) || x.Employees.Any(y => y.FirstName.Contains(searchCompany.Keyword) || y.LastName.Contains(searchCompany.Keyword)))).ToList(); foreach (var company in entries) { var filtered = new List <Employee>(); foreach (var employee in company.Employees) { if (CanTakeEmployee(searchCompany, employee)) { filtered.Add(employee); } } company.Employees.Clear(); company.Employees.AddRange(filtered); } var mapped = _mapper.Map <ICollection <CompanySearchResultDTO> >(entries); return(mapped); }); return(result); }