public async Task <CompanySearchDTO> SearchCompany(SearchCompanyQuery query) { var result = await _companiesRepository.Search(query); var companies = new CompanySearchDTO() { Results = result.Select(c => { var company = new CompanyDTO() { EstablishmentYear = c.EstablishmentYear, Name = c.Name, Employees = c.Employees.Select(e => { var employee = new EmployeeDTO() { DateOfBirth = e.DateOfBirth, FirstName = e.FirstName, LastName = e.LastName, JobTitle = e.JobTitle.ToString("g") }; return(employee); }).ToList() }; return(company); }) }; return(companies); }
public async Task <IEnumerable <Company> > Search(SearchCompanyQuery query) { if (query.EmployeeJobTitles == null) //to avoid null in JobTitlesList { query.EmployeeJobTitles = new List <string>(); } var companies = await _context.Companies.Include(c => c.Employees).ToListAsync(); if (!string.IsNullOrWhiteSpace(query.Keyword) && query.EmployeeDateOfBirthFrom != null && query.EmployeeDateOfBirthTo != null) { var result = companies.Where(c => c.Name.Contains(query.Keyword) || c.Employees.Any(e => e.FirstName.Contains(query.Keyword) || e.LastName.Contains(query.Keyword)) || c.Employees.Any(k => (k.DateOfBirth > query.EmployeeDateOfBirthFrom && k.DateOfBirth < query.EmployeeDateOfBirthTo)) || c.Employees.Any(e => query.EmployeeJobTitles.Any(s => JobTitleHelper.GetEnumFromString(s) == e.JobTitle))).ToList(); return(result); } else if (string.IsNullOrWhiteSpace(query.Keyword) && (query.EmployeeDateOfBirthFrom != null && query.EmployeeDateOfBirthTo != null)) { var result = companies.Where(c => c.Employees.Any(k => (k.DateOfBirth > query.EmployeeDateOfBirthFrom && k.DateOfBirth < query.EmployeeDateOfBirthTo)) || c.Employees.Any(e => query.EmployeeJobTitles.Any(s => JobTitleHelper.GetEnumFromString(s) == e.JobTitle))).ToList(); return(result); } else if (!string.IsNullOrWhiteSpace(query.Keyword) && (query.EmployeeDateOfBirthFrom == null || query.EmployeeDateOfBirthTo == null)) { var result = companies.Where(c => c.Name.Contains(query.Keyword) || c.Employees.Any(e => e.FirstName.Contains(query.Keyword) || e.LastName.Contains(query.Keyword)) || c.Employees.Any(e => query.EmployeeJobTitles.Any(s => JobTitleHelper.GetEnumFromString(s) == e.JobTitle))).ToList(); return(result); } else if (string.IsNullOrWhiteSpace(query.Keyword) && (query.EmployeeDateOfBirthFrom == null || query.EmployeeDateOfBirthTo == null)) { var result = companies.Where(c => c.Employees.Any(e => query.EmployeeJobTitles.Any(s => JobTitleHelper.GetEnumFromString(s) == e.JobTitle))).ToList(); return(result); } return(new List <Company>()); }
public async Task <CompanySearchDTO> SearchCompany(SearchCompanyQuery query) { var result = await _companiesService.SearchCompany(query); return(result); }