public List <CandidateDTO> GetCandidates(CandidateSearchParams searchParams) { using (var context = new CandidateDbContext()) { var candidateDtos = _candidateRepository.GetCandidates(context, searchParams); return(candidateDtos); } }
public IHttpActionResult GetCandidates(CandidateSearchParams candidateSearchParams) { var candidates = Task.Run(() => _canidateService.GetCandidates(candidateSearchParams)).Result; if (candidates != null) { return(Ok(candidates)); } return(BadRequest()); }
public List <CandidateDTO> GetCandidates(CandidateDbContext _context, CandidateSearchParams searchParams) { { if (searchParams != null && _context != null) { var candidates = _context.Candidates; var qualifications = _context.Qualifications; var candidateDTOs = (from candidate in candidates select new CandidateDTO() { FirstName = candidate.FirstName, LastName = candidate.LastName, Email = candidate.Email, ZipCode = candidate.ZipCode, PhoneNumber = candidate.PhoneNumber, ID = candidate.ID, Qualifications = (from qualification in qualifications where qualification.CandidateID == candidate.ID select new QualificationDTO() { DateStarted = qualification.DateStarted, DateCompleted = qualification.DateCompleted, Name = qualification.Name, ID = qualification.ID, Type = qualification.Type, CandidateID = candidate.ID }).ToList() }).ToList(); var filteredCandidateDTOs = candidateDTOs.Where(c => (string.IsNullOrEmpty(searchParams.FirstName) || c.FirstName.ToLower().Contains(searchParams.FirstName.ToLower())) && (string.IsNullOrEmpty(searchParams.LastName) || c.LastName.ToLower().Contains(searchParams.LastName.ToLower())) && (string.IsNullOrEmpty(searchParams.Email) || c.Email.ToLower().Contains(searchParams.Email.ToLower())) && (string.IsNullOrEmpty(searchParams.PhoneNumber) || c.PhoneNumber == searchParams.PhoneNumber) && (string.IsNullOrEmpty(searchParams.ZipCode) || c.ZipCode == searchParams.ZipCode) // if dont have qualification search params, dont care about candidate qualifications && (searchParams.QualificationSearchParams == null // otherwise filter qualifications || (c.Qualifications != null && c.Qualifications.Any(q => (searchParams.QualificationSearchParams.Date == null || (q.DateStarted < searchParams.QualificationSearchParams.Date) && (q.DateCompleted > searchParams.QualificationSearchParams.Date)) && (searchParams.QualificationSearchParams.Type == null || q.Type?.ToLower() == searchParams.QualificationSearchParams.Type?.ToLower()) // Was going to allow muliple names to be filtered in one query, but ran out of time to implement in UI && (searchParams.QualificationSearchParams.CertificationNames == null || searchParams.QualificationSearchParams?.CertificationNames?.Count() == 0 || (q.Name != null && q.Name.Contains(searchParams?.QualificationSearchParams?.CertificationNames[0]))) )) )).ToList(); return(filteredCandidateDTOs.Count > 0? filteredCandidateDTOs : new List <CandidateDTO>()); } return(new List <CandidateDTO>()); } }