private async Task SetSectorReviewOutcome(GetSectorDetailsRequest request, OutcomeSectorDetailsViewModel viewModel)
        {
            // TODO: To think about... could we move this into Apply Service? It's really part of getting the moderator page back from the service
            var pageReviewOutcome = await _clarificationApiClient.GetClarificationPageReviewOutcome(request.ApplicationId, SequenceIds.DeliveringApprenticeshipTraining,
                                                                                                    SectionIds.DeliveringApprenticeshipTraining.YourSectorsAndEmployees, viewModel.PageId, request.UserId);

            if (pageReviewOutcome != null)
            {
                viewModel.Status = pageReviewOutcome.Status;
                switch (pageReviewOutcome.Status)
                {
                case ClarificationPageReviewStatus.Pass:
                    viewModel.OptionPassText = pageReviewOutcome.Comment;
                    break;

                case ClarificationPageReviewStatus.Fail:
                    viewModel.OptionFailText = pageReviewOutcome.Comment;
                    break;

                case ClarificationPageReviewStatus.InProgress:
                    viewModel.OptionInProgressText = pageReviewOutcome.Comment;
                    break;

                default:
                    break;
                }

                viewModel.ModerationOutcome = new ModerationOutcome
                {
                    ApplicationId          = pageReviewOutcome.ApplicationId,
                    SequenceNumber         = pageReviewOutcome.SequenceNumber,
                    SectionNumber          = pageReviewOutcome.SectionNumber,
                    PageId                 = pageReviewOutcome.PageId,
                    ModeratorUserId        = pageReviewOutcome.ModeratorUserId,
                    ModeratorUserName      = pageReviewOutcome.ModeratorUserName,
                    ModeratorReviewStatus  = pageReviewOutcome.ModeratorReviewStatus,
                    ModeratorReviewComment = pageReviewOutcome.ModeratorReviewComment
                };

                viewModel.ClarificationOutcome = new ApplyTypes.Outcome.ClarificationOutcome
                {
                    ApplicationId              = pageReviewOutcome.ApplicationId,
                    SequenceNumber             = pageReviewOutcome.SequenceNumber,
                    SectionNumber              = pageReviewOutcome.SectionNumber,
                    PageId                     = pageReviewOutcome.PageId,
                    ClarifierUserId            = pageReviewOutcome.UserId,
                    ClarifierUserName          = pageReviewOutcome.UserName,
                    ClarificationReviewStatus  = pageReviewOutcome.Status,
                    ClarificationReviewComment = pageReviewOutcome.Comment,
                    ClarificationResponse      = pageReviewOutcome.ClarificationResponse,
                    ClarificationFiles         = string.IsNullOrEmpty(pageReviewOutcome.ClarificationFile) ? null : new List <string> {
                        pageReviewOutcome.ClarificationFile
                    }
                };

                viewModel.ClarificationResponse = pageReviewOutcome.ClarificationResponse;
                viewModel.ClarificationFile     = pageReviewOutcome.ClarificationFile;
            }
        }
        public async Task <OutcomeSectorDetailsViewModel> GetSectorDetailsViewModel(Guid applicationId, string pageId)
        {
            var sectorDetails = await _apiClient.GetClarificationSectorDetails(applicationId, pageId);

            var model = new OutcomeSectorDetailsViewModel
            {
                ApplicationId = applicationId,
                SectorDetails = sectorDetails
            };

            return(model);
        }
        public async Task <OutcomeSectorDetailsViewModel> GetSectorDetailsViewModel(GetSectorDetailsRequest request)
        {
            var application = await _applicationApiClient.GetApplication(request.ApplicationId);

            var clarificationPage = await _clarificationApiClient.GetClarificationPage(
                request.ApplicationId,
                SequenceIds.DeliveringApprenticeshipTraining,
                SectionIds.DeliveringApprenticeshipTraining.YourSectorsAndEmployees,
                RoatpWorkflowPageIds.YourSectorsAndEmployeesStartingPageId);

            if (application is null || clarificationPage is null)
            {
                return(null);
            }

            var sectorDetails = await _clarificationApiClient.GetClarificationSectorDetails(request.ApplicationId, request.PageId);

            var blindAssessmentOutcome = await _moderationApiClient.GetBlindAssessmentOutcome(request.ApplicationId, SequenceIds.DeliveringApprenticeshipTraining, SectionIds.DeliveringApprenticeshipTraining.YourSectorsAndEmployees, request.PageId);

            var viewModel = new OutcomeSectorDetailsViewModel
            {
                ApplicationId          = application.ApplicationId,
                Ukprn                  = application.ApplyData.ApplyDetails.UKPRN,
                PageId                 = request.PageId,
                ApplicantEmailAddress  = null,
                ApplyLegalName         = application.ApplyData.ApplyDetails.OrganisationName,
                ApplicationRoute       = application.ApplyData.ApplyDetails.ProviderRouteName,
                SubmittedDate          = application.ApplyData.ApplyDetails.ApplicationSubmittedOn,
                Caption                = clarificationPage.Caption,
                Heading                = $"Delivering training in '{sectorDetails?.SectorName}' sector",
                SectorDetails          = sectorDetails,
                BlindAssessmentOutcome = blindAssessmentOutcome
            };

            await SetSectorReviewOutcome(request, viewModel);

            return(viewModel);
        }
        public async Task Application_sectors_show_sector_details()
        {
            var          applicationId = Guid.NewGuid();
            const string pageId        = "pageId";
            const string sectorName    = "name of sector";

            var viewModel = new OutcomeSectorDetailsViewModel
            {
                ApplicationId = applicationId,
                SectorDetails = new SectorDetails {
                    SectorName = sectorName
                }
            };

            _outcomeService.Setup(x => x.GetSectorDetailsViewModel(applicationId, pageId)).ReturnsAsync(viewModel);
            var result = await _controller.GetSectorDetails(applicationId, pageId);

            var viewResult = result as ViewResult;

            viewResult.Should().NotBeNull();
            viewResult.Model.Should().Be(viewModel);
            viewResult.ViewName.Should().Contain("ApplicationUnsuccessfulSectorAnswers.cshtml");
        }