public ClientContextViewModel Build()
 {
     AntiForgery.GetTokens(null, out string cookieToken, out string formToken);
     return(new ClientContextViewModel()
     {
         SiteSetting = _siteSettingViewModelBuilder.Build(),
         Cart = _cartViewModelBuilder.Build(Cart),
         Navigation = _navigationViewModelBuilder.Build(),
         Countries = _requestModelAccessor.RequestModel.ChannelModel.Channel.CountryLinks
                     .Select(link => link.CountrySystemId.MapTo <Country>())
                     .Select(country => new ListItem(new RegionInfo(country.Id).DisplayName, country.Id))
                     .OrderBy(country => country.Text)
                     .ToList(),
         RequestVerificationToken = cookieToken + ":" + formToken,
         QuickSearchUrl = _requestModelAccessor.RequestModel.WebsiteModel.Fields.GetValue <PointerPageItem>(AcceleratorWebsiteFieldNameConstants.SearchResultPage)?.MapTo <LinkModel>()?.Href ?? "",
         Texts = GetClientTexts()
     });
 }
        public async Task <ClientContextViewModel> BuildAsync()
        {
            var tokens = _antiforgery.GetAndStoreTokens(_httpContextAccessor.HttpContext);
            var requestVerification = tokens.RequestToken;
            var cartContext         = _cartContextAccessor.CartContext;

            return(new ClientContextViewModel()
            {
                SiteSetting = _siteSettingViewModelBuilder.Build(),
                Cart = _cartViewModelBuilder.Build(cartContext),
                Navigation = await _navigationViewModelBuilder.BuildAsync(),
                Countries = _requestModelAccessor.RequestModel.ChannelModel.Channel.CountryLinks
                            .Select(link => link.CountrySystemId.MapTo <Country>())
                            .Select(country => new ListItem(new RegionInfo(country.Id).DisplayName, country.Id))
                            .OrderBy(country => country.Text)
                            .ToList(),
                RequestVerificationToken = requestVerification,
                QuickSearchUrl = _requestModelAccessor.RequestModel.WebsiteModel.GetValue <PointerPageItem>(AcceleratorWebsiteFieldNameConstants.SearchResultPage)?.MapTo <LinkModel>()?.Href ?? "",
                Texts = GetClientTexts()
            });
        }