Пример #1
0
        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>());
        }
Пример #3
0
        public async Task <CompanySearchDTO> SearchCompany(SearchCompanyQuery query)
        {
            var result = await _companiesService.SearchCompany(query);

            return(result);
        }