public IHttpActionResult SearchCandidate(CandidateFilteringViewModel candidateFilteringVM) { if (!ModelState.IsValid) { return(Ok(new { Error = "Invalid ModelState" })); } try { var candidates = candidateService.SearchCandidates(candidateFilteringVM); return(Ok(new { Success = candidates })); } catch (Exception ex) { return(Ok(new { Error = ex.Message })); } }
public List <CandidateViewModel> SearchCandidates(CandidateFilteringViewModel candidateFilteringVM) { var query = _db.Candidates.AsQueryable().AsQueryable(); //List<IQueryable> queryList = new List<IQueryable>(); if (!String.IsNullOrEmpty(candidateFilteringVM.Profile.Trim())) { query = (from c in query.Where(x => x.Profile.ToLower().Contains(candidateFilteringVM.Profile.ToLower())) select c).AsQueryable(); } //if (candidateFilteringVM.PositionList != null && candidateFilteringVM.PositionList.Count() > 0) //{ // foreach (string position in candidateFilteringVM.PositionList) // { // query = (from c in query.Where(x => x.Position.ToLower().Contains(position.ToLower())) select c).AsQueryable(); // } //} //query = (from c in query.Where(x => x.IsFullTime == candidateFilteringVM.IsFullTime) select c).AsQueryable(); //query = (from c in query.Where(x => x.IsPermanent == candidateFilteringVM.IsPermanent) select c).AsQueryable(); //if (!candidateFilteringVM.isVideoProfileSearch) //{ // query = (from c in query.Where(x => x.IsPartTime == candidateFilteringVM.IsPartTime) select c).AsQueryable(); // query = (from c in query.Where(x => x.IsTemporary == candidateFilteringVM.IsTemporary) select c).AsQueryable(); // query = (from c in query.Where(x => x.IsRemote == candidateFilteringVM.IsRemote) select c).AsQueryable(); // query = (from c in query.Where(x => x.IsLocum == candidateFilteringVM.IsLocum) select c).AsQueryable(); // if (candidateFilteringVM.ExpectedSalaryFrom != 0 && candidateFilteringVM.ExpectedSalaryTo != 0) // { // query = (from c in query.Where(x => // (x.ExpectedSalaryFrom >= candidateFilteringVM.ExpectedSalaryFrom && x.ExpectedSalaryFrom < candidateFilteringVM.ExpectedSalaryTo) // && (x.ExpectedSalaryTo <= candidateFilteringVM.ExpectedSalaryTo && x.ExpectedSalaryTo > candidateFilteringVM.ExpectedSalaryFrom) // ) // select c).AsQueryable(); // } //} // by location if (candidateFilteringVM.LocationList != null && candidateFilteringVM.LocationList.Count() > 0) { //foreach (string location in candidateFilteringVM.LocationList) //{ // query = (from c in query.Where(x => x.Location.ToLower().Contains(location.ToLower())) select c).AsQueryable(); //} query = (from c in query.Where(x => candidateFilteringVM.LocationList.Contains(x.Location)) select c).AsQueryable(); } //if (candidateFilteringVM.Skills != null && candidateFilteringVM.Skills.Count() > 0) //{ // foreach (string skill in candidateFilteringVM.Skills) // { // query = (from c in query.Where(x => x.Skills.Contains(skill)) select c).AsQueryable(); // } //} var result = (from c in query select new CandidateViewModel { _id = c._id, CandidateName = c.CandidateName, VideoUrl = c.DocumentList[1].Guid, ImageUrl = c.ImageUrl, Objectives = c.Objectives, Profile = c.Profile, Position = c.Position, Location = c.Location, Experince = c.Experince, CurrentSalary = c.CurrentSalary, ExpectedSalaryFrom = c.ExpectedSalaryFrom, ExpectedSalaryTo = c.ExpectedSalaryTo, IsFullTime = c.IsFullTime, IsPermanent = c.IsPermanent, IsPartTime = c.IsPartTime, IsTemporary = c.IsTemporary, IsRemote = c.IsRemote, IsLocum = c.IsLocum, Skills = c.Skills, MobileNo = c.MobileNo, Email = c.Email, Sex = c.Sex, DocumentList = c.DocumentList, }).ToList(); return(result); }