示例#1
0
        public async Task <IActionResult> AboutToAskForClarification(Guid applicationId, string confirmAskForClarification)
        {
            var username  = HttpContext.User.UserDisplayName();
            var viewModel = await _orchestrator.GetClarificationViewModel(new GetApplicationClarificationsRequest(applicationId, username));

            if (viewModel is null)
            {
                return(RedirectToAction(nameof(NewApplications)));
            }
            else if (string.IsNullOrEmpty(confirmAskForClarification))
            {
                viewModel.ErrorMessages = new List <ValidationErrorDetail>
                {
                    new ValidationErrorDetail("ConfirmAskForClarification",
                                              "Select if you are sure you want to ask for clarification")
                };

                viewModel.CssFormGroupError = "govuk-form-group--error";
                return(View("~/Views/Gateway/AskForClarification.cshtml", viewModel));
            }
            else if (confirmAskForClarification == "No" || viewModel.GatewayReviewStatus == GatewayReviewStatus.ClarificationSent)
            {
                return(RedirectToAction(nameof(ViewApplication), new { applicationId }));
            }

            var userId = HttpContext.User.UserId();
            await _applyApiClient.UpdateGatewayReviewStatusAsClarification(applicationId, userId, username);

            var vm = new RoatpGatewayOutcomeViewModel {
                ApplicationId = applicationId
            };

            return(View("~/Views/Gateway/ConfirmApplicationClarification.cshtml", vm));
        }
示例#2
0
        public async Task <IActionResult> AboutToRejectOutcome(RoatpGatewayRejectOutcomeViewModel viewModel)
        {
            if (viewModel.ApplicationStatus == ApplicationStatus.GatewayAssessed)
            {
                return(RedirectToAction(nameof(NewApplications)));
            }

            if (ModelState.IsValid)
            {
                if (viewModel.ConfirmGatewayOutcome.Equals(HtmlAndCssElements.RadioButtonValueYes, StringComparison.InvariantCultureIgnoreCase))
                {
                    var username = HttpContext.User.UserDisplayName();
                    var userId   = HttpContext.User.UserId();
                    await _applyApiClient.UpdateGatewayReviewStatusAndComment(viewModel.ApplicationId, viewModel.GatewayReviewStatus, viewModel.GatewayReviewComment, viewModel.GatewayReviewExternalComment, userId, username);

                    var vm = new RoatpGatewayOutcomeViewModel {
                        GatewayReviewStatus = viewModel.GatewayReviewStatus
                    };
                    return(View("~/Views/Gateway/ApplicationRejected.cshtml", vm));
                }
                else
                {
                    return(RedirectToAction(nameof(ConfirmOutcome), new
                    {
                        applicationId = viewModel.ApplicationId,
                        gatewayReviewStatus = viewModel.GatewayReviewStatus,
                        gatewayReviewComment = viewModel.GatewayReviewComment,
                        gatewayReviewExternalComment = viewModel.GatewayReviewExternalComment
                    }));
                }
            }
            else
            {
                viewModel.CssFormGroupError = HtmlAndCssElements.CssFormGroupErrorClass;
                return(View("~/Views/Gateway/ConfirmOutcomeRejected.cshtml", viewModel));
            }
        }
示例#3
0
        public async Task <IActionResult> EvaluateConfirmOutcome(RoatpGatewayApplicationViewModel viewModel)
        {
            var application = await _applyApiClient.GetApplication(viewModel.ApplicationId);

            if (application is null || application.ApplicationStatus == ApplicationStatus.GatewayAssessed)
            {
                return(RedirectToAction(nameof(NewApplications)));
            }

            var validationResponse = await _validator.Validate(viewModel);

            if (validationResponse.Errors != null && validationResponse.Errors.Any())
            {
                var username         = HttpContext.User.UserDisplayName();
                var viewModelOnError = await _orchestrator.GetConfirmOverviewViewModel(new GetApplicationOverviewRequest(viewModel.ApplicationId, username));

                if (viewModelOnError != null)
                {
                    _orchestrator.ProcessViewModelOnError(viewModelOnError, viewModel, validationResponse);
                    return(View("~/Views/Gateway/ConfirmOutcome.cshtml", viewModelOnError));
                }
                else
                {
                    return(RedirectToAction(nameof(ViewApplication), new { applicationId = viewModel.ApplicationId }));
                }
            }

            var viewName = "~/Views/Gateway/ConfirmOutcomeAskClarification.cshtml";


            var confirmViewModel = new RoatpGatewayOutcomeViewModel {
                ApplicationId = viewModel.ApplicationId, GatewayReviewStatus = viewModel.GatewayReviewStatus
            };

            switch (viewModel.GatewayReviewStatus)
            {
            case GatewayReviewStatus.ClarificationSent:
            {
                confirmViewModel.GatewayReviewComment = viewModel.OptionAskClarificationText;
                break;
            }

            case GatewayReviewStatus.Fail:
            {
                confirmViewModel = new RoatpGatewayFailOutcomeViewModel
                {
                    ApplicationId                = viewModel.ApplicationId,
                    GatewayReviewStatus          = viewModel.GatewayReviewStatus,
                    GatewayReviewComment         = viewModel.OptionFailedText,
                    GatewayReviewExternalComment = viewModel.OptionFailedExternalText
                };
                viewName = "~/Views/Gateway/ConfirmOutcomeFailed.cshtml";
                break;
            }

            case GatewayReviewStatus.Pass:
            {
                confirmViewModel = new RoatpGatewayConfirmOutcomeViewModel
                {
                    ApplicationId                = viewModel.ApplicationId,
                    GatewayReviewStatus          = viewModel.GatewayReviewStatus,
                    GatewayReviewComment         = viewModel.OptionApprovedText,
                    GatewayReviewExternalComment = string.Empty
                };
                viewName = "~/Views/Gateway/ConfirmOutcomeApproved.cshtml";
                break;
            }

            case GatewayReviewStatus.Reject:
            {
                var contact = await _applyApiClient.GetContactDetails(viewModel.ApplicationId);

                confirmViewModel = new RoatpGatewayRejectOutcomeViewModel
                {
                    ApplicationId                = viewModel.ApplicationId,
                    Ukprn                        = application.ApplyData.ApplyDetails.UKPRN,
                    ApplyLegalName               = application.ApplyData.ApplyDetails.OrganisationName,
                    ApplicationRoute             = application.ApplyData.ApplyDetails.ProviderRouteName,
                    ApplicationReferenceNumber   = application.ApplyData.ApplyDetails.ReferenceNumber,
                    ApplicationEmailAddress      = contact?.Email,
                    ApplicationSubmittedOn       = application.ApplyData.ApplyDetails.ApplicationSubmittedOn,
                    GatewayReviewStatus          = viewModel.GatewayReviewStatus,
                    GatewayReviewComment         = viewModel.OptionRejectedText,
                    GatewayReviewExternalComment = viewModel.OptionExternalRejectedText
                };
                viewName = "~/Views/Gateway/ConfirmOutcomeRejected.cshtml";
                break;
            }
            }

            return(View(viewName, confirmViewModel));
        }