public async Task AppealSubmitted_shows_Submitted_page_if_appeal_submitted() { var model = new AppealSubmittedViewModel { ApplicationId = _applicationId, AppealSubmittedDate = DateTime.UtcNow, HowFailedOnEvidenceSubmitted = "valid input", HowFailedOnPolicyOrProcesses = "valid input", AppealFiles = new List <AppealFile>() }; var appeal = new GetAppealResponse { Status = AppealStatus.Submitted, ApplicationId = model.ApplicationId, AppealSubmittedDate = model.AppealSubmittedDate, HowFailedOnEvidenceSubmitted = model.HowFailedOnEvidenceSubmitted, HowFailedOnPolicyOrProcesses = model.HowFailedOnPolicyOrProcesses, AppealFiles = model.AppealFiles }; _appealsApiClient.Setup(x => x.GetAppeal(_applicationId)).ReturnsAsync(appeal); var result = await _controller.AppealSubmitted(_applicationId); var viewResult = result as ViewResult; viewResult.Should().NotBeNull(); viewResult.ViewName.Should().Contain("AppealSubmitted.cshtml"); viewResult.Model.Should().BeEquivalentTo(model); }
public async Task AppealSubmitted_shows_Successful_Gateway_Fail_page_if_appeal_deemed_Successful_and_Gateway_Fail(string appealStatus) { var model = new AppealSuccessfulViewModel { ApplicationId = _applicationId, }; var appeal = new GetAppealResponse { Status = appealStatus, ApplicationId = model.ApplicationId, }; _appealsApiClient.Setup(x => x.GetAppeal(_applicationId)).ReturnsAsync(appeal); var application = new Apply { GatewayReviewStatus = GatewayReviewStatus.Fail, ApplicationStatus = ApplicationStatus.AppealSuccessful }; _applicationApiClient.Setup(x => x.GetApplication(_applicationId)).ReturnsAsync(application); var result = await _controller.AppealSuccessful(_applicationId); var viewResult = result as ViewResult; viewResult.Should().NotBeNull(); viewResult.ViewName.Should().Contain("~/Views/Appeals/AppealSuccessfulGatewayFail.cshtml"); viewResult.Model.Should().BeEquivalentTo(model); }
public async Task AppealSubmitted_shows_Unsuccessful_page_if_appeal_deemed_unsuccessful() { var model = new AppealUnsuccessfulViewModel { ApplicationId = _applicationId, AppealSubmittedDate = DateTime.UtcNow.AddDays(-1), AppealDeterminedDate = DateTime.UtcNow, AppealedOnEvidenceSubmitted = true, AppealedOnPolicyOrProcesses = true, ExternalComments = "You were unsuccessful" }; var appeal = new GetAppealResponse { Status = AppealStatus.Unsuccessful, ApplicationId = model.ApplicationId, AppealSubmittedDate = model.AppealSubmittedDate, AppealDeterminedDate = model.AppealDeterminedDate, HowFailedOnEvidenceSubmitted = "valid input", HowFailedOnPolicyOrProcesses = "valid input", ExternalComments = model.ExternalComments }; _appealsApiClient.Setup(x => x.GetAppeal(_applicationId)).ReturnsAsync(appeal); var result = await _controller.AppealUnsuccessful(_applicationId); var viewResult = result as ViewResult; viewResult.Should().NotBeNull(); viewResult.ViewName.Should().Contain("AppealUnsuccessful.cshtml"); viewResult.Model.Should().BeEquivalentTo(model); }
public async Task <OutcomeViewModel> GetOversightDetailsViewModel(Guid applicationId, Guid?outcomeKey) { var applicationDetailsTask = _applyApiClient.GetApplicationDetails(applicationId); var oversightReviewTask = _applyApiClient.GetOversightReview(applicationId); await Task.WhenAll(applicationDetailsTask, oversightReviewTask); var applicationDetails = _applyApiClient.GetApplicationDetails(applicationId).Result; var oversightReview = _applyApiClient.GetOversightReview(applicationId).Result; GetAppealResponse appealResponse = null; if (oversightReview != null) { appealResponse = await _applyApiClient.GetAppeal(applicationId, oversightReview.Id); } var viewModel = new OutcomeViewModel { IsNew = oversightReview == null, ApplicationSummary = CreateApplicationSummaryViewModel(applicationDetails), GatewayOutcome = CreateGatewayOutcomeViewModel(applicationDetails, oversightReview), FinancialHealthOutcome = CreateFinancialHealthOutcomeViewModel(applicationDetails), ModerationOutcome = CreateModerationOutcomeViewModel(applicationDetails, oversightReview), InProgressDetails = CreateInProgressDetailsViewModel(oversightReview), OverallOutcome = CreateOverallOutcomeViewModel(oversightReview), AppealViewModel = appealResponse == null ? null : CreateAppealViewModel(applicationDetails, appealResponse), ShowAppealLink = oversightReview != null && oversightReview.Status == OversightReviewStatus.Unsuccessful && appealResponse == null, ShowInProgressDetails = oversightReview?.InProgressDate != null, OversightStatus = oversightReview?.Status ?? OversightReviewStatus.None, ApproveGateway = GetStringValueForApprovalStatusBoolean(oversightReview?.GatewayApproved), ApproveModeration = GetStringValueForApprovalStatusBoolean(oversightReview?.ModerationApproved), IsGatewayRemoved = applicationDetails.ApplicationStatus == ApplicationStatus.Removed, IsGatewayFail = applicationDetails.GatewayReviewStatus == GatewayReviewStatus.Fail, HasFinalOutcome = oversightReview != null && oversightReview.Status != OversightReviewStatus.None && oversightReview.Status != OversightReviewStatus.InProgress }; if (oversightReview == null || oversightReview.Status == OversightReviewStatus.InProgress) { var cachedItem = await _cacheStorageService.RetrieveFromCache <OutcomePostRequest>(outcomeKey.ToString()); if (cachedItem == null) { return(viewModel); } viewModel.OversightStatus = cachedItem.OversightStatus; viewModel.ApproveGateway = cachedItem.ApproveGateway; viewModel.ApproveModeration = cachedItem.ApproveModeration; viewModel.SuccessfulText = cachedItem.SuccessfulText; viewModel.SuccessfulAlreadyActiveText = cachedItem.SuccessfulAlreadyActiveText; viewModel.SuccessfulFitnessForFundingText = cachedItem.SuccessfulFitnessForFundingText; viewModel.UnsuccessfulText = cachedItem.UnsuccessfulText; viewModel.UnsuccessfulExternalText = cachedItem.UnsuccessfulExternalText; viewModel.InProgressInternalText = cachedItem.InProgressInternalText; viewModel.InProgressExternalText = cachedItem.InProgressExternalText; } return(viewModel); }
public async Task AppealNotYetSubmittedRequirement_Does_Not_Succeed_If_User_Has_Submitted_Appeal() { var appeal = new GetAppealResponse { ApplicationId = _applicationId, AppealSubmittedDate = DateTime.Now }; _appealsApiClient.Setup(x => x.GetAppeal(_applicationId)).ReturnsAsync(appeal); var handlerContext = CreateHandlerContext(new AppealNotYetSubmittedRequirement()); await _handler.HandleAsync(handlerContext); Assert.IsFalse(handlerContext.HasSucceeded); }
public async Task AppealSubmitted_shows_Successful_page_if_appeal_deemed_Successful(string appealStatus, bool isSupporting, string expectedPage) { var model = new AppealSuccessfulViewModel { ApplicationId = _applicationId, AppealSubmittedDate = DateTime.UtcNow.AddDays(-1), AppealDeterminedDate = DateTime.UtcNow, AppealedOnEvidenceSubmitted = true, AppealedOnPolicyOrProcesses = true, ExternalComments = "You were successful" }; var appeal = new GetAppealResponse { Status = appealStatus, ApplicationId = model.ApplicationId, AppealSubmittedDate = model.AppealSubmittedDate, AppealDeterminedDate = model.AppealDeterminedDate, HowFailedOnEvidenceSubmitted = "valid input", HowFailedOnPolicyOrProcesses = "valid input", ExternalComments = model.ExternalComments }; _appealsApiClient.Setup(x => x.GetAppeal(_applicationId)).ReturnsAsync(appeal); var route = Domain.Roatp.ApplicationRoute.MainProviderApplicationRoute; if (isSupporting) { route = Domain.Roatp.ApplicationRoute.SupportingProviderApplicationRoute; } var application = new Apply { ApplyData = new ApplyData { ApplyDetails = new ApplyDetails { ProviderRoute = route } } }; _applicationApiClient.Setup(x => x.GetApplication(_applicationId)).ReturnsAsync(application); var result = await _controller.AppealSuccessful(_applicationId); var viewResult = result as ViewResult; viewResult.Should().NotBeNull(); viewResult.ViewName.Should().Contain(expectedPage); viewResult.Model.Should().BeEquivalentTo(model); }
public async Task <ApplicationSummaryViewModel> BuildApplicationSummaryViewModel(Guid applicationId, string emailAddress) { var application = await _applicationApiClient.GetApplication(applicationId); var financialReviewDetails = await _applicationApiClient.GetFinancialReviewDetails(applicationId); GetOversightReviewResponse oversightReview = null; GetAppealResponse appeal = null; var applyingJourneyStatuses = new List <string> { ApplicationStatus.New, ApplicationStatus.InProgress }; if (!applyingJourneyStatuses.Contains(application.Status)) { oversightReview = await _apiClient.GetOversightReview(applicationId); appeal = await _appealsApiClient.GetAppeal(applicationId); } var applicationData = application.ApplyData.ApplyDetails; var model = new ApplicationSummaryViewModel { ApplicationId = application.ApplicationId, UKPRN = applicationData.UKPRN, OrganisationName = applicationData.OrganisationName, TradingName = applicationData.TradingName, ApplicationRouteId = applicationData.ProviderRoute.ToString(), ApplicationReference = applicationData.ReferenceNumber, SubmittedDate = applicationData?.ApplicationSubmittedOn, GatewayExternalComments = application.ExternalComments ?? application.ApplyData.GatewayReviewDetails?.ExternalComments, EmailAddress = emailAddress, FinancialReviewStatus = financialReviewDetails?.Status, FinancialGrade = financialReviewDetails?.SelectedGrade, FinancialExternalComments = financialReviewDetails?.ExternalComments, GatewayReviewStatus = application?.GatewayReviewStatus, ModerationStatus = application?.ModerationStatus, SubcontractingLimit = application?.ApplyData?.GatewayReviewDetails?.SubcontractingLimit, ApplicationStatus = application?.ApplicationStatus, ApplicationDeterminedDate = oversightReview?.ApplicationDeterminedDate, OversightReviewStatus = oversightReview?.Status, OversightInProgressExternalComments = oversightReview?.InProgressExternalComments, AppealRequiredByDate = oversightReview is null ? null : await _apiClient.GetWorkingDaysAheadDate(oversightReview?.ApplicationDeterminedDate, NumberOfWorkingDaysToAppeal), IsAppealSubmitted = appeal?.AppealSubmittedDate != null, AppealStatus = appeal?.Status }; return(model); }
public async Task MakeAppeal_shows_ProcessApplicationStatus_page_if_appeal_already_submitted() { var appeal = new GetAppealResponse { Status = AppealStatus.Submitted, AppealSubmittedDate = DateTime.UtcNow }; _appealsApiClient.Setup(x => x.GetAppeal(_applicationId)).ReturnsAsync(appeal); var result = await _controller.MakeAppeal(_applicationId); var viewResult = result as RedirectToActionResult; viewResult.Should().NotBeNull(); viewResult.ActionName.Should().Be("ProcessApplicationStatus"); }
private AppealOutcomeViewModel CreateAppealViewModel(ApplicationDetails applicationDetails, GetAppealResponse appealResponse) { return(new AppealOutcomeViewModel { ApplicationId = applicationDetails.ApplicationId, AppealId = appealResponse.Id, Message = appealResponse.Message, CreatedOn = appealResponse.CreatedOn, Status = appealResponse.Status, UserId = appealResponse.UserId, UserName = appealResponse.UserName, Uploads = appealResponse.Uploads.Select((upload => new AppealOutcomeViewModel.AppealUpload { Id = upload.Id, Filename = upload.Filename, ContentType = upload.ContentType, })).ToList() }); }