protected void SetVacancyWithProviderReviewFieldIndicators <T>(T currentValue, string fieldId, Vacancy vacancy, Func <Vacancy, T> setFunc ) { var newValue = setFunc(vacancy); if (vacancy.Status == VacancyStatus.Rejected) { PopulateProviderReviewFieldIndicators(vacancy); if (!JsonConvert.SerializeObject(currentValue).Equals(JsonConvert.SerializeObject(newValue))) { foreach (var fieldIdentifier in ReviewFieldMappingLookups.GetPreviewReviewFieldIndicators().VacancyPropertyMappingsLookup[fieldId]) { var changedIndicator = vacancy.ProviderReviewFieldIndicators.Where(p => p.FieldIdentifier == fieldIdentifier).FirstOrDefault(); if (changedIndicator != null) { changedIndicator.IsChangeRequested = true; } } } } }
private void PopulateEmployerReviewFieldIndicators(Vacancy vacancy) { var employerReviewFieldIndicators = vacancy.EmployerReviewFieldIndicators ?? new List <EmployerReviewFieldIndicator>(); // add field indicators which are missing var missingIndicators = ReviewFieldMappingLookups .GetPreviewReviewFieldIndicators().FieldIdentifiersForPage .Select(p => new EmployerReviewFieldIndicator { FieldIdentifier = p.ReviewFieldIdentifier, IsChangeRequested = false }) .Where(p => !employerReviewFieldIndicators.Any(v => v.FieldIdentifier == p.FieldIdentifier)); if (missingIndicators.Any()) { employerReviewFieldIndicators .AddRange(missingIndicators); vacancy.EmployerReviewFieldIndicators = employerReviewFieldIndicators .OrderBy(p => p.FieldIdentifier).ToList(); } }
public async Task <VacancyPreviewViewModel> GetVacancyPreviewViewModelAsync(VacancyRouteModel vrm) { var vacancyTask = Utility.GetAuthorisedVacancyForEditAsync(_client, _vacancyClient, vrm, RouteNames.Vacancy_Preview_Get); var programmesTask = _vacancyClient.GetActiveApprenticeshipProgrammesAsync(); await Task.WhenAll(vacancyTask, programmesTask); var vacancy = vacancyTask.Result; var programme = programmesTask.Result.SingleOrDefault(p => p.Id == vacancy.ProgrammeId); var vm = new VacancyPreviewViewModel(); await _vacancyDisplayMapper.MapFromVacancyAsync(vm, vacancy); vm.HasProgramme = vacancy.ProgrammeId != null; vm.HasWage = vacancy.Wage != null; vm.CanShowReference = vacancy.Status != VacancyStatus.Draft; vm.CanShowDraftHeader = vacancy.Status == VacancyStatus.Draft; vm.SoftValidationErrors = GetSoftValidationErrors(vacancy); if (programme != null) { vm.Level = programme.Level; } if (vacancy.Status == VacancyStatus.Referred) { vm.Review = await _reviewSummaryService.GetReviewSummaryViewModelAsync(vacancy.VacancyReference.Value, ReviewFieldMappingLookups.GetPreviewReviewFieldIndicators()); } return(vm); }
public async Task <VacancyPreviewViewModel> GetVacancyPreviewViewModelAsync(VacancyRouteModel vrm) { var vacancy = await Utility.GetAuthorisedVacancyForEditAsync(_client, _vacancyClient, vrm, RouteNames.Vacancy_Preview_Get); var vm = new VacancyPreviewViewModel(); await _vacancyDisplayMapper.MapFromVacancyAsync(vm, vacancy); vm.HasProgramme = vacancy.ProgrammeId != null; vm.HasWage = vacancy.Wage != null; vm.CanShowReference = vacancy.Status != VacancyStatus.Draft; vm.CanShowDraftHeader = vacancy.Status == VacancyStatus.Draft; if (vacancy.Status == VacancyStatus.Referred) { vm.Review = await _reviewSummaryService.GetReviewSummaryViewModelAsync(vacancy.VacancyReference.Value, ReviewFieldMappingLookups.GetPreviewReviewFieldIndicators()); } return(vm); }
public async Task <VacancyPreviewViewModel> GetVacancyPreviewViewModelAsync(VacancyRouteModel vrm) { var vacancyTask = Utility.GetAuthorisedVacancyForEditAsync(_client, _vacancyClient, vrm, RouteNames.Vacancy_Preview_Get); var programmesTask = _vacancyClient.GetActiveApprenticeshipProgrammesAsync(); await Task.WhenAll(vacancyTask, programmesTask); var vacancy = vacancyTask.Result; var programme = programmesTask.Result.SingleOrDefault(p => p.Id == vacancy.ProgrammeId); var hasProviderReviewPermission = await _providerRelationshipsService.HasProviderGotEmployersPermissionAsync(vrm.Ukprn, vacancy.EmployerAccountId, vacancy.AccountLegalEntityPublicHashedId, OperationType.RecruitmentRequiresReview); var vm = new VacancyPreviewViewModel(); await _vacancyDisplayMapper.MapFromVacancyAsync(vm, vacancy); vm.HasProgramme = vacancy.ProgrammeId != null; vm.HasWage = vacancy.Wage != null; vm.CanShowReference = vacancy.Status != VacancyStatus.Draft; vm.CanShowDraftHeader = vacancy.Status == VacancyStatus.Draft; vm.SoftValidationErrors = GetSoftValidationErrors(vacancy); vm.RequiresEmployerReview = hasProviderReviewPermission; if (programme != null) { vm.ApprenticeshipLevel = programme.ApprenticeshipLevel; } if (vacancy.Status == VacancyStatus.Referred) { vm.Review = await _reviewSummaryService.GetReviewSummaryViewModelAsync(vacancy.VacancyReference.Value, ReviewFieldMappingLookups.GetPreviewReviewFieldIndicators()); } return(vm); }
public void ShouldMap() { var shortDescriptionProfanityCheckRuleOutcome = new RuleOutcome( RuleId.ProfanityChecks, 100, "Profanity 'drat' found in 'ShortDescription'", "ShortDescription", new List <RuleOutcome>(), "{\"Profanity\" : \"drat\",\"Occurrences\" : 1}"); var titleProfanityCheckRuleOutcome = new RuleOutcome( RuleId.ProfanityChecks, 0, "No profanities found in 'Title'", "Title"); var profanityChecksRuleOutcome = new RuleOutcome( RuleId.ProfanityChecks, 100, "No profanities found in 'Title', Profanity 'drat' found in 'ShortDescription', etc", "", new List <RuleOutcome> { shortDescriptionProfanityCheckRuleOutcome, titleProfanityCheckRuleOutcome } ); var sut = new ReviewFieldIndicatorMapper(new RuleMessageTemplateRunner()); var review = new VacancyReview { ManualQaFieldIndicators = new List <ManualQaFieldIndicator> { new ManualQaFieldIndicator { IsChangeRequested = false, FieldIdentifier = FieldIdentifiers.Title }, new ManualQaFieldIndicator { IsChangeRequested = true, FieldIdentifier = FieldIdentifiers.ShortDescription } }, AutomatedQaOutcomeIndicators = new List <RuleOutcomeIndicator> { new RuleOutcomeIndicator { IsReferred = false, RuleOutcomeId = titleProfanityCheckRuleOutcome.Id }, new RuleOutcomeIndicator { IsReferred = true, RuleOutcomeId = shortDescriptionProfanityCheckRuleOutcome.Id } }, AutomatedQaOutcome = new RuleSetOutcome { RuleOutcomes = new List <RuleOutcome> { profanityChecksRuleOutcome } } }; var vm = sut.MapFromFieldIndicators(ReviewFieldMappingLookups.GetPreviewReviewFieldIndicators(), review).ToList(); vm.Count.Should().Be(1); var shortDescription = vm.Single(v => v.ReviewFieldIdentifier == FieldIdentifiers.ShortDescription); shortDescription.ManualQaText.Should().NotBeNullOrEmpty(); shortDescription.AutoQaTexts.Count.Should().Be(1); shortDescription.AutoQaTexts[0].Should().Be("Brief overview contains the phrase 'drat'"); }