public void AccountsLinkWithNullAccountId_ReturnRouteLink()
        {
            var options = Substitute.For <IOptionsMonitor <MaPageConfiguration> >();

            var config = new MaPageConfiguration {
                Routes = new MaRoutes {
                    Accounts = new System.Collections.Generic.Dictionary <string, string> {
                        { "Routename", "ProperLink/{0}" }
                    }
                }
            };

            options.CurrentValue.Returns(config);

            var linkGenerator = Substitute.For <ILinkGenerator>();

            linkGenerator.AccountsLink(Arg.Any <string>()).Returns("ProperLink");
            linkGenerator.AccountsLink("").Returns("RouteLink");

            var urlBuilder = new UrlBuilder(Substitute.For <ILogger <UrlBuilder> >(),
                                            options, linkGenerator);

            Assert.Equal("RouteLink", urlBuilder.AccountsLink());
            //Assert.Equal("RouteLink", urlBuilder.AccountsLink("Routename", ""));
            //Assert.Equal("RouteLink", urlBuilder.AccountsLink("Routename"));
            //Assert.Equal("RouteLink", urlBuilder.AccountsLink("Routename", null));

            Assert.Equal("ProperLink", urlBuilder.AccountsLink("Routename", "ABC123"));
        }
        public async Task <IActionResult> Index(GetProvidersForFeedbackRequest request, int pageIndex = PagingState.DefaultPageIndex)
        {
            var idClaim     = HttpContext.User.FindFirst(System.Security.Claims.ClaimTypes.NameIdentifier);
            var pagingState = await _sessionService.Get <PagingState>($"{idClaim.Value}_PagingState");

            if (null == pagingState)
            {
                pagingState = new PagingState();
            }
            pagingState.PageIndex = pageIndex;
            await _sessionService.Set($"{idClaim.Value}_PagingState", pagingState);

            var model = await _trainingProviderService.GetTrainingProviderSearchViewModel(
                request.EncodedAccountId,
                pagingState.SelectedProviderName,
                pagingState.SelectedFeedbackStatus,
                pagingState.PageSize,
                pagingState.PageIndex,
                pagingState.SortColumn,
                pagingState.SortDirection);

            model.ChangePageAction = nameof(Index);

            ViewBag.EmployerAccountsHomeUrl = _urlBuilder.AccountsLink("AccountsHome", request.EncodedAccountId);

            await _sessionService.Set($"{idClaim.Value}_ProviderCount", model.TrainingProviders.TotalRecordCount);

            return(View(model));
        }
        public async Task <IActionResult> Index(string encodedAccountId)
        {
            var idClaim     = HttpContext.User.FindFirst(System.Security.Claims.ClaimTypes.NameIdentifier);
            var surveyModel = await _sessionService.Get <SurveyModel>(idClaim.Value);

            var providerCount = await _sessionService.Get <int>($"{idClaim.Value}_ProviderCount");

            await _sessionService.Remove($"{idClaim.Value}_PagingState");  // remove paging state incase we loop round for another provider

            var hasMultipleProviders = providerCount > 0;


            var confirmationVm = new ConfirmationViewModel
            {
                ProviderName               = surveyModel.ProviderName,
                FeedbackRating             = surveyModel.Rating.Value,
                FatUrl                     = _config.ExternalLinks.FindApprenticeshipTrainingSiteUrl,
                ComplaintSiteUrl           = _config.ExternalLinks.ComplaintSiteUrl,
                ComplaintToProviderSiteUrl = _config.ExternalLinks.ComplaintToProviderSiteUrl,
                HasMultipleProviders       = hasMultipleProviders,
                EncodedAccountId           = encodedAccountId,
                EmployerAccountsHomeUrl    = _urlBuilder.AccountsLink("AccountsHome", encodedAccountId)
            };

            return(View(confirmationVm));
        }
 public IActionResult Index(string encodedAccountId)
 {
     ViewBag.EmployerAccountsHomeUrl = _urlBuilder.AccountsLink("AccountsHome", encodedAccountId);
     return(View());
 }