Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> AppealSuccessful(Guid applicationId)
        {
            var appeal = await _appealsApiClient.GetAppeal(applicationId);

            if (appeal is null)
            {
                return(RedirectToAction("ProcessApplicationStatus", "RoatpOverallOutcome", new { applicationId }));
            }

            if (appeal.Status != AppealStatus.Successful && appeal.Status != AppealStatus.SuccessfulFitnessForFunding && appeal.Status != AppealStatus.SuccessfulAlreadyActive)
            {
                return(RedirectToAction("ProcessApplicationStatus", "RoatpOverallOutcome", new { applicationId }));
            }

            var application = await _applicationApiClient.GetApplication(applicationId);


            var model = new AppealSuccessfulViewModel
            {
                ApplicationId               = applicationId,
                AppealSubmittedDate         = appeal.AppealSubmittedDate ?? null,
                AppealDeterminedDate        = appeal.AppealDeterminedDate ?? null,
                AppealedOnEvidenceSubmitted = !string.IsNullOrEmpty(appeal.HowFailedOnEvidenceSubmitted),
                AppealedOnPolicyOrProcesses = !string.IsNullOrEmpty(appeal.HowFailedOnPolicyOrProcesses),
                ExternalComments            = appeal.ExternalComments,
                SubcontractingLimit         = application?.ApplyData?.GatewayReviewDetails?.SubcontractingLimit
            };

            var isGatewayFail = application?.GatewayReviewStatus == GatewayReviewStatus.Fail;

            if (isGatewayFail && application?.ApplicationStatus == ApplicationStatus.AppealSuccessful)
            {
                switch (appeal.Status)
                {
                case AppealStatus.Successful:
                case AppealStatus.SuccessfulAlreadyActive:
                case AppealStatus.SuccessfulFitnessForFunding:
                    return(View("~/Views/Appeals/AppealSuccessfulGatewayFail.cshtml", model));
                }
            }

            var isSupporting = application?.ApplyData?.ApplyDetails?.ProviderRoute.ToString() ==
                               Domain.Roatp.ApplicationRoute.SupportingProviderApplicationRoute.ToString();

            switch (appeal.Status)
            {
            case AppealStatus.Successful:
                return(View(isSupporting ? "~/Views/Appeals/AppealSuccessfulSupporting.cshtml" : "~/Views/Appeals/AppealSuccessful.cshtml", model));

            case AppealStatus.SuccessfulAlreadyActive:
                return(View(isSupporting ? "~/Views/Appeals/AppealSuccessfulSupportingAlreadyActive.cshtml" : "~/Views/Appeals/AppealSuccessfulAlreadyActive.cshtml", model));

            case AppealStatus.SuccessfulFitnessForFunding:
                return(View(isSupporting ? "~/Views/Appeals/AppealSuccessfulSupportingFitnessForFunding.cshtml" : "~/Views/Appeals/AppealSuccessfulFitnessForFunding.cshtml", model));
            }

            return(View("~/Views/Appeals/AppealSuccessful.cshtml", model));
        }
Ejemplo n.º 3
0
        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);
        }