public void TryGetVacancyReference(string value, bool expectParse, string expectedVacancyReference) { string vacancyReference; Assert.That(VacancyHelper.TryGetVacancyReference(value, out vacancyReference), Is.EqualTo(expectParse)); Assert.That(vacancyReference, Is.EqualTo(expectedVacancyReference)); }
public static void AddServerRules(this AbstractValidator <ApprenticeshipSearchViewModel> validator) { validator.RuleFor(x => x.Location) .Length(3, 99) .When(x => x.Location != null && !x.Location.Any(Char.IsDigit) && !VacancyHelper.IsVacancyReference(x.Keywords)) .WithMessage(ApprenticeshipSearchViewModelMessages.LocationMessages.LengthErrorText); }
public static void AddLocationRules(this AbstractValidator <TraineeshipSearchViewModel> validator) { // NOTE: no message here, 'no results' help text provides suggestions to user. validator.RuleFor(x => x.Location) .Must(HaveLatAndLongPopulated) .When(x => !VacancyHelper.IsVacancyReference(x.ReferenceNumber)); }
public static void AddLocationRules(this AbstractValidator <ApprenticeshipSearchViewModel> validator) { // NOTE: no message here, 'no results' help text provides suggestions to user. validator.RuleFor(x => x.Location) .Must(HaveLatAndLongPopulated) .When(x => x.SearchMode == ApprenticeshipSearchMode.Keyword || x.SearchMode == ApprenticeshipSearchMode.Category) .When(x => !VacancyHelper.IsVacancyReference(x.Keywords)); }
public TraineeshipSearchResponseViewModel FindVacancies(TraineeshipSearchViewModel search) { _logger.Debug("Calling SearchProvider to find traineeship vacancies."); string vacancyReference; var searchLocation = _traineeshipSearchMapper.Map <TraineeshipSearchViewModel, Location>(search); var isVacancyReference = VacancyHelper.TryGetVacancyReference(search.ReferenceNumber, out vacancyReference); try { var searchRequest = new TraineeshipSearchParameters { Location = searchLocation, PageNumber = search.PageNumber, PageSize = search.ResultsPerPage, SearchRadius = search.WithinDistance, SortType = search.SortType }; if (isVacancyReference) { searchRequest.VacancyReference = vacancyReference; } var searchResults = _traineeshipSearchService.Search(searchRequest); if (searchResults.Total == 1) { var exactMatchResponse = _traineeshipSearchMapper.Map <SearchResults <TraineeshipSearchResponse, TraineeshipSearchParameters>, TraineeshipSearchResponseViewModel>(searchResults); exactMatchResponse.ExactMatchFound = true; return(exactMatchResponse); } if (searchResults.Total > 1) { _logger.Info($"{searchResults.Total} results found for Vacancy Reference Number {vacancyReference}"); } var searchResponse = _traineeshipSearchMapper.Map <SearchResults <TraineeshipSearchResponse, TraineeshipSearchParameters>, TraineeshipSearchResponseViewModel>( searchResults); searchResponse.TotalHits = searchResults.Total; searchResponse.PageSize = search.ResultsPerPage; searchResponse.VacancySearch = search; return(searchResponse); } catch (CustomException ex) { // ReSharper disable once FormatStringProblem _logger.Error("Find traineeship vacancies failed. Check inner details for more info", ex); return(new TraineeshipSearchResponseViewModel(VacancySearchResultsPageMessages.VacancySearchFailed)); } catch (Exception e) { _logger.Error("Find traineeship vacancies failed. Check inner details for more info", e); throw; } }
public MediatorResponse <TraineeshipVacancyDetailViewModel> DetailsByReferenceNumber(string vacancyReferenceNumberString, Guid?candidateId) { int vacancyReferenceNumber; if (VacancyHelper.TryGetVacancyReferenceNumber(vacancyReferenceNumberString, out vacancyReferenceNumber)) { var vacancyDetailViewModel = _traineeshipVacancyProvider.GetVacancyDetailViewModelByReferenceNumber(candidateId, vacancyReferenceNumber); return(GetDetails(vacancyDetailViewModel)); } return(GetMediatorResponse <TraineeshipVacancyDetailViewModel>(TraineeshipSearchMediatorCodes.Details.VacancyNotFound)); }
public MediatorResponse <TransferVacanciesResultsViewModel> GetVacancyDetails(TransferVacanciesViewModel viewModel) { try { var vacanciesToBeTransferred = new List <TransferVacancyViewModel>(); var transferVacanciesResultsViewModel = new TransferVacanciesResultsViewModel { TransferVacanciesViewModel = viewModel, NotFoundVacancyNumbers = new List <string>() }; if (viewModel != null && viewModel.VacancyReferenceNumbers.Any()) { foreach (var vacancy in viewModel.VacancyReferenceNumbers.Split(',')) { string vacancyReference; if (VacancyHelper.TryGetVacancyReference(vacancy, out vacancyReference)) { var vacancyDetails = _vacancyPostingService.GetVacancyByReferenceNumber(Convert.ToInt32(vacancyReference)); if (vacancyDetails != null) { var vacancyView = new TransferVacancyViewModel { ContractOwnerId = vacancyDetails.ContractOwnerId, VacancyManagerId = vacancyDetails.VacancyManagerId, VacancyReferenceNumber = vacancyDetails.VacancyReferenceNumber, DeliveryOrganisationId = vacancyDetails.DeliveryOrganisationId, VacancyOwnerRelationShipId = vacancyDetails.VacancyOwnerRelationshipId, ProviderName = _providerService.GetProvider(vacancyDetails.ContractOwnerId).TradingName, VacancyTitle = vacancyDetails.Title, EmployerName = vacancyDetails.EmployerName }; if (vacancyDetails.VacancyManagerId.HasValue) { vacancyView.ProviderSiteName = _providerService.GetProviderSite(vacancyDetails.VacancyManagerId.Value).TradingName; } vacanciesToBeTransferred.Add(vacancyView); } else { transferVacanciesResultsViewModel.NotFoundVacancyNumbers.Add(vacancy); } } } } transferVacanciesResultsViewModel.VacanciesToBeTransferredVm = vacanciesToBeTransferred; return(GetMediatorResponse(AdminMediatorCodes.GetVacancyDetails.Ok, transferVacanciesResultsViewModel)); } catch (CustomException exception) when(exception.Code == ErrorCodes.ProviderVacancyAuthorisation.Failed) { return(GetMediatorResponse(AdminMediatorCodes.GetVacancyDetails.FailedAuthorisation, new TransferVacanciesResultsViewModel(), TransferVacanciesMessages.UnAuthorisedAccess, UserMessageLevel.Warning)); } }
public static void AddServerRules(this AbstractValidator <ApprenticeshipSearchViewModel> validator) { validator.RuleFor(x => x.Location) .Length(3, 99) .When(IsKeywordOrCategorySearch) .When(x => x.Location != null && !x.Location.Any(Char.IsDigit) && !VacancyHelper.IsVacancyReference(x.Keywords)) .WithMessage(ApprenticeshipSearchViewModelMessages.LocationMessages.LengthErrorText); validator.RuleFor(x => x.SavedSearchId) .NotEmpty() .When(x => x.SearchMode == ApprenticeshipSearchMode.SavedSearches) .WithMessage(ApprenticeshipSearchViewModelMessages.SavedSearchMessages.RequiredErrorText); }
public async Task <OrchestratorResponse> UpdatePublishedVacancyAsync(ProposedChangesEditModel m, VacancyUser user) { var vacancy = await GetVacancy(m); var proposedClosingDate = m.ProposedClosingDate.AsDateTimeUk()?.ToUniversalTime(); var proposedStartDate = m.ProposedStartDate.AsDateTimeUk()?.ToUniversalTime(); var updateKind = VacancyHelper.DetermineLiveUpdateKind(vacancy, proposedClosingDate, proposedStartDate); vacancy.ClosingDate = proposedClosingDate; vacancy.StartDate = proposedStartDate; return(await ValidateAndExecute( vacancy, v => _client.Validate(v, ValdationRules), v => _client.UpdatePublishedVacancyAsync(vacancy, user, updateKind) )); }
public static void AddCommonRules(this AbstractValidator <ApprenticeshipSearchViewModel> validator) { validator.RuleFor(x => x.Location) .NotEmpty() .When(x => !VacancyHelper.IsVacancyReference(x.Keywords)) .WithMessage(ApprenticeshipSearchViewModelMessages.LocationMessages.RequiredErrorText) .Length(2, 99) .WithMessage(ApprenticeshipSearchViewModelMessages.LocationMessages.LengthErrorText) .Matches(ApprenticeshipSearchViewModelMessages.LocationMessages.WhiteList) .WithMessage(ApprenticeshipSearchViewModelMessages.LocationMessages.WhiteListErrorText); validator.RuleFor(x => x.Keywords) .Matches(ApprenticeshipSearchViewModelMessages.KeywordMessages.WhiteList) .WithMessage(ApprenticeshipSearchViewModelMessages.KeywordMessages.WhiteListErrorText); validator.RuleFor(x => x.Category) .NotEmpty() .When(x => x.SearchMode == ApprenticeshipSearchMode.Category) .WithMessage(ApprenticeshipSearchViewModelMessages.CategoryMessages.RequiredErrorText); }
public IHttpActionResult PostVacancy(VacancyHelper vacancyHelper) { var action = vacancyHelper.action; var vacancy = vacancyHelper.vacancy; if (action == "create") { var result = AddNewVacancy(vacancy); if (result == false) { return(ResponseMessage(new HttpResponseMessage(HttpStatusCode.BadRequest))); } } else if (action == "update") { UpdateVacancy(vacancy); } else if (action == "delete") { DeleteVacancy(vacancy.Vacancy_Code); } return(CreatedAtRoute("DefaultApi", new { id = vacancy.Vacancy_Code }, vacancy)); }
public static void Start(Worker worker, Database.Database db) { var logger = new Logger.ConsoleLogger(); var seeAdsLoop = true; var mainVacancies = db.GetVacancies(); IList <Vacancy> vacancies = mainVacancies; while (seeAdsLoop) { Console.Clear(); ExceptionHandle.Handle(VacancyHelper.SeeAds, vacancies); ConsoleScreen.PrintMenu(ConsoleScreen.FilterMenu, ConsoleColor.Blue); var filterMenuChoice = (FilterMenuEnum)ConsoleScreen.Input(ConsoleScreen.FilterMenu.Count); switch (filterMenuChoice) { case FilterMenuEnum.Select: { var loop2 = true; while (loop2) { Console.Clear(); if (!ExceptionHandle.Handle(VacancyHelper.SeeAds, vacancies)) { break; } Console.WriteLine("Vacancy id: "); var vacId = UserHelper.InputGuid(); try { var vacancy = VacancyHelper.GetVacancy(vacId, vacancies); while (true) { var requestFromWorker = vacancy.CheckWorkerRequest(worker.Guid); Console.Clear(); Console.WriteLine(vacancy++); // increase vacancy view count and print Database.Database.Changes = true; Console.WriteLine(); Console.WriteLine($"1. {(requestFromWorker ? "Cancel" : "Request")}");; Console.WriteLine("2. Back"); var choice = ConsoleScreen.Input(2); if (choice == 1) { if (requestFromWorker) { vacancy.RemoveRequest(worker.Guid); } else { Cv cv = null; while (true) { Console.Clear(); if (!ExceptionHandle.Handle(worker.ShowAllCv, true)) { LoggerPublisher.OnLogInfo("Please add public Cv!"); ConsoleScreen.Clear(); break; } var cvId = UserHelper.InputGuid(); try { cv = CvHelper.GetCv(cvId, worker.Cvs); break; } catch (Exception e) { LoggerPublisher.OnLogError(e.Message); ConsoleScreen.Clear(); } } if (cv != null) { vacancy.SendRequest(worker.Guid, cv.Guid); } } } else if (choice == 2) { if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to see other Ads?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { loop2 = false; } break; } } if (loop2) { continue; } } catch (Exception e) { LoggerPublisher.OnLogError(e.Message); ConsoleScreen.Clear(); } if (!loop2 || ConsoleScreen.DisplayMessageBox("Info", "Do you want to try again?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } break; } case FilterMenuEnum.ByCategory: { Console.Clear(); vacancies = ExceptionHandle.Handle(VacancyFilter.FilterByCategory, UserHelper.InputCategory(), vacancies); break; } case FilterMenuEnum.ByEducation: { Console.Clear(); vacancies = ExceptionHandle.Handle(VacancyFilter.FilterByEducation, UserHelper.InputEducation(), vacancies); break; } case FilterMenuEnum.ByExperience: { Console.Clear(); vacancies = ExceptionHandle.Handle(VacancyFilter.FilterByExperience, UserHelper.InputExperience(), vacancies); break; } case FilterMenuEnum.ByRegion: { Console.Clear(); vacancies = ExceptionHandle.Handle(VacancyFilter.FilterByRegion, UserHelper.InputRegion(), vacancies); break; } case FilterMenuEnum.BySalary: { Console.Clear(); var input = UserHelper.InputSalary(); var salary = UserHelper.ParseSalary(input); vacancies = ExceptionHandle.Handle(VacancyFilter.FilterBySalary, salary, vacancies); break; } case FilterMenuEnum.Reset: { vacancies = mainVacancies; break; } case FilterMenuEnum.Back: { seeAdsLoop = false; break; } } } }
public void IsVacancyReference(string value, bool expectTrue) { Assert.That(VacancyHelper.IsVacancyReference(value), Is.EqualTo(expectTrue)); }
private static Vacancy CreateNewVacancy() { var newVacancy = new Vacancy { Contact = new Contact() }; // contact initialize while (true) { var mail = VacancyHelper.InputData("Mail"); if (ExceptionHandle.Handle(UserHelper.ValidateMail, mail)) { newVacancy.Contact.Mail = mail; break; } } var maxPhoneNumbers = 3; while (maxPhoneNumbers > 0) { var phone = VacancyHelper.InputData("Phone"); if (ExceptionHandle.Handle(UserHelper.ValidatePhone, phone)) { newVacancy.Contact.Phones.Add(phone); maxPhoneNumbers--; if (maxPhoneNumbers == 0 || ConsoleScreen.DisplayMessageBox("Info", "Do you want to add more phone number?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } continue; } if (maxPhoneNumbers != 3 && ConsoleScreen.DisplayMessageBox("Info", "Do you want to try again?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } // add initialize newVacancy.Ad = new Advert(); newVacancy.Ad.Category = UserHelper.InputCategory(); Console.Clear(); newVacancy.Ad.Position = VacancyHelper.InputData("Position"); newVacancy.Ad.Region = UserHelper.InputRegion(); newVacancy.Ad.Education = UserHelper.InputEducation(); newVacancy.Ad.Experience = UserHelper.InputExperience(); Console.Clear(); newVacancy.Ad.Requirements = VacancyHelper.InputData("Requirements"); Console.Clear(); newVacancy.Ad.JobDescription = VacancyHelper.InputData("Job Description"); Console.Clear(); newVacancy.Ad.Company = VacancyHelper.InputData("Company"); Console.Clear(); newVacancy.Ad.Contact = VacancyHelper.InputData("Contact"); newVacancy.Ad.SalaryRange = UserHelper.InputSalaryRange(); return(newVacancy); }
public static void Start(Entities.Employer employer, Database.Database db) { var logger = new Logger.ConsoleLogger(); var seeCvsLoop = true; var mainCvs = db.GetCvs(); IList <Cv> cvs = mainCvs; while (seeCvsLoop) { Console.Clear(); ExceptionHandle.Handle(CvHelper.SeeCvs, cvs); ConsoleScreen.PrintMenu(ConsoleScreen.FilterMenu, ConsoleColor.Blue); var filterMenuChoice = (FilterMenuEnum)ConsoleScreen.Input(ConsoleScreen.FilterMenu.Count); switch (filterMenuChoice) { case FilterMenuEnum.Select: { var loop3 = true; while (loop3) { Console.Clear(); if (!ExceptionHandle.Handle(CvHelper.SeeCvs, cvs)) { break; } Console.WriteLine("Cv id: "); var cvId = UserHelper.InputGuid(); try { var cv = CvHelper.GetCv(cvId, cvs); Console.Clear(); while (true) { var requestFromEmployer = cv.CheckEmployerRequest(employer.Guid); Console.Clear(); Console.WriteLine(cv++); // increase view count and print. Database.Database.Changes = true; Console.WriteLine(); Console.WriteLine($"1. {(requestFromEmployer ? "Cancel" : "Request")}"); Console.WriteLine("2. Back"); var choice = ConsoleScreen.Input(2); if (choice == 1) { if (requestFromEmployer) { cv.RemoveRequest(employer.Guid); } else { Vacancy vacancy = null; while (true) { Console.Clear(); if (!ExceptionHandle.Handle(employer.ShowAllAds, true)) { LoggerPublisher.OnLogInfo("Please add public Vacancy!"); ConsoleScreen.Clear(); break; } var vacancyId = UserHelper.InputGuid(); try { vacancy = VacancyHelper.GetVacancy(vacancyId, employer.Vacancies); break; } catch (Exception e) { LoggerPublisher.OnLogError(e.Message); ConsoleScreen.Clear(); } } if (vacancy != null) { cv.SendRequest(employer.Guid, vacancy.Guid); } } } else if (choice == 2) { if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to see other Cvs?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { loop3 = false; } break; } } if (loop3) { continue; } } catch (Exception e) { LoggerPublisher.OnLogError(e.Message); } } break; } case FilterMenuEnum.ByCategory: { Console.Clear(); cvs = ExceptionHandle.Handle(CvFilter.FilterByCategory, UserHelper.InputCategory(), cvs); break; } case FilterMenuEnum.ByEducation: { Console.Clear(); cvs = ExceptionHandle.Handle(CvFilter.FilterByEducation, UserHelper.InputEducation(), cvs); break; } case FilterMenuEnum.ByExperience: { Console.Clear(); cvs = ExceptionHandle.Handle(CvFilter.FilterByExperience, UserHelper.InputExperience(), cvs); break; } case FilterMenuEnum.ByRegion: { Console.Clear(); cvs = ExceptionHandle.Handle(CvFilter.FilterByRegion, UserHelper.InputRegion(), cvs); break; } case FilterMenuEnum.BySalary: { Console.Clear(); var input = UserHelper.InputSalary(); var salary = UserHelper.ParseSalary(input); cvs = ExceptionHandle.Handle(CvFilter.FilterBySalary, salary, cvs); break; } case FilterMenuEnum.Reset: { cvs = mainCvs; break; } case FilterMenuEnum.Back: { seeCvsLoop = false; break; } } } }
public override void Execute() { WriteLiteral("\r\n"); #line 7 "..\..\Views\ApprenticeshipSearch\Results.cshtml" ViewBag.Title = "Results - Find an apprenticeship"; Layout = "~/Views/Shared/_Layout.cshtml"; var locationTypeLink = Model.VacancySearch.LocationType == ApprenticeshipLocationType.National ? Url.Action("results", new ApprenticeshipSearchViewModel(Model.VacancySearch) { LocationType = ApprenticeshipLocationType.NonNational, SearchAction = SearchAction.LocationTypeChanged, PageNumber = 1 }) : Url.Action("results", new ApprenticeshipSearchViewModel(Model.VacancySearch) { LocationType = ApprenticeshipLocationType.National, SearchAction = SearchAction.LocationTypeChanged, SortType = VacancySearchSortType.Distance, PageNumber = 1 }); string resultMessage; string nationalResultsMessage; if (Model.TotalLocalHits == 0) { resultMessage = ""; } else if (Model.TotalLocalHits == 1) { if (Model.VacancySearch.LocationType == ApprenticeshipLocationType.National) { resultMessage = "We've found <b class=\"bold-medium\">1</b> <a id='localLocationTypeLink' href=" + locationTypeLink + ">apprenticeship in your selected area</a>."; } else { resultMessage = "We've found <b class=\"bold-medium\">1</b> apprenticeship in your selected area."; } } else { if (Model.VacancySearch.LocationType == ApprenticeshipLocationType.National) { var message = "We've found <b class=\"bold-medium\">{0}</b> <a id='localLocationTypeLink' href=" + locationTypeLink + ">apprenticeships in your selected area</a>."; resultMessage = string.Format(message, Model.TotalLocalHits); } else { resultMessage = string.Format("We've found <b class=\"bold-medium\">{0}</b> apprenticeships in your selected area.", Model.TotalLocalHits); } } if (Model.TotalNationalHits == 0) { nationalResultsMessage = ""; } else { var nationalResultsMessagePrefix = Model.TotalLocalHits == 0 ? "We've found" : "We've also found"; if (Model.TotalNationalHits == 1) { if (Model.VacancySearch.LocationType == ApprenticeshipLocationType.NonNational) { nationalResultsMessage = string.Format("{1} <a id='nationwideLocationTypeLink' href={0}>1 apprenticeship nationwide</a>.", locationTypeLink, nationalResultsMessagePrefix); } else { nationalResultsMessage = nationalResultsMessagePrefix + " 1 apprenticeship nationwide."; } } else { if (Model.VacancySearch.LocationType == ApprenticeshipLocationType.NonNational) { nationalResultsMessage = string.Format("{2} <a id='nationwideLocationTypeLink' href={1}>{0} apprenticeships nationwide</a>.", Model.TotalNationalHits, locationTypeLink, nationalResultsMessagePrefix); } else { nationalResultsMessage = string.Format("{1} {0} apprenticeships nationwide.", Model.TotalNationalHits, nationalResultsMessagePrefix); } } } #line default #line hidden WriteLiteral("\r\n\r\n"); DefineSection("metatags", () => { WriteLiteral("\r\n "); WriteLiteral("\r\n <meta"); WriteLiteral(" name=\"WT.oss_r\""); WriteAttribute("content", Tuple.Create(" content=\"", 3558), Tuple.Create("\"", 3589) #line 82 "..\..\Views\ApprenticeshipSearch\Results.cshtml" , Tuple.Create(Tuple.Create("", 3568), Tuple.Create <System.Object, System.Int32>(Model.TotalLocalHits #line default #line hidden , 3568), false) ); WriteLiteral(" />\r\n"); }); WriteLiteral("\r\n<div"); WriteLiteral(" class=\"search-results-wrapper grid-wrapper\""); WriteLiteral(">\r\n <div"); WriteLiteral(" class=\"hgroup\""); WriteLiteral(">\r\n <h1"); WriteLiteral(" class=\"heading-xlarge\""); WriteLiteral(">Search results</h1>\r\n <div"); WriteLiteral(" id=\"vacancy-result-summary\""); WriteLiteral(">\r\n <p"); WriteLiteral(" id=\"result-message\""); WriteLiteral(" class=\"small-btm-margin\""); WriteLiteral(">"); #line 89 "..\..\Views\ApprenticeshipSearch\Results.cshtml" Write(Html.Raw(resultMessage)); #line default #line hidden WriteLiteral("</p>\r\n <p"); WriteLiteral(" id=\"national-results-message\""); WriteLiteral(">"); #line 90 "..\..\Views\ApprenticeshipSearch\Results.cshtml" Write(Html.Raw(nationalResultsMessage)); #line default #line hidden WriteLiteral("</p>\r\n </div>\r\n </div>\r\n\r\n"); #line 94 "..\..\Views\ApprenticeshipSearch\Results.cshtml" #line default #line hidden #line 94 "..\..\Views\ApprenticeshipSearch\Results.cshtml" using (Html.BeginRouteForm(CandidateRouteNames.ApprenticeshipResults, FormMethod.Get)) { Html.Partial("ValidationSummary", ViewData.ModelState); Html.RenderPartial("_searchUpdate", Model.VacancySearch); #line default #line hidden WriteLiteral(" <section"); WriteLiteral(" class=\"grid grid-2-3\""); WriteLiteral(">\r\n"); #line 99 "..\..\Views\ApprenticeshipSearch\Results.cshtml" #line default #line hidden #line 99 "..\..\Views\ApprenticeshipSearch\Results.cshtml" if (Model.TotalLocalHits == 0 && Model.TotalNationalHits == 0) { #line default #line hidden WriteLiteral(" <p"); WriteLiteral(" id=\"search-no-results-title\""); WriteLiteral(">There are currently no apprenticeships that match your search.</p>\r\n"); WriteLiteral(" <p>Try editing your search:</p>\r\n"); WriteLiteral(" <ul"); WriteLiteral(" id=\"search-no-results\""); WriteLiteral(">\r\n"); #line 105 "..\..\Views\ApprenticeshipSearch\Results.cshtml" #line default #line hidden #line 105 "..\..\Views\ApprenticeshipSearch\Results.cshtml" if (Model.VacancySearch.SearchMode == ApprenticeshipSearchMode.Keyword) { if (VacancyHelper.IsVacancyReference(Model.VacancySearch.Keywords)) { #line default #line hidden WriteLiteral(" <li"); WriteLiteral(" id=\"search-no-results-reference-number\""); WriteLiteral(">try a different reference number</li>\r\n"); #line 110 "..\..\Views\ApprenticeshipSearch\Results.cshtml" } else { #line default #line hidden WriteLiteral(" <li"); WriteLiteral(" id=\"search-no-results-keywords\""); WriteLiteral(">using different keywords</li>\r\n"); #line 114 "..\..\Views\ApprenticeshipSearch\Results.cshtml" } } #line default #line hidden WriteLiteral(" "); #line 116 "..\..\Views\ApprenticeshipSearch\Results.cshtml" if (Model.VacancySearch.SearchMode == ApprenticeshipSearchMode.Category) { if (Model.VacancySearch.SubCategories == null || Model.VacancySearch.SubCategories.Length == 0) { #line default #line hidden WriteLiteral(" <li"); WriteLiteral(" id=\"search-no-results-category\""); WriteLiteral(">try a different category</li>\r\n"); #line 121 "..\..\Views\ApprenticeshipSearch\Results.cshtml" } else { #line default #line hidden WriteLiteral(" <li"); WriteLiteral(" id=\"search-no-results-sub-category\""); WriteLiteral(">select a different sub-category or sub-categories</li>\r\n"); #line 125 "..\..\Views\ApprenticeshipSearch\Results.cshtml" } } #line default #line hidden WriteLiteral(" <li>expanding your search location</li>\r\n"); #line 128 "..\..\Views\ApprenticeshipSearch\Results.cshtml" #line default #line hidden #line 128 "..\..\Views\ApprenticeshipSearch\Results.cshtml" if (Model.VacancySearch.ApprenticeshipLevel != "All") { #line default #line hidden WriteLiteral(" <li"); WriteLiteral(" id=\"search-no-results-apprenticeship-levels\""); WriteLiteral(">using a different level, or change to all levels</li>\r\n"); #line 131 "..\..\Views\ApprenticeshipSearch\Results.cshtml" } #line default #line hidden WriteLiteral(" </ul>\r\n"); #line 133 "..\..\Views\ApprenticeshipSearch\Results.cshtml" } else { #line default #line hidden WriteLiteral(" <div"); WriteLiteral(" id=\"pagedList\""); WriteLiteral(">\r\n"); #line 137 "..\..\Views\ApprenticeshipSearch\Results.cshtml" #line default #line hidden #line 137 "..\..\Views\ApprenticeshipSearch\Results.cshtml" Html.RenderPartial("_searchResults", Model); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 139 "..\..\Views\ApprenticeshipSearch\Results.cshtml" } #line default #line hidden WriteLiteral("\r\n </section>\r\n"); #line 142 "..\..\Views\ApprenticeshipSearch\Results.cshtml" } #line default #line hidden WriteLiteral("</div>\r\n\r\n"); DefineSection("scripts", () => { WriteLiteral("\r\n <script"); WriteLiteral(" type=\"text/javascript\""); WriteLiteral(" src=\"https://maps.googleapis.com/maps/api/js?v=3\""); WriteLiteral("></script>\r\n\r\n"); WriteLiteral(" "); #line 149 "..\..\Views\ApprenticeshipSearch\Results.cshtml" Write(Scripts.Render("~/bundles/nas/locationsearch")); #line default #line hidden WriteLiteral("\r\n <script"); WriteLiteral(" type=\"text/javascript\""); WriteLiteral(">\r\n $(function () {\r\n $(\"#Location\").locationMatch({\r\n " + " url: \'"); #line 153 "..\..\Views\ApprenticeshipSearch\Results.cshtml" Write(Url.Action("location", "Location")); #line default #line hidden WriteLiteral(@"', longitude: '#Longitude', latitude: '#Latitude', latlonhash: '#Hash' }); $('#sort-results').change(function () { $('#SearchAction').val(""Sort""); $(""form"").submit(); }); $('#results-per-page').change(function () { $('#SearchAction').val(""Sort""); $(""form"").submit(); }); $('#search-button').click(function () { $('#LocationType').val(""NonNational""); }); $(""#search-tab-control"").click(function () { $(""#SearchMode"").val(""Keyword""); }); $(""#browse-tab-control"").click(function () { $(""#SearchMode"").val(""Category""); }); }); </script> "); WriteLiteral(" "); #line 184 "..\..\Views\ApprenticeshipSearch\Results.cshtml" Write(Scripts.Render("~/bundles/nas/resultsMap")); #line default #line hidden WriteLiteral("\r\n\r\n"); }); }
public ApprenticeshipSearchResponseViewModel FindVacancies(ApprenticeshipSearchViewModel search) { _logger.Debug("Calling SearchProvider to find apprenticeship vacancies."); var searchLocation = _apprenticeshipSearchMapper.Map <ApprenticeshipSearchViewModel, Location>(search); try { string vacancyReference; var isVacancyReference = VacancyHelper.TryGetVacancyReference(search.Keywords, out vacancyReference); if ((search.SearchField == ApprenticeshipSearchField.All.ToString() && isVacancyReference) || search.SearchField == ApprenticeshipSearchField.ReferenceNumber.ToString()) { if (isVacancyReference) { var searchParameters = new ApprenticeshipSearchParameters { VacancyReference = vacancyReference, PageNumber = 1, PageSize = 1 }; var searchResults = _apprenticeshipSearchService.Search(searchParameters); //Expect only a single result. Any other number should be interpreted as no results if (searchResults.Total == 1) { var exactMatchResponse = _apprenticeshipSearchMapper.Map <SearchResults <ApprenticeshipSearchResponse, ApprenticeshipSearchParameters>, ApprenticeshipSearchResponseViewModel>(searchResults); exactMatchResponse.ExactMatchFound = true; return(exactMatchResponse); } if (searchResults.Total > 1) { _logger.Info("{0} results found for Vacancy Reference Number {1} parsed from {2}. Expected 0 or 1", searchResults.Total, vacancyReference, search.Keywords); } } var response = new ApprenticeshipSearchResponseViewModel { Vacancies = new List <ApprenticeshipVacancySummaryViewModel>(), VacancySearch = search }; return(response); } var results = ProcessNationalAndNonNationalSearches(search, searchLocation); var nationalResults = results[ResultsKeys.National]; var nonNationalResults = results[ResultsKeys.NonNational]; var unfilteredResults = results[ResultsKeys.Unfiltered]; var nationalResponse = _apprenticeshipSearchMapper.Map <SearchResults <ApprenticeshipSearchResponse, ApprenticeshipSearchParameters>, ApprenticeshipSearchResponseViewModel>(nationalResults); nationalResponse.VacancySearch = search; var nonNationalResponse = _apprenticeshipSearchMapper.Map <SearchResults <ApprenticeshipSearchResponse, ApprenticeshipSearchParameters>, ApprenticeshipSearchResponseViewModel>(nonNationalResults); nonNationalResponse.VacancySearch = search; if (search.LocationType == ApprenticeshipLocationType.NonNational) { nonNationalResponse.TotalLocalHits = nonNationalResults.Total; nonNationalResponse.TotalNationalHits = nationalResults.Total; nonNationalResponse.PageSize = search.ResultsPerPage; if (nonNationalResults.Total == 0 && nationalResults.Total > 0) { nonNationalResponse.Vacancies = nationalResponse.Vacancies; var vacancySearch = nonNationalResponse.VacancySearch; if (vacancySearch.SearchAction == SearchAction.Search || vacancySearch.SortType == VacancySearchSortType.Distance) { vacancySearch.SortType = string.IsNullOrWhiteSpace(vacancySearch.Keywords) ? VacancySearchSortType.ClosingDate : VacancySearchSortType.Relevancy; } vacancySearch.LocationType = ApprenticeshipLocationType.National; SetAggregationResults(nonNationalResponse, nationalResults.AggregationResults, unfilteredResults.AggregationResults); } else { SetAggregationResults(nonNationalResponse, nonNationalResults.AggregationResults, unfilteredResults.AggregationResults); } return(nonNationalResponse); } nationalResponse.TotalLocalHits = nonNationalResults.Total; nationalResponse.TotalNationalHits = nationalResults.Total; nationalResponse.PageSize = search.ResultsPerPage; if (nationalResults.Total == 0 && nonNationalResults.Total > 0) { nationalResponse.Vacancies = nonNationalResponse.Vacancies; SetAggregationResults(nonNationalResponse, nonNationalResults.AggregationResults, unfilteredResults.AggregationResults); } else { SetAggregationResults(nonNationalResponse, nationalResults.AggregationResults, unfilteredResults.AggregationResults); } return(nationalResponse); } catch (CustomException ex) { _logger.Error("Find apprenticeship vacancies failed. Check inner details for more info", ex); return(new ApprenticeshipSearchResponseViewModel(VacancySearchResultsPageMessages.VacancySearchFailed)); } catch (Exception e) { _logger.Error("Find apprenticeship vacancies failed. Check inner details for more info", e); throw; } }
private static void VacancyUpdateSideStart(Vacancy vacancy) { while (true) { Console.Clear(); Console.WriteLine(vacancy); Console.WriteLine(); ConsoleScreen.PrintMenu(ConsoleScreen.VacancyUpdateMenu, ConsoleColor.DarkGreen); var updateChoice = (VacancyUpdateChoices)ConsoleScreen.Input(ConsoleScreen.VacancyUpdateMenu.Count); if (updateChoice == VacancyUpdateChoices.Back) { break; } switch (updateChoice) { case VacancyUpdateChoices.ChangeVisibility: { vacancy.IsPublic = !vacancy.IsPublic; LoggerPublisher.OnLogInfo($"Visibility changed to {(vacancy.IsPublic ? "Public" : "Private")}"); break; } case VacancyUpdateChoices.Mail: { while (true) { var mail = VacancyHelper.InputData("Mail"); if (ExceptionHandle.Handle(UserHelper.ValidateMail, mail)) { vacancy.Contact.Mail = mail; break; } } LoggerPublisher.OnLogInfo("Mail updated!"); break; } case VacancyUpdateChoices.Phones: { if (vacancy.Contact.Phones.Count != 3 && ConsoleScreen.DisplayMessageBox("Info", "Do you want to add phone number or delete?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { Console.WriteLine("Add phone number: "); var maxPhoneNumbers = 3 - vacancy.Contact.Phones.Count; while (maxPhoneNumbers > 0) { var phone = VacancyHelper.InputData("Phone"); if (ExceptionHandle.Handle(UserHelper.ValidatePhone, phone)) { vacancy.Contact.Phones.Add(phone); maxPhoneNumbers--; if (maxPhoneNumbers == 0 || ConsoleScreen.DisplayMessageBox("Info", "Do you want to add more phone number?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } continue; } if (maxPhoneNumbers != 3 && ConsoleScreen.DisplayMessageBox("Info", "Do you want to try again?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } } else { if (vacancy.Contact.Phones.Count > 0) { while (true) { Console.Clear(); Console.WriteLine("Delete phone number: "); for (var i = 0; i < vacancy.Contact.Phones.Count; i++) { Console.WriteLine($"{i + 1}. {vacancy.Contact.Phones[i]}"); } var phoneIndex = ConsoleScreen.Input(vacancy.Contact.Phones.Count) - 1; vacancy.Contact.Phones.RemoveAt(phoneIndex); LoggerPublisher.OnLogInfo("Phone number deleted"); if (vacancy.Contact.Phones.Count == 0 || ConsoleScreen.DisplayMessageBox("Info", "Do you want to delete more phone number?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } } } break; } case VacancyUpdateChoices.Category: { vacancy.Ad.Category = UserHelper.InputCategory(); LoggerPublisher.OnLogInfo("Category updated"); break; } case VacancyUpdateChoices.Position: { vacancy.Ad.Position = VacancyHelper.InputData("Position"); LoggerPublisher.OnLogInfo("Position updated"); break; } case VacancyUpdateChoices.Region: { vacancy.Ad.Region = UserHelper.InputRegion(); LoggerPublisher.OnLogInfo("Region updated"); break; } case VacancyUpdateChoices.Salary: { vacancy.Ad.SalaryRange = UserHelper.InputSalaryRange(); LoggerPublisher.OnLogInfo("Salary updated"); break; } case VacancyUpdateChoices.Education: { vacancy.Ad.Education = UserHelper.InputEducation(); LoggerPublisher.OnLogInfo("Education updated"); break; } case VacancyUpdateChoices.Experience: { vacancy.Ad.Experience = UserHelper.InputExperience(); LoggerPublisher.OnLogInfo("Experience updated"); break; } case VacancyUpdateChoices.Requirements: { vacancy.Ad.Requirements = VacancyHelper.InputData("Requirements"); LoggerPublisher.OnLogInfo("Requirements updated"); break; } case VacancyUpdateChoices.JobDescription: { vacancy.Ad.JobDescription = VacancyHelper.InputData("Job Description"); LoggerPublisher.OnLogInfo("Job Description updated"); break; } case VacancyUpdateChoices.Company: { vacancy.Ad.Company = VacancyHelper.InputData("Company"); LoggerPublisher.OnLogInfo("Company updated"); break; } case VacancyUpdateChoices.Contact: { vacancy.Ad.Contact = VacancyHelper.InputData("Contact"); LoggerPublisher.OnLogInfo("Contact updated"); break; } } Database.Database.Changes = true; ConsoleScreen.Clear(); } }