public ActionResult Index(CandidateSearchModel candidateSearchModel, string sortString) { if (!ModelState.IsValid) { return(View()); } var dto = mapper.Map <SearchCandidateDTO>(candidateSearchModel); ICollection <CandidateDTO> candidates; switch (sortString) { case SortStrings.DontSort: candidates = candidateAppService.Search(dto); break; case SortStrings.SortByExperience: candidates = candidateAppService.Search(dto).OrderBy(v => v.Experience).ToList(); break; case SortStrings.SortByProfessionlField: candidates = candidateAppService.Search(dto).OrderBy(v => v.ProfessionalField).ToList(); break; case SortStrings.SortBySkills: candidates = candidateAppService.Search(dto).OrderBy(v => v.Skills).ToList(); break; default: candidates = candidateAppService.Search(dto); break; } return(PartialView(ViewStrings.SearchResultsView, mapper.Map <ICollection <CandidateModel> >(candidates))); }
public IQueryable <Candidate> Find(CandidateSearchModel filter) { IQueryable <Candidate> query = dbSet.AsNoTracking(); if (filter.Email != null) { query = query.Where(candidate => candidate.Contact != null && candidate.Contact.Email == filter.Email); } if (filter.Phone != null) { query = query.Where(candidate => candidate.Contact != null && candidate.Contact.Phone == filter.Phone); } if (filter.Skype != null) { query = query.Where(candidate => candidate.Contact != null && candidate.Contact.Skype == filter.Skype); } if (filter.HRM != null) { query = query.Where(candidate => candidate.HRM == filter.HRM); } if (filter.LastNameEng != null) { query = query.Where(candidate => candidate.LastNameEng == filter.LastNameEng); } if (filter.LastNameRus != null) { query = query.Where(candidate => candidate.LastNameRus == filter.LastNameRus); } if (filter.PrimarySkill != null) { query = query.Where(candidate => candidate.CandidatePrimarySkill != null && candidate.CandidatePrimarySkill.TechSkill == filter.PrimarySkill); } if (filter.Level != null) { query = query.Where(candidate => candidate.CandidatePrimarySkill != null && candidate.CandidatePrimarySkill.Level == filter.Level); } if (filter.City != null) { query = query.Where(candidate => candidate.City == filter.City); } if (filter.Status != null) { query = query.Where(candidate => candidate.Status == filter.Status); } return(query); }
public async Task <IEnumerable <CandidateElasticModel> > Find(int skip, int amount, CandidateSearchModel searchOptions, CandidateSortModel sortModel) { var result = await Task.Run(() => _candidateElasticRepository.Search(skip, amount, searchOptions, sortModel)); return(result); }
public IHttpActionResult Get([FromBody] CandidateSearchModel searchParameters) { if (ModelState.IsValid) { var tupleResult = service.Get( searchParameters.FirstName, searchParameters.LastName, searchParameters.RelocationAgreement, searchParameters.IsMale, searchParameters.MinAge, searchParameters.MaxAge, searchParameters.StartExperience, searchParameters.MinSalary, searchParameters.MaxSalary, searchParameters.CurrencyId, searchParameters.IndustryId, searchParameters.Position, searchParameters.Technology, searchParameters.LanguageSkills, searchParameters.CitiesIds, searchParameters.Current, searchParameters.Size ); var candidatesQuerryResult = tupleResult.Item1; var total = tupleResult.Item2; var ret = new { Candidate = candidatesQuerryResult, Current = searchParameters.Current, Size = searchParameters.Size, Total = total }; return(Json(ret, BOT_SERIALIZER_SETTINGS)); } return(BadRequest(ModelState)); }
public async Task <HttpContent> GetExcelByCandidates(int skip, int amount, CandidateSearchModel searchModel, CandidateSortModel sortModel) { var stream = new MemoryStream(await AddToExcelCandidate(skip, amount, searchModel, sortModel)); var content = CreateContent(stream, "Candidates.xlsx"); return(content); }
public async Task <byte[]> AddToExcelCandidate(int skip, int amount, CandidateSearchModel searchOptions, CandidateSortModel sortModel) { var candidates = await candidateService.Find(skip, amount, searchOptions, sortModel); var excelCandidateList = candidates.Select(ConvertToExcelModel).ToList(); var result = ExcelCreator.GenerateExcel(excelCandidateList); return(result); }
public bool Filter(CandidateSearchModel searchOptions, Candidate candidate) { if (EqulasIdNullable(candidate.City, searchOptions.City)) { return(false); } if (EqulasIdNullable(candidate.CandidatePrimarySkill?.TechSkill, searchOptions.PrimarySkill)) { return(false); } if (EqualsId(candidate.HRM, searchOptions.HRM)) { return(false); } if (EqualsId(candidate.Status, searchOptions.Status)) { return(false); } if (EqulasIdNullable(candidate.CandidatePrimarySkill?.Level, searchOptions.Level)) { return(false); } if (ContainsString(searchOptions.LastNameRus, candidate.LastNameRus)) { return(false); } if (ContainsString(searchOptions.LastNameEng, candidate.LastNameEng)) { return(false); } if (ContainsString(searchOptions.Phone, candidate.Contact?.Phone)) { return(false); } if (ContainsString(searchOptions.Email, candidate.Contact?.Email)) { return(false); } if (ContainsString(searchOptions.Skype, candidate.Contact?.Skype)) { return(false); } return(true); }
public IEnumerable <CandidateElasticModel> Search(int skip, int amount, CandidateSearchModel searchModel, CandidateSortModel sortModel) { var sort = Sort(sortModel); searchModel = searchModel ?? new CandidateSearchModel(); return(_client.Search <CandidateElasticModel>(s => s.Index(IndexName) .Skip(skip) .Take(amount) .Query(q => q.Nested(ns => ns .Path(p => p.PrimarySkill) .Query(qr => qr .Term(x => x.PrimarySkill.TechSkill, searchModel.PrimarySkill) )) && q.Nested(ns => ns .Path(p => p.PrimarySkill) .Query(qr => qr .Term(x => x.PrimarySkill.Level, searchModel.Level) )) && q.Term(x => x.HRM, searchModel.HRM) && q.Term(x => x.City, searchModel.City) && q.Term(x => x.Status.Id, searchModel.Status) && //q.Match(m => m // .Field(x => x.Phone) // .Query(searchModel.Phone) // .Fuzziness(Fuzziness.Auto) //) && q.Fuzzy(x => x .Field(z => z.LastNameEng) // .Boost(1) .Value(searchModel.LastNameEng) .Fuzziness(Fuzziness.Auto) ) && q.Fuzzy(x => x .Field(z => z.Skype) .Value(searchModel.Skype) .Fuzziness(Fuzziness.Auto) ) && q.Fuzzy(x => x .Field(z => z.Email) .Value(searchModel.Email) .Fuzziness(Fuzziness.Auto) ) && q.Fuzzy(x => x .Field(z => z.Phone) .Value(searchModel.Phone) .Fuzziness(Fuzziness.Auto) ) ) .Sort(p => p = sort) ).Documents); }
// GET: Candidates public ActionResult Index(CandidateSearchModel model) { //qualification type select list ViewBag.TypesList = GetTypes(null); //qualification name select list ViewBag.NamesList = GetNames(null); //doing search CandidateLogic candidateLogic = new CandidateLogic(); model = candidateLogic.GetCandidates(model); return(View(model)); }
public ActionResult GetCandidates(int id) { var vacancy = vacancyAppService.Get(id); if (vacancy == null) { return(View(ViewStrings.ErrorView)); } CandidateSearchModel candidateSModel = new CandidateSearchModel() { Experience = vacancy.Experience, ProfessionalField = vacancy.ProfessionalField, Skills = vacancy.Requierements }; return(RedirectToAction(ControllerStrings.IndexMethod, ControllerStrings.Candidate, new { candidateSearchModel = candidateSModel })); }
public async Task <ICollection <Candidate> > Find(int skip, int amount, CandidateSearchModel searchOptions, CandidateSortModel sortModel) { IEnumerable <Candidate> candidates; if (searchOptions != null) { candidates = await Task.Run(() => candidateRepository.Find(searchOptions)); } else { candidates = await Task.Run(() => candidateRepository.ReadAll()); } candidates = Sorting(candidates, sortModel); var result = candidates.Skip(skip).Take(amount).ToList(); return(result); }
public CandidateSearchModel GetCandidates(CandidateSearchModel model) { //replace * with % for text box wild card search if (model.SchFirst != null) { model.SchFirst = model.SchFirst.Replace('*', '%'); } if (model.SchLast != null) { model.SchLast = model.SchLast.Replace('*', '%'); } if (model.SchPhone != null) { model.SchPhone = model.SchPhone.Replace('*', '%'); } if (model.SchEmail != null) { model.SchEmail = model.SchEmail.Replace('*', '%'); } if (model.SchZipCode != null) { model.SchZipCode = model.SchZipCode.Replace('*', '%'); } //prepare qualification type parameter for stored procedure, matching multiple type if ((model.SchQTypes != null) && (model.SchQTypes.Any())) { string qtype = ""; foreach (var item in model.SchQTypes) { qtype += item + "|"; } model.SchQuaType = qtype; } //prepare qualification name parameter for stored procedure, matching multiple name if ((model.SchQNames != null) && (model.SchQNames.Any())) { string qname = ""; foreach (var item in model.SchQNames) { qname += item + "|"; } model.SchQuaName = qname; } //sql to linq execute the select candidate stored procedure CandidateDataClassesDataContext candidateData = new CandidateDataClassesDataContext(); var result = candidateData.procCandidateSelect(model.SchFirst, model.SchLast, model.SchEmail, model.SchPhone, model.SchZipCode, model.SchQuaType, model.SchQuaName, model.SchDate); //get result and store in temporary candidate list List <Models.Candidate.Candidate> lstCandidate = new List <Models.Candidate.Candidate>(); foreach (var item in result) { Models.Candidate.Candidate candidate = new Models.Candidate.Candidate(); candidate.CandidateId = item.CandidateId; candidate.FirstName = item.FirstName; candidate.LastName = item.LastName; candidate.Email = item.Email; candidate.PhoneNumber = item.PhoneNumber; candidate.ZipCode = item.ZipCode; lstCandidate.Add(candidate); } //assign back to model candidate, get count and return model model.Candidates = lstCandidate; model.TotalRecords = model.Candidates.Count(); return(model); }
// GET: Canidates public async Task <IActionResult> Index(CandidateSearchModel candidateSearchModel) { candidateSearchModel.Candidates = await candidateSearchModel.GetCandidatesFromSearch(_context).ToListAsync(); return(View(candidateSearchModel)); }
public async Task FindTest() { Candidate candidate1 = new Candidate() { Id = 22, FirstNameEng = "David", LastNameEng = "Fraller", FirstNameRus = "Давид", LastNameRus = "Фраллер", Status = 1, City = 2 }; Candidate candidate2 = new Candidate() { Id = 2, FirstNameEng = "Victor", LastNameEng = "Toll", FirstNameRus = "Виктор", LastNameRus = "Толл", Status = 3 }; CandidateSearchModel searchModel = new CandidateSearchModel() { LastNameEng = "David", City = 2, Status = 1 }; IQueryable <Candidate> candidateFindList = new List <Candidate>() { candidate1 }.AsQueryable(); IQueryable <Candidate> candidateReadList = new List <Candidate>() { candidate1, candidate2 }.AsQueryable(); mockCandidateRepository.Setup(x => x.Find(It.IsAny <CandidateSearchModel>())).Returns(candidateFindList); mockCandidateRepository.Setup(x => x.ReadAll()).Returns(candidateReadList); var candidateRepository = mockCandidateRepository.Object; var unitOfWork = mockUnitOfWork.Object; var contactRepository = mockContactRepository.Object; var jobContactsRepository = mockJobContactsRepository.Object; var statusRepository = mockStatusRepository.Object; var vacancyRepository = mockVacancyRepository.Object; var eventService = mockEventService.Object; var candidateService = new CandidateService(unitOfWork, candidateRepository, contactRepository, jobContactsRepository, statusRepository, vacancyRepository, eventService); var result = await candidateService.Find(0, 5, searchModel, null); Assert.IsNotNull(result); var actual = await candidateService.Find(0, 5, null, null); Assert.AreEqual(2, actual.Count); }