public async Task AugmentModelWithModerationFailDetails(ApplicationSummaryWithModeratorDetailsViewModel model, string userId)
        {
            var sequences = await _apiClient.GetClarificationSequences(model.ApplicationId);

            var passFailDetails = await _apiClient.GetAllClarificationPageReviewOutcomes(model.ApplicationId, userId);

            var moderationFailedDetails = passFailDetails?.Where(x => x.Status == ModerationStatus.Fail ||
                                                                 (x.Status == null && x.ModeratorReviewStatus == ModerationStatus.Fail)).ToList();

            if (moderationFailedDetails.Any())
            {
                AddPagesToSequencesFromFailedDetails(sequences, moderationFailedDetails);

                var sequencesWithModerationFails = new List <AssessorSequence>();
                BuildSequencesWithModerationFails(sequences, sequencesWithModerationFails);

                var allSections = await _qnaApiClient.GetSections(model.ApplicationId);

                RemoveInactiveOrEmptyPagesSectionsSequencesFromSequences(sequencesWithModerationFails, allSections);
                AddPageTitlesToSequences(sequencesWithModerationFails);
                AddAnswersToSequences(sequencesWithModerationFails, allSections);
                AddQuestionsToSequences(sequencesWithModerationFails, allSections);
                AddSequenceTitlesToSequences(sequencesWithModerationFails);
                model.Sequences         = sequencesWithModerationFails;
                model.PagesWithGuidance =
                    GatherGuidancePagesForSequenceQuestions(sequencesWithModerationFails, allSections);
                model.PagesWithClarifications = GatherClarificationPages(moderationFailedDetails);
            }
        }
        private ApplicationSummaryWithModeratorDetailsViewModel GetCopyOfModel()
        {
            var model = new ApplicationSummaryWithModeratorDetailsViewModel {
                ApplicationId = _applicationId
            };

            return(model);
        }
        public async Task Applications_shows_unsuccessful_page_if_application_unsuccessful_and_gateway_not_a_fail()
        {
            var model = new ApplicationSummaryWithModeratorDetailsViewModel
            {
                ApplicationStatus         = ApplicationStatus.Unsuccessful,
                GatewayReviewStatus       = GatewayReviewStatus.Pass,
                ApplicationDeterminedDate = DateTime.Today,
                AppealRequiredByDate      = DateTime.Today.AddDays(10)
            };

            _outcomeService.Setup(x => x.BuildApplicationSummaryViewModel(_applicationId, It.IsAny <string>())).ReturnsAsync(model);
            _outcomeService.Setup(x => x.BuildApplicationSummaryViewModelWithGatewayAndModerationDetails(_applicationId, It.IsAny <string>())).ReturnsAsync(model);

            var result = await _controller.ProcessApplicationStatus(_applicationId);

            var viewResult = result as ViewResult;

            viewResult.Should().NotBeNull();
            viewResult.ViewName.Should().Contain("ApplicationUnsuccessfulPostGateway.cshtml");
        }