private async Task <SelectApprenticeshipsViewModel> GetSelectViewModel(string accountId, string accountLegalEntityId)
        {
            var apprenticeshipIncentives = await _apprenticeshipIncentiveService.GetList(accountId, accountLegalEntityId);

            var legalEntity = await _legalEntitiesService.Get(accountId, accountLegalEntityId);

            var model = new SelectApprenticeshipsViewModel
            {
                AccountId                = accountId,
                AccountLegalEntityId     = accountLegalEntityId,
                ApprenticeshipIncentives = apprenticeshipIncentives
                                           .OrderBy(a => a.FirstName)
                                           .ThenBy(a => a.LastName)
                                           .ThenBy(a => a.Uln),
                OrganisationName = legalEntity?.Name ?? string.Empty
            };

            if (TempData["selected"] is string[] selected)
            {
                foreach (var incentive in model.ApprenticeshipIncentives)
                {
                    if (selected.Contains(incentive.Id))
                    {
                        incentive.Selected = true;
                    }
                }
                TempData.Clear();
            }

            return(model);
        }
Exemple #2
0
        public async Task <IActionResult> Start(string accountId, string accountLegalEntityId)
        {
            var legalEntities = await _legalEntitiesService.Get(accountId);

            var legalEntity = legalEntities.FirstOrDefault(x => x.AccountLegalEntityId == accountLegalEntityId);

            return(View("Home", new HomeViewModel(accountId, accountLegalEntityId, legalEntity?.Name, legalEntity == null || !legalEntity.IsAgreementSigned, _configuration.ManageApprenticeshipSiteUrl, legalEntity == null || legalEntity.BankDetailsRequired)));
        }
Exemple #3
0
        public async Task <IActionResult> ListPayments(string accountId, string sortOrder, string sortField)
        {
            var legalEntities = await _legalEntitiesService.Get(accountId);

            if (legalEntities.Count() > 1)
            {
                return(RedirectToAction("ChooseOrganisation", new { accountId }));
            }

            return(RedirectToAction("ListPaymentsForLegalEntity", new { accountId, legalEntities.First().AccountLegalEntityId, sortOrder, sortField }));
        }
        public async Task <IActionResult> Index(string accountId, string accountLegalEntityId)
        {
            var legalEntities = await _legalEntitiesService.Get(accountId);

            var selectedLegalEntity = legalEntities.FirstOrDefault(x => x.AccountLegalEntityId == accountLegalEntityId);

            var applicationsResponse = await _applicationService.GetList(accountId, accountLegalEntityId);

            var model = new HubPageViewModel(_externalLinksConfiguration.ManageApprenticeshipSiteUrl, accountId)
            {
                AccountLegalEntityId     = accountLegalEntityId,
                OrganisationName         = selectedLegalEntity?.Name,
                HasMultipleLegalEntities = legalEntities.Count() > 1
            };

            if (applicationsResponse.ApprenticeApplications.Any())
            {
                model.ShowBankDetailsRequired        = BankDetailsRequired(applicationsResponse);
                model.ShowAmendBankDetails           = CanAmendBankDetails(applicationsResponse);
                model.BankDetailsApplicationId       = applicationsResponse.FirstSubmittedApplicationId.Value;
                model.ShowAcceptNewEmployerAgreement = applicationsResponse.ApprenticeApplications.Any(a => (a.FirstPaymentStatus != null && a.FirstPaymentStatus.RequiresNewEmployerAgreement) || (a.SecondPaymentStatus != null && a.SecondPaymentStatus.RequiresNewEmployerAgreement));
            }

            return(View(model));
        }
        public async Task <IActionResult> GetChooseOrganisation(ChooseOrganisationViewModel viewModel)
        {
            var legalEntities = await _legalEntitiesService.Get(viewModel.AccountId);

            if (legalEntities.Count() == 1)
            {
                return(RedirectToAction("Index", "Hub", new { viewModel.AccountId, accountLegalEntityId = legalEntities.First().AccountLegalEntityId }));
            }
            if (legalEntities.Count() > 1)
            {
                viewModel.AddOrganisations(legalEntities);
                viewModel.SetManageAccountsUrl(_configuration.ManageApprenticeshipSiteUrl);
                return(View("ChooseOrganisation", viewModel));
            }

            return(RedirectToAction("Forbidden", "Apply", new { viewModel.AccountId }));
        }
        public async Task <IActionResult> Start(string accountId, string accountLegalEntityId)
        {
            var legalEntities = await _legalEntitiesService.Get(accountId);

            var hasMultipleLegalEntities = legalEntities.Count() > 1;
            var legalEntity          = legalEntities.FirstOrDefault(x => x.AccountLegalEntityId == accountLegalEntityId);
            var newAgreementRequired = (legalEntity != null && legalEntity.SignedAgreementVersion.HasValue && legalEntity.SignedAgreementVersion != NewAgreementVersion);

            return(View("Home", new HomeViewModel(accountId, accountLegalEntityId, legalEntity?.Name, hasMultipleLegalEntities, newAgreementRequired, _configuration.ManageApprenticeshipSiteUrl)));
        }
