Exemplo n.º 1
0
        public async Task <IActionResult> ConditionsOfAcceptance(SelectApplicationRouteViewModel routeViewModel)
        {
            if (!ModelState.IsValid)
            {
                var model = new SelectApplicationRouteViewModel
                {
                    ApplicationRoutes = await GetApplicationRoutes(),
                    ErrorMessages     = new List <ValidationErrorDetail>()
                };

                var modelErrors = ModelState.Values.SelectMany(v => v.Errors);
                foreach (var modelError in modelErrors)
                {
                    model.ErrorMessages.Add(new ValidationErrorDetail
                    {
                        Field        = "ApplicationRouteId",
                        ErrorMessage = modelError.ErrorMessage
                    });
                }

                return(View("~/Views/Roatp/SelectApplicationRoute.cshtml", model));
            }

            return(View("~/Views/Roatp/ConditionsOfAcceptance.cshtml", new ConditionsOfAcceptanceViewModel {
                ApplicationId = routeViewModel.ApplicationId, ApplicationRouteId = routeViewModel.ApplicationRouteId
            }));
        }
Exemplo n.º 2
0
        private async Task <IActionResult> UpdateProviderRoute(SelectApplicationRouteViewModel model)
        {
            if (model.ApplicationRouteId == ApplicationRoute.EmployerProviderApplicationRoute && model.LevyPayingEmployer != "Y")
            {
                var ukprnAnswer = await _qnaApiClient.GetAnswerByTag(model.ApplicationId, RoatpWorkflowQuestionTags.UKPRN);

                return(RedirectToAction("ConfirmLevyStatus", new
                {
                    applicationId = model.ApplicationId,
                    ukprn = ukprnAnswer.Value,
                    applicationRouteId = model.ApplicationRouteId
                }));
            }

            var result = await UpdatePageAnswersbyTag(model);

            if (result.ValidationPassed)
            {
                await UpdatePageAnswersBySectionNo(model);
            }

            if (result.ValidationPassed)
            {
                await ChangeProviderRouteResetRouteQuestions(model);
            }

            return(RedirectToAction("ConditionsOfAcceptance", new { applicationId = model.ApplicationId, applicationRouteId = model.ApplicationRouteId }));
        }
Exemplo n.º 3
0
        public async Task <IActionResult> ProcessRoute(SelectApplicationRouteViewModel model)
        {
            if (!ModelState.IsValid)
            {
                model.ApplicationRoutes = await GetApplicationRoutes();

                model.ErrorMessages = new List <ValidationErrorDetail>();
                var modelErrors = ModelState.Values.SelectMany(v => v.Errors);
                foreach (var modelError in modelErrors)
                {
                    model.ErrorMessages.Add(new ValidationErrorDetail
                    {
                        Field        = "ApplicationRouteId",
                        ErrorMessage = modelError.ErrorMessage
                    });
                }
                return(View("~/Views/Roatp/SelectApplicationRoute.cshtml", model));
            }

            if (model.ApplicationRouteId == ApplicationRoute.EmployerProviderApplicationRoute)
            {
                var applicationRoutes = await GetApplicationRoutes();

                var applicationDetails = _sessionService.Get <ApplicationDetails>(ApplicationDetailsKey);
                applicationDetails.ApplicationRoute = applicationRoutes.FirstOrDefault(x => x.Id == model.ApplicationRouteId);
                _sessionService.Set(ApplicationDetailsKey, applicationDetails);

                return(RedirectToAction("ConfirmLevyStatus", new { ukprn = applicationDetails.UKPRN, applicationRouteId = model.ApplicationRouteId }));
            }
            else
            {
                return(RedirectToAction("ConditionsOfAcceptance", model));
            }
        }
