示例#1
0
        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);
        }