Exemple #7
0
        public async Task <IActionResult> AmendBankDetails(string accountId, Guid applicationId)
        {
            var application = await _applicationService.Get(accountId, applicationId, false, includeSubmitted : true);

            var legalEntity = await _legalEntitiesService.Get(accountId, application.AccountLegalEntityId);

            var model = new AmendBankDetailsViewModel(accountId, application.AccountLegalEntityId, applicationId, legalEntity.Name);

            return(View(model));
        }
Exemple #8
0
        public async Task <string> BuildAchieveServiceUrl(string hashedAccountId, string hashedAccountLegalEntityId, Guid applicationId, string returnUrl, bool amendBankDetails = false)
        {
            var accountId = _hashingService.DecodeValue(hashedAccountId);

            var bankingDetails = await _bankingDetailsService.GetBankingDetails(accountId, applicationId, hashedAccountId);

            if (bankingDetails == null)
            {
                throw new ArgumentException("Requested banking details records cannot be found");
            }
            if (bankingDetails.SignedAgreements == null || !bankingDetails.SignedAgreements.Any())
            {
                throw new ArgumentException("Requested application records are invalid");
            }

            var legalEntity = await _legalEntitiesService.Get(hashedAccountId, hashedAccountLegalEntityId);

            var data = new ApplicationInformationForExternalVerificationModel
            {
                ApplicationId           = applicationId,
                LegalEntityName         = legalEntity.Name,
                IsNew                   = !amendBankDetails,
                HashedAccountId         = hashedAccountId,
                HashedLegalEntityId     = legalEntity.HashedLegalEntityId,
                IncentiveAmount         = bankingDetails.ApplicationValue,
                VendorId                = bankingDetails.VendorCode,
                SubmittedByFullName     = bankingDetails.SubmittedByName,
                SubmittedByEmailAddress = bankingDetails.SubmittedByEmail,
                NumberOfApprenticeships = bankingDetails.NumberOfApprenticeships,
                SignedAgreements        = bankingDetails.SignedAgreements?.Select(x => new SignedAgreementModel
                {
                    SignedByEmail = x.SignedByEmail,
                    SignedByName  = x.SignedByName,
                    SignedDate    = x.SignedDate
                })
            };

            if (amendBankDetails)
            {
                data.VendorId        = legalEntity.VrfVendorId;
                data.LegalEntityName = legalEntity.Name;
            }

            var encryptedData = _dataEncryptionService.Encrypt(data.ToPsvString()).ToUrlString();

            var journeyType = "new";

            if (amendBankDetails)
            {
                journeyType = "amend";
            }

            return($"{_configuration.AchieveServiceBaseUrl}?journey={journeyType}&return={returnUrl.ToUrlString()}&data={encryptedData}");
        }
Exemple #9
0
        public async Task <IActionResult> Confirmation(string accountId, Guid applicationId)
        {
            var application = await _applicationService.Get(accountId, applicationId, includeApprenticeships : false);

            var legalEntity = await _legalEntitiesService.Get(accountId, application.AccountLegalEntityId);

            if (String.IsNullOrWhiteSpace(legalEntity.VrfCaseStatus))
            {
                legalEntity.VrfCaseStatus = VrfStatusRequested;
                await _legalEntitiesService.UpdateVrfCaseStatus(legalEntity);
            }
            var showBankDetailsInReview = (!String.IsNullOrWhiteSpace(legalEntity.VrfCaseStatus) && legalEntity.VrfCaseStatus != VrfStatusCompleted);
            var model = new ConfirmationViewModel(accountId, application.AccountLegalEntityId, legalEntity.Name, showBankDetailsInReview);

            return(View(model));
        }
Exemple #10
0
        protected async Task <string> GetLegalEntityName(string accountId, string accountLegalEntityId)
        {
            var legalEntity = await _legalEntitiesService.Get(accountId, accountLegalEntityId);

            return(legalEntity != null ? legalEntity.Name : string.Empty);
        }