private List <AutomatedQaResultViewModel> GetAutomatedQaResultViewModel(VacancyReview review) { var vm = new List <AutomatedQaResultViewModel>(); if (review.AutomatedQaOutcomeIndicators == null || review.AutomatedQaOutcome == null) { return(vm); } var referredOutcomes = review.AutomatedQaOutcomeIndicators .Where(i => i.IsReferred) .Select(i => i.RuleOutcomeId) .ToList(); foreach (var ruleOutcome in review.AutomatedQaOutcome.RuleOutcomes) { vm.AddRange( ruleOutcome.Details .Where(d => referredOutcomes.Contains(d.Id)) .Select(d => new AutomatedQaResultViewModel { OutcomeId = d.Id.ToString(), FieldId = d.Target, Checked = true, Text = _ruleTemplateRunner.ToText(ruleOutcome.RuleId, d.Data, FieldDisplayNameResolver.Resolve(d.Target)) })); } //sort by the order of the fields on the review page return(vm.OrderBy(v => ReviewFields.Keys.ToList().FindIndex(k => k == v.FieldId)).ToList()); }
public IEnumerable <ReviewFieldIndicatorViewModel> MapFromFieldIndicators(ReviewFieldMappingLookupsForPage pageMappings, VacancyReview review) { var manualQaFieldIdentifierNames = review.ManualQaFieldIndicators ?.Where(r => r.IsChangeRequested) .Select(r => r.FieldIdentifier) .ToList() ?? new List <string>(); var autoQaReferredOutcomeIds = review.AutomatedQaOutcomeIndicators ?.Where(i => i.IsReferred) .Select(i => i.RuleOutcomeId) .ToList() ?? new List <Guid>(); var autoQaReferredOutcomes = review.AutomatedQaOutcome?.RuleOutcomes .SelectMany(d => d.Details) .Where(x => autoQaReferredOutcomeIds.Contains(x.Id)) .ToList() ?? new List <RuleOutcome>(); var uniqueFieldIdentifierNames = manualQaFieldIdentifierNames.Union( autoQaReferredOutcomes.SelectMany(x => pageMappings.VacancyPropertyMappingsLookup.TryGetValue(x.Target, out var value) ? value : Enumerable.Empty <string>())); var indicatorsToDisplayLookup = pageMappings.FieldIdentifiersForPage .Where(r => uniqueFieldIdentifierNames.Contains(r.ReviewFieldIdentifier)) .ToDictionary(x => x.ReviewFieldIdentifier, y => y); foreach (var indicator in indicatorsToDisplayLookup) { if (manualQaFieldIdentifierNames.Contains(indicator.Key)) { indicator.Value.ManualQaText = ManualQaMessages[indicator.Key]; } var autoQaOutcomes = autoQaReferredOutcomes.Where(x => pageMappings.VacancyPropertyMappingsLookup.TryGetValue(x.Target, out var value) && value.Contains(indicator.Key)) .Select(x => _ruleTemplateRunner.ToText(x.RuleId, x.Data, FieldDisplayNameResolver.Resolve(x.Target))); indicator.Value.AutoQaTexts.AddRange(autoQaOutcomes); } return(indicatorsToDisplayLookup.Values); }