Exemplo n.º 4
0
        public async Task <IActionResult> StartApplication(SelectApplicationRouteViewModel model)
        {
            if (!ModelState.IsValid)
            {
                model.ApplicationRoutes = await GetApplicationRoutes();

                model.ErrorMessages = new List <ValidationErrorDetail>();
                var modelErrors = ModelState.Values.SelectMany(v => v.Errors);
                foreach (var modelError in modelErrors)
                {
                    model.ErrorMessages.Add(new ValidationErrorDetail
                    {
                        Field        = "ApplicationRouteId",
                        ErrorMessage = modelError.ErrorMessage
                    });
                }

                return(View("~/Views/Roatp/SelectApplicationRoute.cshtml", model));
            }

            if (model.ApplicationId == Guid.Empty)
            {
                return(await StartRoatpApplication(model));
            }
            else
            {
                return(await UpdateProviderRoute(model));
            }
        }
Exemplo n.º 5
0
        private async Task <IActionResult> StartRoatpApplication(SelectApplicationRouteViewModel model)
        {
            _logger.LogDebug("StartRoatpApplication invoked");

            var applicationDetails = _sessionService.Get <ApplicationDetails>(ApplicationDetailsKey);

            applicationDetails.ApplicationRoute = new ApplicationRoute {
                Id = model.ApplicationRouteId
            };

            var user = await _usersApiClient.GetUserBySignInId(User.GetSignInId());

            applicationDetails.CreatedBy = user.Id;

            var createOrganisationRequest = Mapper.Map <CreateOrganisationRequest>(applicationDetails);

            await _organisationApiClient.Create(createOrganisationRequest, user.Id);

            _sessionService.Set(ApplicationDetailsKey, applicationDetails);

            if (!user.IsApproved)
            {
                await _usersApiClient.ApproveUser(user.Id);
            }

            _logger.LogDebug("StartRoatpApplication completed");

            return(RedirectToAction("Applications", "RoatpApplication", new { applicationType = ApplicationTypes.RegisterTrainingProviders }));
        }
Exemplo n.º 6
0
        private async Task ChangeProviderRouteResetRouteQuestions(SelectApplicationRouteViewModel model)
        {
            var providerRoutes = await _roatpApiClient.GetApplicationRoutes();

            var selectedProviderRoute = providerRoutes.FirstOrDefault(x => x.Id == model.ApplicationRouteId);

            await _applicationApiClient.ChangeProviderRoute(new ChangeProviderRouteRequest
            {
                ApplicationId     = model.ApplicationId,
                ProviderRoute     = model.ApplicationRouteId,
                ProviderRouteName = selectedProviderRoute?.RouteName
            });

            await _resetRouteQuestionsService.ResetRouteQuestions(model.ApplicationId, model.ApplicationRouteId);
        }
Exemplo n.º 7
0
        private async Task <SetPageAnswersResponse> UpdatePageAnswersbyTag(SelectApplicationRouteViewModel model)
        {
            var providerRouteAnswer = new List <Answer>
            {
                new Answer
                {
                    QuestionId = RoatpPreambleQuestionIdConstants.ApplyProviderRoute,
                    Value      = model.ApplicationRouteId.ToString()
                }
            };

            var result = await _qnaApiClient.UpdatePageAnswers(model.ApplicationId, RoatpWorkflowSequenceIds.Preamble, RoatpWorkflowSectionIds.Preamble, RoatpWorkflowPageIds.ProviderRoute, providerRouteAnswer);

            return(result);
        }
Exemplo n.º 8
0
        public async Task <IActionResult> ChangeApplicationProviderRoute(Guid applicationId)
        {
            var model = new SelectApplicationRouteViewModel {
                ApplicationId = applicationId
            };

            PopulateGetHelpWithQuestion(model, "ApplicationRoute");
            model.ApplicationRoutes = await GetApplicationRoutesForOrganisation(applicationId);

            var applicationRoute = await _qnaApiClient.GetAnswerByTag(applicationId, RoatpWorkflowQuestionTags.ProviderRoute);

            model.ApplicationRouteId = Convert.ToInt32(applicationRoute.Value);

            return(View("~/Views/Roatp/SelectApplicationRoute.cshtml", model));
        }
