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)); }
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)); } }
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)); }