Ejemplo n.º 1
0
        public async Task <IActionResult> PostSignIn()
        {
            var signInId = User.GetSignInId();
            var user     = await _usersApiClient.GetUserBySignInId(signInId);

            if (user is null)
            {
                return(RedirectToAction("NotSetUp"));
            }
            else if (user.ApplyOrganisationId is null)
            {
                return(RedirectToAction("EnterApplicationUkprn", "RoatpApplicationPreamble"));
            }

            var reapplicationAllowed =
                await _reapplicationCheckService.ReapplicationAllowed(signInId, user.ApplyOrganisationId);

            if (reapplicationAllowed)
            {
                var ukprn = await _reapplicationCheckService.ReapplicationUkprnForUser(User.GetSignInId());

                if (string.IsNullOrEmpty(ukprn))
                {
                    return(RedirectToAction("EnterApplicationUkprn", "RoatpApplicationPreamble"));
                }
            }

            var reapplicationRequestedAndPending =
                await _reapplicationCheckService.ReapplicationRequestedAndPending(signInId, user.ApplyOrganisationId);

            if (reapplicationRequestedAndPending)
            {
                var applicationId = await _reapplicationCheckService.ReapplicationApplicationIdForUser(signInId);

                if (applicationId != null && applicationId != Guid.Empty)
                {
                    return(RedirectToAction("RequestNewInvitationRefresh", "RoatpAppeals", new { applicationId }));
                }
            }

            return(RedirectToAction("Applications", "RoatpApplication", new { applicationType = ApplicationTypes.RegisterTrainingProviders }));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> SearchByUkprn(SearchByUkprnViewModel model)
        {
            int    ukprn             = 0;
            string validationMessage = string.Empty;

            if (string.IsNullOrWhiteSpace(model.UKPRN))
            {
                validationMessage = UkprnValidationMessages.MissingUkprn;
            }
            else
            {
                bool isValidUkprn = UkprnValidator.IsValidUkprn(model.UKPRN, out ukprn);
                if (!isValidUkprn)
                {
                    validationMessage = UkprnValidationMessages.InvalidUkprn;
                }
                else if (!await _allowedUkprnValidator.CanUkprnStartApplication(ukprn))
                {
                    validationMessage = UkprnValidationMessages.NotWhitelistedUkprn;
                }
            }

            if (!string.IsNullOrEmpty(validationMessage))
            {
                model.ErrorMessages = new List <ValidationErrorDetail>
                {
                    new ValidationErrorDetail {
                        Field = "UKPRN", ErrorMessage = validationMessage
                    }
                };

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

            var ukprnInReapplication = await _reapplicationCheckService.ReapplicationUkprnForUser(User.GetSignInId());

            if (ukprnInReapplication != null && ukprnInReapplication != ukprn.ToString())
            {
                return(RedirectToAction("ReapplicationDifferentUkprn", "RoatpShutterPages"));
            }

            var isApplicationInFlightWithDifferentUser = await _reapplicationCheckService.ApplicationInFlightWithDifferentUser(User.GetSignInId(),
                                                                                                                               model.UKPRN);


            if (isApplicationInFlightWithDifferentUser)
            {
                return(RedirectToAction("ApplicationInProgress", new { UKPRN = model.UKPRN }));
            }

            var ukrlpLookupResults = await _ukrlpApiClient.GetTrainingProviderByUkprn(ukprn);

            if (ukrlpLookupResults?.Results is null || !ukrlpLookupResults.Success)
            {
                return(RedirectToAction("UkrlpNotAvailable", "RoatpShutterPages"));
            }

            if (ukrlpLookupResults.Results.Any())
            {
                var applicationDetails = new ApplicationDetails
                {
                    UKPRN = ukprn,
                    UkrlpLookupDetails = ukrlpLookupResults.Results.FirstOrDefault()
                };

                _sessionService.Set(ApplicationDetailsKey, applicationDetails);

                return(RedirectToAction("ConfirmOrganisation"));
            }
            else
            {
                var applicationDetails = new ApplicationDetails
                {
                    UKPRN = ukprn
                };

                _sessionService.Set(ApplicationDetailsKey, applicationDetails);
                return(RedirectToAction("UkprnNotFound", "RoatpShutterPages"));
            }
        }