Exemplo n.º 9
0
        public async Task <IActionResult> ProcessRoute(SelectApplicationRouteViewModel model)
        {
            if (model.ApplicationRouteId == ApplicationRoute.EmployerProviderApplicationRoute)
            {
                var applicationRoutes = await GetApplicationRoutesForOrganisation();

                var applicationDetails = _sessionService.Get <ApplicationDetails>(ApplicationDetailsKey);
                applicationDetails.ApplicationRoute = applicationRoutes.FirstOrDefault(x => x.Id == model.ApplicationRouteId);
                _sessionService.Set(ApplicationDetailsKey, applicationDetails);

                return(RedirectToAction("ConfirmLevyStatus", new { ukprn = applicationDetails.UKPRN, applicationRouteId = model.ApplicationRouteId }));
            }
            else
            {
                return(await ConditionsOfAcceptance(new SelectApplicationRouteViewModel { ApplicationRouteId = model.ApplicationRouteId }));
            }
        }
Exemplo n.º 10
0
        private async Task UpdatePageAnswersBySectionNo(SelectApplicationRouteViewModel model)
        {
            var preambleDetails = await _qnaApiClient.GetPageBySectionNo(model.ApplicationId,
                                                                         RoatpWorkflowSequenceIds.Preamble, RoatpWorkflowSectionIds.Preamble, RoatpWorkflowPageIds.Preamble);

            var preambleAnswers = preambleDetails?.PageOfAnswers[0]?.Answers;

            var onRoatp =
                await _qnaApiClient.GetAnswerByTag(model.ApplicationId, RoatpWorkflowQuestionTags.OnRoatp);

            var onRoatpRegisterTrue = onRoatp?.Value == "TRUE";
            var routeAndOnRoatp     = string.Empty;

            switch (model.ApplicationRouteId)
            {
            case ApplicationRoute.MainProviderApplicationRoute:
                routeAndOnRoatp = onRoatpRegisterTrue
                        ? RouteAndOnRoatpTags.MainOnRoatp
                        : RouteAndOnRoatpTags.MainNotOnRoatp;
                break;

            case ApplicationRoute.EmployerProviderApplicationRoute:
                routeAndOnRoatp = onRoatpRegisterTrue
                        ? RouteAndOnRoatpTags.EmployerOnRoatp
                        : RouteAndOnRoatpTags.EmployerNotOnRoatp;
                break;

            case ApplicationRoute.SupportingProviderApplicationRoute:
                routeAndOnRoatp = onRoatpRegisterTrue
                        ? RouteAndOnRoatpTags.SupportingOnRoatp
                        : RouteAndOnRoatpTags.SupportingNotOnRoatp;
                break;
            }

            if (preambleAnswers != null)
            {
                foreach (var answer in preambleAnswers.Where(ans => ans.QuestionId == RoatpPreambleQuestionIdConstants.RouteAndOnRoatp))
                {
                    answer.Value = routeAndOnRoatp;
                }

                await _qnaApiClient.UpdatePageAnswers(model.ApplicationId, RoatpWorkflowSequenceIds.Preamble,
                                                      RoatpWorkflowSectionIds.Preamble, RoatpWorkflowPageIds.Preamble, preambleAnswers);
            }
        }
Exemplo n.º 11
0
        public async Task <IActionResult> SubmitLevyStatus(EmployerLevyStatusViewModel model)
        {
            if (!ModelState.IsValid)
            {
                model.ErrorMessages = new List <ValidationErrorDetail>();
                var modelErrors = ModelState.Values.SelectMany(v => v.Errors);
                foreach (var modelError in modelErrors)
                {
                    model.ErrorMessages.Add(new ValidationErrorDetail
                    {
                        Field        = "LevyPayingEmployer",
                        ErrorMessage = modelError.ErrorMessage
                    });
                }
                return(View("~/Views/Roatp/ConfirmLevyStatus.cshtml", model));
            }

            if (model.ApplicationId == Guid.Empty)
            {
                var applicationDetails = _sessionService.Get <ApplicationDetails>(ApplicationDetailsKey);
                applicationDetails.LevyPayingEmployer = model.LevyPayingEmployer;
                _sessionService.Set(ApplicationDetailsKey, applicationDetails);
            }

            if (model.LevyPayingEmployer == "Y")
            {
                var selectApplicationRouteModel = new SelectApplicationRouteViewModel
                {
                    ApplicationRouteId = model.ApplicationRouteId,
                    ApplicationId      = model.ApplicationId,
                    LevyPayingEmployer = model.LevyPayingEmployer
                };

                if (selectApplicationRouteModel.ApplicationId == Guid.Empty)
                {
                    return(RedirectToAction("ConditionsOfAcceptance", model));
                }
                else
                {
                    return(await UpdateProviderRoute(selectApplicationRouteModel));
                }
            }

            return(RedirectToAction("IneligibleNonLevy", new { applicationId = model.ApplicationId }));
        }
Exemplo n.º 12
0
        public async Task <IActionResult> SelectApplicationRoute()
        {
            var model = new SelectApplicationRouteViewModel();

            var applicationRoutes = await GetApplicationRoutes();

            model.ApplicationRoutes = applicationRoutes;
            var applicationDetails = _sessionService.Get <ApplicationDetails>(ApplicationDetailsKey);

            if (applicationDetails?.ApplicationRoute != null)
            {
                model.ApplicationRouteId = applicationDetails.ApplicationRoute.Id;
            }

            PopulateGetHelpWithQuestion(model);

            return(View("~/Views/Roatp/SelectApplicationRoute.cshtml", model));
        }
Exemplo n.º 13
0
        public async Task <IActionResult> UpdateApplicationProviderRoute(SelectApplicationRouteViewModel model)
        {
            if (model.ApplicationRouteId == ApplicationRoute.EmployerProviderApplicationRoute && model.LevyPayingEmployer != "Y")
            {
                var ukprnAnswer = await _qnaApiClient.GetAnswerByTag(model.ApplicationId, RoatpWorkflowQuestionTags.UKPRN);

                return(RedirectToAction("ConfirmLevyStatus", new
                {
                    applicationId = model.ApplicationId,
                    ukprn = ukprnAnswer.Value,
                    applicationRouteId = model.ApplicationRouteId
                }));
            }

            var providerRouteAnswer = new List <Answer>
            {
                new Answer
                {
                    QuestionId = RoatpPreambleQuestionIdConstants.ApplyProviderRoute,
                    Value      = model.ApplicationRouteId.ToString()
                }
            };

            var result = await _qnaApiClient.UpdatePageAnswers(model.ApplicationId, RoatpWorkflowSequenceIds.Preamble, RoatpWorkflowSectionIds.Preamble, RoatpWorkflowPageIds.ProviderRoute, providerRouteAnswer);

            var providerRoutes = await _roatpApiClient.GetApplicationRoutes();

            var selectedProviderRoute = providerRoutes.FirstOrDefault(x => x.Id == model.ApplicationRouteId);

            if (result.ValidationPassed)
            {
                await _applicationApiClient.ChangeProviderRoute(new ChangeProviderRouteRequest
                {
                    ApplicationId     = model.ApplicationId,
                    ProviderRoute     = model.ApplicationRouteId,
                    ProviderRouteName = selectedProviderRoute?.RouteName
                });

                await _resetRouteQuestionsService.ResetRouteQuestions(model.ApplicationId, model.ApplicationRouteId);
            }
            return(RedirectToAction("ConditionsOfAcceptance", new { applicationId = model.ApplicationId, applicationRouteId = model.ApplicationRouteId }));
        }
Exemplo n.º 14
0
 public async Task <IActionResult> UpdateApplicationProviderRoute(SelectApplicationRouteViewModel model)
 {
     return(await UpdateProviderRoute(model));
 }