public static LineItem ToShopifyModel(this StorefrontModel.Order.LineItem lineItem, IStorefrontUrlBuilder urlBuilder)
        {
            var result = new LineItem
            {
                Fulfillment = null,
                Grams = lineItem.Weight ?? 0m,
                Id = lineItem.Id,
                Quantity = lineItem.Quantity ?? 0,
                Price = lineItem.Price.Amount * 100,
                ProductId = lineItem.ProductId,
                Sku = lineItem.Name,
                Title = lineItem.Name,
                Url = urlBuilder.ToAppAbsolute("/product/" + lineItem.ProductId),
            };

            result.LinePrice = result.Price * result.Quantity;

            result.Product = new Product
            {
                Id = result.ProductId,
                Url = result.Url
            };

            //result.Image = lineItem.Product.PrimaryImage != null ? lineItem.Product.PrimaryImage.ToShopifyModel() : null;
            //result.RequiresShipping = lineItem.RequiredShipping;
            //result.Taxable = lineItem.TaxIncluded;

            return result;
        }
        public static Link ToShopfiyModel(this StorefrontModel.MenuLink storefrontModel, Storefront.Model.WorkContext workContext, IStorefrontUrlBuilder urlBuilder)
        {
            var shopifyModel = new Link();

            shopifyModel.Active = storefrontModel.IsActive;
            shopifyModel.Object = "";
            shopifyModel.Title = storefrontModel.Title;
            shopifyModel.Type = "";
            shopifyModel.Url = urlBuilder.ToAppAbsolute(storefrontModel.Url);

            var productLink = storefrontModel as StorefrontModel.ProductMenuLink;
            var categoryLink = storefrontModel as StorefrontModel.CategoryMenuLink;
            if (productLink != null)
            {
                shopifyModel.Type = "product";
                if (productLink.Product != null)
                {
                    shopifyModel.Object = productLink.Product.ToShopifyModel();
                }
            }
            if (categoryLink != null)
            {
                shopifyModel.Type = "collection";
                if (categoryLink.Category != null)
                {
                    shopifyModel.Object = categoryLink.Category.ToShopifyModel(workContext);
                }
            }
            return shopifyModel;
        }
 public ShopifyCompatibilityController(WorkContext workContext, IStorefrontUrlBuilder urlBuilder, ICartBuilder cartBuilder, ICatalogSearchService catalogService)
     : base(workContext, urlBuilder)
 {
     _workContext = workContext;
     _urlBuilder = urlBuilder;
     _cartBuilder = cartBuilder;
     _catalogService = catalogService;
 }
 public ApiCommonController(WorkContext workContext, IStorefrontUrlBuilder urlBuilder, IStoreModuleApi storeModuleApi)
     : base(workContext, urlBuilder)
 {
     _storeModuleApi = storeModuleApi;
     _countriesWithoutRegions = workContext.AllCountries
      .Select(c => new Country { Name = c.Name, Code2 = c.Code2, Code3 = c.Code3, RegionType = c.RegionType })
      .ToArray();
 }
 public MarketingController(WorkContext workContext, IStorefrontUrlBuilder urlBuilder, IMarketingService marketingService,
     IPromotionEvaluator promotionEvaluator, IPricingModuleApi pricingApi)
     : base(workContext, urlBuilder)
 {
     _marketingService = marketingService;
     _pricingApi = pricingApi;
     _promotionEvaluator = promotionEvaluator;
 }
 public ApiQuoteRequestController(WorkContext workContext, IStorefrontUrlBuilder urlBuilder, ICartBuilder cartBuilder,
     IQuoteModuleApi quoteApi, IQuoteRequestBuilder quoteRequestBuilder, ICatalogSearchService catalogSearchService)
     : base(workContext, urlBuilder)
 {
     _quoteApi = quoteApi;
     _quoteRequestBuilder = quoteRequestBuilder;
     _cartBuilder = cartBuilder;
     _catalogSearchService = catalogSearchService;
 }
 public ApiCartController(WorkContext workContext, ICatalogSearchService catalogSearchService, ICartBuilder cartBuilder,
                          IOrderModuleApi orderApi, ICartValidator cartValidator, IStorefrontUrlBuilder urlBuilder,
                          IEventPublisher<OrderPlacedEvent> orderPlacedEventPublisher)
     : base(workContext, urlBuilder)
 {
     _cartBuilder = cartBuilder;
     _orderApi = orderApi;
     _cartValidator = cartValidator;
     _catalogSearchService = catalogSearchService;
     _orderPlacedEventPublisher = orderPlacedEventPublisher;
 }
        public static Linklist ToShopifyModel(this StorefrontModel.MenuLinkList storefrontModel, Storefront.Model.WorkContext workContext,  IStorefrontUrlBuilder urlBuilder)
        {
            var shopifyModel = new Linklist();

            shopifyModel.Handle = storefrontModel.Name;
            shopifyModel.Id = storefrontModel.Id;
            shopifyModel.Links = storefrontModel.MenuLinks.Select(ml => ml.ToShopfiyModel(workContext, urlBuilder)).ToList();
            shopifyModel.Title = storefrontModel.Name;

            return shopifyModel;
        }
Exemple #9
0
        public CommonController(WorkContext workContext, IStorefrontUrlBuilder urlBuilder, IStoreModuleApiClient storeModuleApi,
                               IPlatformModuleApiClient platformApi, ILocalCacheManager cacheManager)
            : base(workContext, urlBuilder)
        {
            _cacheManager = cacheManager;
            _storeModuleApi = storeModuleApi;
            _platformApi = platformApi;
            _countriesWithoutRegions = workContext.AllCountries
                .Select(c => new Country { Name = c.Name, Code2 = c.Code2, Code3 = c.Code3, RegionType = c.RegionType })
                .ToArray();

        }
 public AccountController(WorkContext workContext, IStorefrontUrlBuilder urlBuilder, ICoreModuleApiClient commerceCoreApi,
                          IAuthenticationManager authenticationManager, IPlatformModuleApiClient platformApi,
                          ICustomerService customerService, IOrdersModuleApiClient orderApi, IEventPublisher <UserLoginEvent> userLoginEventPublisher)
     : base(workContext, urlBuilder)
 {
     _commerceCoreApi       = commerceCoreApi;
     _customerService       = customerService;
     _authenticationManager = authenticationManager;
     _platformApi           = platformApi;
     _orderApi = orderApi;
     _userLoginEventPublisher = userLoginEventPublisher;
 }
 public AccountController(WorkContext workContext, IStorefrontUrlBuilder urlBuilder, ICommerceCoreModuleApi commerceCoreApi,
     ICustomerManagementModuleApi customerApi, IAuthenticationManager authenticationManager, IVirtoCommercePlatformApi platformApi,
     IOrderModuleApi orderApi, ICartBuilder cartBuilder)
     : base(workContext, urlBuilder)
 {
     _commerceCoreApi = commerceCoreApi;
     _customerApi = customerApi;
     _authenticationManager = authenticationManager;
     _platformApi = platformApi;
     _orderApi = orderApi;
     _cartBuilder = cartBuilder;
 }
Exemple #12
0
 public ShopifyLiquidThemeEngine(IStorefrontMemoryCache memoryCache, IWorkContextAccessor workContextAccessor, IHttpContextAccessor httpContextAccessor,
                                 IStorefrontUrlBuilder storeFrontUrlBuilder, IContentBlobProvider contentBlobProvider, ISassFileManager sassFileManager, IOptions <LiquidThemeEngineOptions> options)
 {
     _workContextAccessor     = workContextAccessor;
     _httpContextAccessor     = httpContextAccessor;
     UrlBuilder               = storeFrontUrlBuilder;
     _options                 = options.Value;
     _memoryCache             = memoryCache;
     _themeBlobProvider       = contentBlobProvider;
     _sassFileManager         = sassFileManager;
     SassCompiler.FileManager = sassFileManager;
 }
 public AccountController(WorkContext workContext, IStorefrontUrlBuilder urlBuilder, ICommerceCoreModuleApi commerceCoreApi,
     IAuthenticationManager authenticationManager, IVirtoCommercePlatformApi platformApi,
     ICustomerService customerService, IOrderModuleApi orderApi, IEventPublisher<UserLoginEvent> userLoginEventPublisher)
     : base(workContext, urlBuilder)
 {
     _commerceCoreApi = commerceCoreApi;
     _customerService = customerService;
     _authenticationManager = authenticationManager;
     _platformApi = platformApi;
     _orderApi = orderApi;
     _userLoginEventPublisher = userLoginEventPublisher;
 }
Exemple #14
0
 public ApiAccountController(IWorkContextAccessor workContextAccessor, IStorefrontUrlBuilder urlBuilder, UserManager <User> userManager, SignInManager <User> signInManager, IAuthorizationService authorizationService,
                             IMemberService memberService, IEventPublisher publisher, IStorefrontSecurity commerceCoreApi,
                             INotifications platformNotificationApi)
     : base(workContextAccessor, urlBuilder)
 {
     _userManager             = userManager;
     _memberService           = memberService;
     _publisher               = publisher;
     _commerceCoreApi         = commerceCoreApi;
     _platformNotificationApi = platformNotificationApi;
     _authorizationService    = authorizationService;
     _signInManager           = signInManager;
 }
Exemple #15
0
 public LiquidThemedView(IWorkContextAccessor workContextAccessor, IStorefrontUrlBuilder urlBuilder, ILiquidThemeEngine themeEngine, string viewName, string path, bool isMainPage)
 {
     if (string.IsNullOrEmpty(viewName))
     {
         throw new ArgumentNullException(nameof(viewName));
     }
     _workContextAccessor = workContextAccessor;
     _urlBuilder          = urlBuilder;
     _liquidThemeEngine   = themeEngine ?? throw new ArgumentNullException(nameof(themeEngine));
     _viewName            = viewName;
     _isMainPage          = isMainPage;
     Path = path;
 }
 public CartController(WorkContext workContext, IShoppingCartModuleApi cartApi, IOrderModuleApi orderApi, IStorefrontUrlBuilder urlBuilder,
                       ICartBuilder cartBuilder, ICatalogSearchService catalogService, IMarketingModuleApi marketingApi, ICommerceCoreModuleApi commerceApi,
                       ICustomerManagementModuleApi customerApi)
     : base(workContext, urlBuilder)
 {
     _cartBuilder = cartBuilder;
     _catalogService = catalogService;
     _cartApi = cartApi;
     _orderApi = orderApi;
     _marketingApi = marketingApi;
     _commerceApi = commerceApi;
     _customerApi = customerApi;
 }
 public DemoCatalogService(IWorkContextAccessor workContextAccessor,
                           ICatalogModuleCategories categoriesApi, ICatalogModuleProducts productsApi,
                           ICatalogModuleAssociations associationsApi, ICatalogModuleIndexedSearch searchApi,
                           IPricingService pricingService, IMemberService customerService,
                           ISubscriptionService subscriptionService, IInventoryService inventoryService,
                           IStorefrontMemoryCache memoryCache, IApiChangesWatcher changesWatcher,
                           IStorefrontUrlBuilder storefrontUrlBuilder) :
     base(workContextAccessor,
          categoriesApi, productsApi, associationsApi, searchApi,
          pricingService, customerService, subscriptionService, inventoryService,
          memoryCache, changesWatcher,
          storefrontUrlBuilder)
 {
 }
 public CartController(WorkContext workContext, IOrderModuleApi orderApi, IStorefrontUrlBuilder urlBuilder,
                       ICartBuilder cartBuilder, ICatalogSearchService catalogService, IMarketingModuleApi marketingApi, ICommerceCoreModuleApi commerceApi,
                       ICustomerManagementModuleApi customerApi, ICartValidator cartValidator, IEventPublisher<OrderPlacedEvent> orderPlacedEventPublisher)
     : base(workContext, urlBuilder)
 {
     _cartBuilder = cartBuilder;
     _catalogService = catalogService;
     _orderApi = orderApi;
     _marketingApi = marketingApi;
     _commerceApi = commerceApi;
     _customerApi = customerApi;
     _cartValidator = cartValidator;
     _orderPlacedEventPublisher = orderPlacedEventPublisher;
 }
Exemple #19
0
 public CartController(WorkContext workContext, IOrderModuleApi orderApi, IStorefrontUrlBuilder urlBuilder,
                       ICartBuilder cartBuilder, ICatalogSearchService catalogService, IMarketingModuleApi marketingApi, ICommerceCoreModuleApi commerceApi,
                       ICustomerManagementModuleApi customerApi, ICartValidator cartValidator, IEventPublisher <OrderPlacedEvent> orderPlacedEventPublisher)
     : base(workContext, urlBuilder)
 {
     _cartBuilder               = cartBuilder;
     _catalogService            = catalogService;
     _orderApi                  = orderApi;
     _marketingApi              = marketingApi;
     _commerceApi               = commerceApi;
     _customerApi               = customerApi;
     _cartValidator             = cartValidator;
     _orderPlacedEventPublisher = orderPlacedEventPublisher;
 }
 public ShopifyLiquidThemeEngine(IStorefrontMemoryCache memoryCache, IWorkContextAccessor workContextAccessor, IHttpContextAccessor httpContextAccessor,
                                 IStorefrontUrlBuilder storeFrontUrlBuilder, IContentBlobProvider contentBlobProvider, ISassFileManager sassFileManager, IOptions <LiquidThemeEngineOptions> options, IFeaturesAgent featuresAgent, IPostRenderTemplateChange postRenderTemplateChange)
 {
     _workContextAccessor      = workContextAccessor;
     _httpContextAccessor      = httpContextAccessor;
     UrlBuilder                = storeFrontUrlBuilder;
     _options                  = options.Value;
     _memoryCache              = memoryCache;
     _themeBlobProvider        = contentBlobProvider;
     _sassFileManager          = sassFileManager;
     _featuresAgent            = featuresAgent;
     _postRenderTemplateChange = postRenderTemplateChange;
     SassCompiler.FileManager  = sassFileManager;
 }
        public static MenuLink ToWebModel(this VirtoCommerceContentWebModelsMenuLink serviceModel, IStorefrontUrlBuilder urlBuilder)
        {
            var webModel = new MenuLink();

            webModel.InjectFrom(serviceModel);

            if (serviceModel.SecurityScopes != null)
            {
                webModel.SecurityScopes = serviceModel.SecurityScopes.Select(ss => ss).ToList();
            }

            webModel.Url = urlBuilder.ToAppAbsolute("/" + serviceModel.Url);

            return webModel;
        }
 public AccountController(WorkContext workContext, IStorefrontUrlBuilder urlBuilder, ICommerceCoreModuleApi commerceCoreApi,
                          IAuthenticationManager authenticationManager, IVirtoCommercePlatformApi platformApi,
                          ICartBuilder cartBuilder, ICustomerService customerService, IOrderModuleApi orderApi, IEventPublisher <UserLoginEvent> userLoginEventPublisher,
                          ICacheManager <object> cacheManager)
     : base(workContext, urlBuilder)
 {
     _commerceCoreApi       = commerceCoreApi;
     _customerService       = customerService;
     _authenticationManager = authenticationManager;
     _platformApi           = platformApi;
     _cartBuilder           = cartBuilder;
     _cacheManager          = cacheManager;
     _orderApi = orderApi;
     _userLoginEventPublisher = userLoginEventPublisher;
 }
Exemple #23
0
 public AccountController(
     IWorkContextAccessor workContextAccessor,
     IStorefrontUrlBuilder urlBuilder,
     SignInManager <User> signInManager,
     IEventPublisher publisher,
     INotifications platformNotificationApi,
     IAuthorizationService authorizationService,
     IOptions <StorefrontOptions> options)
     : base(workContextAccessor, urlBuilder)
 {
     _signInManager           = signInManager;
     _publisher               = publisher;
     _options                 = options.Value;
     _platformNotificationApi = platformNotificationApi;
     _authorizationService    = authorizationService;
 }
        public static MenuLinkList ToWebModel(this VirtoCommerceContentWebModelsMenuLinkList serviceModel, IStorefrontUrlBuilder urlBuilder)
        {
            var webModel = new MenuLinkList();

            webModel.InjectFrom(serviceModel);

            if (serviceModel.MenuLinks != null)
            {
                webModel.MenuLinks = serviceModel.MenuLinks.Select(ml => ml.ToWebModel(urlBuilder)).ToList();
            }
            if (serviceModel.SecurityScopes != null)
            {
                webModel.SecurityScopes = serviceModel.SecurityScopes.Select(ss => ss).ToList();
            }

            return webModel;
        }
        public UrlBuilderStoreWithUrlsSecureRequest()
        {
            _workContext = new WorkContext
            {
                RequestUrl = new Uri("https://localhost/secure1/path"),
                AllStores  = new[]
                {
                    new Store
                    {
                        Id              = "Store1",
                        Url             = "http://localhost/insecure1",
                        SecureUrl       = "https://localhost/secure1",
                        DefaultLanguage = new Language("ru-RU"),
                        Languages       = new List <Language>(new[]
                        {
                            new Language("en-US"),
                            new Language("ru-RU"),
                            new Language("lt-LT"),
                        }),
                    },
                    new Store
                    {
                        Id = "Store2",
                        DefaultLanguage = new Language("es-ES"),
                        Languages       = new List <Language>(new[]
                        {
                            new Language("de-DE"),
                            new Language("es-ES"),
                            new Language("fr-FR"),
                        }),
                    }
                }
            };

            _workContext.CurrentStore    = _workContext.AllStores.First();
            _workContext.CurrentLanguage = _workContext.CurrentStore.Languages.First();

            _builder = new StorefrontUrlBuilder(_workContext);
        }
        public UrlBuilderSingleStoreSingleLanguage()
        {
            _workContext = new WorkContext
            {
                AllStores = new[]
                {
                    new Store
                    {
                        Id = "Store1",
                        DefaultLanguage = new Language("en-US"),
                        Languages       = new List <Language>(new[]
                        {
                            new Language("en-US"),
                        }),
                    },
                }
            };

            _workContext.CurrentStore    = _workContext.AllStores.First();
            _workContext.CurrentLanguage = _workContext.CurrentStore.Languages.First();

            _builder = new StorefrontUrlBuilder(_workContext);
        }
        public UrlBuilderMultipleStoresMultipleLanguages()
        {
            _workContext = new WorkContext
            {
                AllStores = new[]
                {
                    new Store
                    {
                        Id = "Store1",
                        DefaultLanguage = new Language("ru-RU"),
                        Languages       = new List <Language>(new[]
                        {
                            new Language("en-US"),
                            new Language("ru-RU"),
                            new Language("lt-LT"),
                        }),
                    },
                    new Store
                    {
                        Id = "Store2",
                        DefaultLanguage = new Language("es-ES"),
                        Languages       = new List <Language>(new[]
                        {
                            new Language("de-DE"),
                            new Language("es-ES"),
                            new Language("fr-FR"),
                        }),
                    }
                }
            };

            _workContext.CurrentStore    = _workContext.AllStores.First();
            _workContext.CurrentLanguage = _workContext.CurrentStore.Languages.First();

            _builder = new StorefrontUrlBuilder(_workContext);
        }
Exemple #28
0
 public ProductController(WorkContext context, IStorefrontUrlBuilder urlBuilder, ICatalogSearchService productService, ICatalogSearchService searchService)
     : base(context, urlBuilder)
 {
     _productService = productService;
     _searchService  = searchService;
 }
 public StorefrontControllerBase(WorkContext context, IStorefrontUrlBuilder urlBuilder)
 {
     WorkContext = context;
     UrlBuilder = urlBuilder;
 }
 public ApiOrderController(WorkContext workContext, IStorefrontUrlBuilder urlBuilder, IOrdersModuleApiClient orderApi, IStoreModuleApiClient storeApi)
     : base(workContext, urlBuilder)
 {
     _orderApi = orderApi;
     _storeApi = storeApi;
 }
 public ApiMarketingController(WorkContext workContext, IStorefrontUrlBuilder urlBuilder, IMarketingService marketingService)
     : base(workContext, urlBuilder)
 {
     _marketingService = marketingService;
 }
 public ApiCustomerReviewsController(IWorkContextAccessor workContextAccessor, IStorefrontUrlBuilder urlBuilder, ICustomerReviewService customerReviewService)
     : base(workContextAccessor, urlBuilder)
 {
     _customerReviewService = customerReviewService;
 }
 public ApiRecommendationsController(IWorkContextAccessor workContextAccessor, IStorefrontUrlBuilder urlBuilder,
                                     IRecommendationProviderFactory providerFactory) : base(workContextAccessor, urlBuilder)
 {
     _providerFactory = providerFactory;
 }
 public ApiCatalogController(WorkContext workContext, IStorefrontUrlBuilder urlBuilder, ICatalogSearchService catalogSearchService)
     : base(workContext, urlBuilder)
 {
     _catalogSearchService = catalogSearchService;
 }
 public ProductController(WorkContext context, IStorefrontUrlBuilder urlBuilder, ICatalogSearchService productService, ICatalogSearchService searchService)
     : base(context, urlBuilder)
 {
     _productService = productService;
     _searchService = searchService;
 }
 public ApiAccountController(WorkContext workContext, IStorefrontUrlBuilder urlBuilder)
     : base(workContext, urlBuilder)
 {
 }
 public MenuLinkListServiceImpl(ICMSContentModuleApi cmsApi, ICatalogSearchService catalogSearchService, IStorefrontUrlBuilder urlBuilder)
 {
     _cmsApi = cmsApi;
     _catalogSearchService = catalogSearchService;
     _urlBuilder           = urlBuilder;
 }
Exemple #38
0
        public virtual ShopifyThemeWorkContext ToLiquidContext(storefrontModel.WorkContext workContext, IStorefrontUrlBuilder urlBuilder)
        {
            var result = new ShopifyThemeWorkContext();


            result.CurrentPage       = 1;
            result.Layout            = workContext.Layout;
            result.CountryOptionTags = string.Join("\r\n", workContext.AllCountries.OrderBy(c => c.Name).Select(c => c.ToOptionTag()));
            result.PageDescription   = workContext.CurrentPageSeo != null ? workContext.CurrentPageSeo.MetaDescription : string.Empty;
            result.PageTitle         = workContext.CurrentPageSeo != null ? workContext.CurrentPageSeo.Title : string.Empty;
            result.PageImageUrl      = workContext.CurrentPageSeo != null ? workContext.CurrentPageSeo.ImageUrl : string.Empty;
            result.CanonicalUrl      = workContext.CurrentPageSeo != null?urlBuilder.ToAppAbsolute(workContext.CurrentPageSeo.Slug) : null;

            result.Shop = workContext.CurrentStore != null?ToLiquidShop(workContext.CurrentStore, workContext) : null;

            result.Cart    = workContext.CurrentCart != null && workContext.CurrentCart.IsValueCreated ? ToLiquidCart(workContext.CurrentCart.Value, workContext.CurrentLanguage, urlBuilder) : null;
            result.Product = workContext.CurrentProduct != null?ToLiquidProduct(workContext.CurrentProduct) : null;

            result.Vendor = workContext.CurrentVendor != null?ToLiquidVendor(workContext.CurrentVendor) : null;

            result.Customer        = workContext.CurrentUser != null && workContext.CurrentUser.IsRegisteredUser ? ToLiquidCustomer(workContext.CurrentUser, workContext, urlBuilder) : null;
            result.AllStores       = workContext.AllStores.Select(x => ToLiquidShop(x, workContext)).ToArray();
            result.CurrentCurrency = workContext.CurrentCurrency != null?ToLiquidCurrency(workContext.CurrentCurrency) : null;

            result.CurrentLanguage = workContext.CurrentLanguage != null?ToLiquidLanguage(workContext.CurrentLanguage) : null;

            if (workContext.CurrentProductSearchCriteria != null && workContext.CurrentProductSearchCriteria.Terms.Any())
            {
                result.CurrentTags =
                    new TagCollection(
                        workContext.CurrentProductSearchCriteria.Terms.Select(t => ToLiquidTag(t)).ToList());
            }

            if (workContext.CurrentCategory != null)
            {
                result.Collection = ToLiquidCollection(workContext.CurrentCategory, workContext);
            }

            if (workContext.Categories != null)
            {
                result.Collections = new Collections(new MutablePagedList <Collection>((pageNumber, pageSize, sortInfos) =>
                {
                    workContext.Categories.Slice(pageNumber, pageSize, sortInfos);
                    return(new StaticPagedList <Collection>(workContext.Categories.Select(x => ToLiquidCollection(x, workContext)), workContext.Categories));
                }, 1, workContext.Categories.PageSize));
            }

            if (workContext.Products != null)
            {
                result.Products = new MutablePagedList <Product>((pageNumber, pageSize, sortInfos) =>
                {
                    workContext.Products.Slice(pageNumber, pageSize, sortInfos);
                    return(new StaticPagedList <Product>(workContext.Products.Select(x => ToLiquidProduct(x)), workContext.Products));
                }, workContext.Products.PageNumber, workContext.Products.PageSize);
            }

            if (workContext.Vendors != null)
            {
                result.Vendors = new MutablePagedList <Vendor>((pageNumber, pageSize, sortInfos) =>
                {
                    workContext.Vendors.Slice(pageNumber, pageSize, sortInfos);
                    return(new StaticPagedList <Vendor>(workContext.Vendors.Select(x => ToLiquidVendor(x)), workContext.Vendors));
                }, workContext.Vendors.PageNumber, workContext.Vendors.PageSize);
            }

            if (workContext.CurrentProductSearchCriteria != null && !string.IsNullOrEmpty(workContext.CurrentProductSearchCriteria.Keyword) && workContext.Products != null)
            {
                result.Search = ToLiquidSearch(workContext.Products, workContext);
            }
            else if (workContext.CurrentStaticSearchCriteria != null && !string.IsNullOrEmpty(workContext.CurrentStaticSearchCriteria.Keyword))
            {
                result.Search = new Search
                {
                    Performed = true,
                    SearchIn  = workContext.CurrentStaticSearchCriteria.SearchIn,
                    Terms     = workContext.CurrentStaticSearchCriteria.Keyword
                };
                if (workContext.StaticContentSearchResult != null && workContext.StaticContentSearchResult.Any())
                {
                    result.Search.Results = new MutablePagedList <Drop>((pageNumber, pageSize, sortInfos) =>
                    {
                        var pagedContentItems = new MutablePagedList <ContentItem>(workContext.StaticContentSearchResult);
                        pagedContentItems.Slice(pageNumber, pageSize, sortInfos);
                        return(new StaticPagedList <Drop>(workContext.StaticContentSearchResult.Select(x => ToLiquidPage(x)), pagedContentItems));
                    }, 1, workContext.StaticContentSearchResult.PageSize);
                }
            }

            if (workContext.CurrentLinkLists != null)
            {
                result.Linklists = new Linklists(workContext.CurrentLinkLists.Select(x => ToLiquidLinklist(x, workContext, urlBuilder)));
            }

            if (workContext.Pages != null)
            {
                result.Pages = new Pages(workContext.Pages.OfType <ContentPage>().Select(x => ToLiquidPage(x)));
                result.Blogs = new Blogs(workContext.Blogs.Select(x => ToLiquidBlog(x, workContext.CurrentLanguage)));
            }

            if (workContext.CurrentOrder != null)
            {
                result.Order = ToLiquidOrder(workContext.CurrentOrder, workContext.CurrentLanguage, urlBuilder);
            }

            if (workContext.CurrentQuoteRequest != null)
            {
                result.QuoteRequest = ToLiquidQuoteRequest(workContext.CurrentQuoteRequest.Value);
            }

            result.PaymentFormHtml = workContext.PaymentFormHtml;

            if (workContext.CurrentPage != null)
            {
                result.Page = ToLiquidPage(workContext.CurrentPage);
            }

            if (workContext.CurrentBlog != null)
            {
                result.Blog = ToLiquidBlog(workContext.CurrentBlog, workContext.CurrentLanguage);
            }
            if (workContext.CurrentBlogSearchCritera != null)
            {
                result.BlogSearch = ToLiquidBlogSearch(workContext.CurrentBlogSearchCritera);
            }

            if (workContext.CurrentBlogArticle != null)
            {
                result.Article = ToLiquidArticle(workContext.CurrentBlogArticle);
            }

            if (workContext.Form != null)
            {
                result.Form = new Form
                {
                    Properties = new Dictionary <string, object>()
                };
                var formProps     = workContext.Form.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
                var formPropNames = formProps.Select(x => x.Name).ToArray();
                foreach (var property in formProps)
                {
                    var propertyValue = property.GetValue(workContext.Form);
                    if (propertyValue != null)
                    {
                        result.Form.Properties[Template.NamingConvention.GetMemberName(property.Name)] = propertyValue;
                        if (typeof(IEntity).IsAssignableFrom(property.PropertyType) || typeof(IValueObject).IsAssignableFrom(property.PropertyType))
                        {
                            //For it is user type need to register this type as Drop in Liquid Template
                            Template.RegisterSafeType(property.GetType(), formPropNames);
                            var allChildEntities = propertyValue.GetFlatObjectsListWithInterface <IEntity>();
                            foreach (var type in allChildEntities.Select(x => x.GetType()).Distinct())
                            {
                                Template.RegisterSafeType(type, formPropNames);
                            }
                            var allChildLiquidObjects = propertyValue.GetFlatObjectsListWithInterface <IValueObject>();
                            foreach (var type in allChildLiquidObjects.Select(x => x.GetType()).Distinct())
                            {
                                Template.RegisterSafeType(type, formPropNames);
                            }
                        }
                    }
                }
            }

            if (workContext.StorefrontNotification != null)
            {
                result.Notification = ToLiquidNotification(workContext.StorefrontNotification);
            }

            result.ExternalLoginProviders = workContext.ExternalLoginProviders.Select(p => new LoginProvider
            {
                AuthenticationType = p.AuthenticationType,
                Caption            = p.Caption,
                Properties         = p.Properties
            }).ToList();

            result.ApplicationSettings = new MetafieldsCollection("application_settings", workContext.ApplicationSettings);

            //Powered by link
            if (workContext.CurrentStore != null)
            {
                var storeName = workContext.CurrentStore.Name;
                var hashCode  = (uint)storeName.GetHashCode();
                result.PoweredByLink = _poweredLinks[hashCode % _poweredLinks.Length];
            }

            if (workContext.RequestUrl != null)
            {
                result.RequestUrl = workContext.RequestUrl.ToString();

                //Populate current page number
                result.CurrentPage = workContext.PageNumber ?? 1;
                result.PageSize    = workContext.PageSize ?? 0;
            }

            if (workContext.AvailableRoles != null)
            {
                result.AvailableRoles = workContext.AvailableRoles.Select(x => new Role
                {
                    Id   = x.Id,
                    Name = x.Name
                }).ToArray();
            }

            if (workContext.CurrentFulfillmentCenter != null)
            {
                result.FulfillmentCenter = workContext.CurrentFulfillmentCenter.ToShopifyModel();
            }

            if (workContext.FulfillmentCenters != null)
            {
                result.FulfillmentCenters = new MutablePagedList <FulfillmentCenter>((pageNumber, pageSize, sortInfos) =>
                {
                    workContext.FulfillmentCenters.Slice(pageNumber, pageSize, sortInfos);
                    return(new StaticPagedList <FulfillmentCenter>(workContext.FulfillmentCenters.Select(x => x.ToShopifyModel()), workContext.FulfillmentCenters));
                }, workContext.FulfillmentCenters.PageNumber, workContext.FulfillmentCenters.PageSize);
            }
            return(result);
        }
Exemple #39
0
 public ApiListsController(IWorkContextAccessor workContextAccessor, ICatalogService catalogService, ICartService cartService, ICartBuilder cartBuilder, IStorefrontUrlBuilder urlBuilder)
     : base(workContextAccessor, urlBuilder)
 {
     _cartBuilder    = cartBuilder;
     _catalogService = catalogService;
     _cartService    = cartService;
 }
 public QuoteRequestController(WorkContext workContext, IStorefrontUrlBuilder urlBuilder, IQuoteRequestBuilder quoteRequestBuilder)
     : base(workContext, urlBuilder)
 {
     _quoteRequestBuilder = quoteRequestBuilder;
  }
        public static Order ToShopifyModel(this CustomerOrder order, IStorefrontUrlBuilder urlBuilder)
        {
            var result = new Order();
            result.InjectFrom<NullableAndEnumValueInjecter>(order);

            result.Cancelled = order.IsCancelled == true;
            result.CancelledAt = order.CancelledDate;
            result.CancelReason = order.CancelReason;
            result.CancelReasonLabel = order.CancelReason;
            result.CreatedAt = order.CreatedDate ?? DateTime.MinValue;
            result.Name = order.Number;
            result.OrderNumber = order.Number;
            result.CustomerUrl = urlBuilder.ToAppAbsolute("/account/order/" + order.Number);

            if (order.Addresses != null)
            {
                var shippingAddress = order.Addresses
                    .FirstOrDefault(a => (a.Type & AddressType.Shipping) == AddressType.Shipping);

                if (shippingAddress != null)
                {
                    result.ShippingAddress = shippingAddress.ToShopifyModel();
                }

                var billingAddress = order.Addresses
                    .FirstOrDefault(a => (a.Type & AddressType.Billing) == AddressType.Billing);

                if (billingAddress != null)
                {
                    result.BillingAddress = billingAddress.ToShopifyModel();
                }
                else if (shippingAddress != null)
                {
                    result.BillingAddress = shippingAddress.ToShopifyModel();
                }

                result.Email = order.Addresses
                    .Where(a => !string.IsNullOrEmpty(a.Email))
                    .Select(a => a.Email)
                    .FirstOrDefault();
            }


            var discountTotal = order.DiscountAmount != null ? order.DiscountAmount.Amount : 0;
            var discounts = new List<Discount>();

            if (order.Discount != null)
            {
                discounts.Add(order.Discount.ToShopifyModel());
            }

            var taxLines = new List<Objects.TaxLine>();

            if (order.InPayments != null)
            {
                var inPayment = order.InPayments
                    .OrderByDescending(p => p.CreatedDate)
                    .FirstOrDefault();

                if (inPayment != null)
                {
                    if (string.IsNullOrEmpty(inPayment.Status))
                    {
                        result.FinancialStatus = inPayment.IsApproved == true ? "Paid" : "Pending";
                        result.FinancialStatusLabel = inPayment.IsApproved == true ? "Paid" : "Pending";
                    }
                    else
                    {
                        result.FinancialStatus = inPayment.Status;
                        result.FinancialStatusLabel = inPayment.Status;
                    }

                    if (inPayment.TaxIncluded == true)
                    {
                        taxLines.Add(new Objects.TaxLine { Title = "Payments tax", Price = inPayment.Tax.Amount * 100 });
                    }
                }
            }

            if (order.Shipments != null)
            {
                result.ShippingMethods = order.Shipments.Select(s => s.ToShopifyModel()).ToArray();
                result.ShippingPrice = result.ShippingMethods.Sum(s => s.Price);

                var orderShipment = order.Shipments.FirstOrDefault();

                if (orderShipment != null)
                {
                    if (string.IsNullOrEmpty(orderShipment.Status))
                    {
                        result.FulfillmentStatus = orderShipment.IsApproved == true ? "Sent" : "Not sent";
                        result.FulfillmentStatusLabel = orderShipment.IsApproved == true ? "Sent" : "Not sent";
                    }
                    else
                    {
                        result.FulfillmentStatus = orderShipment.Status;
                        result.FulfillmentStatusLabel = orderShipment.Status;
                    }

                    if (orderShipment.TaxIncluded == true)
                    {
                        taxLines.Add(new Objects.TaxLine { Title = "Shipping tax", Price = orderShipment.Tax.Amount * 100 });
                    }
                }

                var shipmentsWithTax = order.Shipments
                    .Where(s => s.Tax.Amount > 0)
                    .ToList();

                if (shipmentsWithTax.Count > 0)
                {
                    taxLines.Add(new Objects.TaxLine
                    {
                        Title = "Shipping",
                        Price = shipmentsWithTax.Sum(s => s.Tax.Amount) * 100
                    });
                }

                var shipmentsWithDiscount = order.Shipments
                    .Where(s => s.DiscountAmount.Amount > 0)
                    .ToList();

                if (shipmentsWithDiscount.Any())
                {
                    var shipmentDiscount = shipmentsWithDiscount.Sum(s => s.DiscountAmount.Amount);
                    discountTotal += shipmentDiscount;

                    discounts.Add(new Discount
                    {
                        Type = "ShippingDiscount",
                        Code = "Shipping",
                        Amount = shipmentDiscount * 100,
                        Savings = -shipmentDiscount,
                    });
                }
            }

            if (order.Items != null)
            {
                result.LineItems = order.Items.Select(i => i.ToShopifyModel(urlBuilder)).ToArray();
                result.SubtotalPrice = order.Items.Sum(i => i.BasePrice.Amount * i.Quantity ?? 0) * 100;

                var itemsWithTax = order.Items
                    .Where(i => i.Tax.Amount > 0m)
                    .ToList();

                if (itemsWithTax.Any())
                {
                    taxLines.Add(new Objects.TaxLine
                    {
                        Title = "Line items",
                        Price = itemsWithTax.Sum(i => i.Tax.Amount * 100)
                     });
                }

                var itemsWithDiscount = order.Items
                    .Where(i => i.DiscountAmount.Amount > 0m)
                    .ToList();

                if (itemsWithDiscount.Any())
                {
                    var itemsDiscount = itemsWithDiscount.Sum(i => i.DiscountAmount.Amount);
                    discountTotal += itemsDiscount;

                    discounts.Add(new Discount
                    {
                        Type = "FixedAmountDiscount",
                        Code = "Items",
                        Amount = itemsDiscount * 100,
                        Savings = -itemsDiscount * 100,
                    });
                }
            }

            result.TaxLines = taxLines.ToArray();
            result.TaxPrice = taxLines.Sum(t => t.Price);

            result.Discounts = discounts.ToArray();

            result.TotalPrice = order.Sum.Amount * 100;

            return result;
        }
 public CatalogSearchController(WorkContext workContext, IStorefrontUrlBuilder urlBuilder, ICatalogSearchService searchService)
     : base(workContext, urlBuilder)
 {
     _searchService = searchService;
 }
 public PageController(WorkContext context, IStorefrontUrlBuilder urlBuilder)
     : base(context, urlBuilder)
 {
 }
Exemple #44
0
        public virtual ShopifyThemeWorkContext ToLiquidContext(storefrontModel.WorkContext workContext, IStorefrontUrlBuilder urlBuilder)
        {
            var result = new ShopifyThemeWorkContext();


            result.CurrentPage       = 1;
            result.CountryOptionTags = string.Join("\r\n", workContext.AllCountries.OrderBy(c => c.Name).Select(c => c.ToOptionTag()));
            result.PageDescription   = workContext.CurrentPageSeo != null ? workContext.CurrentPageSeo.MetaDescription : string.Empty;
            result.PageTitle         = workContext.CurrentPageSeo != null ? workContext.CurrentPageSeo.Title : string.Empty;
            result.PageImageUrl      = workContext.CurrentPageSeo != null ? workContext.CurrentPageSeo.ImageUrl : string.Empty;
            result.CanonicalUrl      = workContext.CurrentPageSeo != null?urlBuilder.ToAppAbsolute(workContext.CurrentPageSeo.Slug) : null;

            result.Shop = workContext.CurrentStore != null?ToLiquidShop(workContext.CurrentStore, workContext) : null;

            result.Cart = workContext.CurrentCart != null?ToLiquidCart(workContext.CurrentCart, workContext.CurrentLanguage, urlBuilder) : null;

            result.Product = workContext.CurrentProduct != null?ToLiquidProduct(workContext.CurrentProduct) : null;

            result.Vendor = workContext.CurrentVendor != null?ToLiquidVendor(workContext.CurrentVendor) : null;

            result.Customer        = workContext.CurrentCustomer != null && workContext.CurrentCustomer.IsRegisteredUser ? ToLiquidCustomer(workContext.CurrentCustomer, workContext, urlBuilder) : null;
            result.AllStores       = workContext.AllStores.Select(x => ToLiquidShop(x, workContext)).ToArray();
            result.CurrentCurrency = workContext.CurrentCurrency != null?ToLiquidCurrency(workContext.CurrentCurrency) : null;

            result.CurrentLanguage = workContext.CurrentLanguage != null?ToLiquidLanguage(workContext.CurrentLanguage) : null;

            if (workContext.CurrentProductSearchCriteria != null && workContext.CurrentProductSearchCriteria.Terms.Any())
            {
                result.CurrentTags =
                    new TagCollection(
                        workContext.CurrentProductSearchCriteria.Terms.Select(t => ToLiquidTag(t)).ToList());
            }

            if (workContext.CurrentCategory != null)
            {
                result.Collection = ToLiquidCollection(workContext.CurrentCategory, workContext);
            }

            if (workContext.Categories != null)
            {
                result.Collections = new Collections(new MutablePagedList <Collection>((pageNumber, pageSize, sortInfos) =>
                {
                    workContext.Categories.Slice(pageNumber, pageSize, sortInfos);
                    return(new StaticPagedList <Collection>(workContext.Categories.Select(x => ToLiquidCollection(x, workContext)), workContext.Categories));
                }, 1, workContext.Categories.PageSize));
            }

            if (workContext.Products != null)
            {
                result.Products = new MutablePagedList <Product>((pageNumber, pageSize, sortInfos) =>
                {
                    workContext.Products.Slice(pageNumber, pageSize, sortInfos);
                    return(new StaticPagedList <Product>(workContext.Products.Select(x => ToLiquidProduct(x)), workContext.Products));
                }, workContext.Products.PageNumber, workContext.Products.PageSize);
            }

            if (workContext.Vendors != null)
            {
                result.Vendors = new MutablePagedList <Vendor>((pageNumber, pageSize, sortInfos) =>
                {
                    workContext.Vendors.Slice(pageNumber, pageSize, sortInfos);
                    return(new StaticPagedList <Vendor>(workContext.Vendors.Select(x => ToLiquidVendor(x)), workContext.Vendors));
                }, workContext.Vendors.PageNumber, workContext.Vendors.PageSize);
            }

            if (!string.IsNullOrEmpty(workContext.CurrentProductSearchCriteria.Keyword) && workContext.Products != null)
            {
                result.Search = ToLiquidSearch(workContext.Products, workContext);
            }
            else if (workContext.CurrentStaticSearchCriteria != null && !string.IsNullOrEmpty(workContext.CurrentStaticSearchCriteria.Keyword))
            {
                result.Search = new Search
                {
                    Performed = true,
                    SearchIn  = workContext.CurrentStaticSearchCriteria.SearchIn,
                    Terms     = workContext.CurrentStaticSearchCriteria.Keyword
                };
                if (workContext.StaticContentSearchResult != null && workContext.StaticContentSearchResult.Any())
                {
                    result.Search.Results = new MutablePagedList <Drop>((pageNumber, pageSize, sortInfos) =>
                    {
                        var pagedContentItems = new MutablePagedList <ContentItem>(workContext.StaticContentSearchResult);
                        pagedContentItems.Slice(pageNumber, pageSize, sortInfos);
                        return(new StaticPagedList <Drop>(workContext.StaticContentSearchResult.Select(x => ToLiquidPage(x)), pagedContentItems));
                    }, 1, workContext.StaticContentSearchResult.PageSize);
                }
            }

            if (workContext.CurrentLinkLists != null)
            {
                result.Linklists = new Linklists(workContext.CurrentLinkLists.Select(x => ToLiquidLinklist(x, workContext, urlBuilder)));
            }

            if (workContext.Pages != null)
            {
                result.Pages = new Pages(workContext.Pages.OfType <ContentPage>().Select(x => ToLiquidPage(x)));
                result.Blogs = new Blogs(workContext.Blogs.Select(x => ToLiquidBlog(x, workContext.CurrentLanguage)));
            }

            if (workContext.CurrentOrder != null)
            {
                result.Order = ToLiquidOrder(workContext.CurrentOrder, workContext.CurrentLanguage, urlBuilder);
            }

            if (workContext.CurrentQuoteRequest != null)
            {
                result.QuoteRequest = ToLiquidQuoteRequest(workContext.CurrentQuoteRequest);
            }

            result.PaymentFormHtml = workContext.PaymentFormHtml;

            if (workContext.CurrentPage != null)
            {
                result.Page = ToLiquidPage(workContext.CurrentPage);
            }

            if (workContext.CurrentBlog != null)
            {
                result.Blog = ToLiquidBlog(workContext.CurrentBlog, workContext.CurrentLanguage);
            }
            if (workContext.CurrentBlogSearchCritera != null)
            {
                result.BlogSearch = ToLiquidBlogSearch(workContext.CurrentBlogSearchCritera);
            }

            if (workContext.CurrentBlogArticle != null)
            {
                result.Article = ToLiquidArticle(workContext.CurrentBlogArticle);
            }

            if (workContext.ContactUsForm != null)
            {
                result.Form = workContext.ContactUsForm.ToShopifyModel();
            }

            if (workContext.Login != null)
            {
                result.Form = workContext.Login.ToShopifyModel();
            }

            if (workContext.StorefrontNotification != null)
            {
                result.Notification = ToLiquidNotification(workContext.StorefrontNotification);
            }

            result.ExternalLoginProviders = workContext.ExternalLoginProviders.Select(p => new LoginProvider
            {
                AuthenticationType = p.AuthenticationType,
                Caption            = p.Caption,
                Properties         = p.Properties
            }).ToList();

            result.ApplicationSettings = new MetafieldsCollection("application_settings", workContext.ApplicationSettings);

            //Powered by link
            if (workContext.CurrentStore != null)
            {
                var storeName = workContext.CurrentStore.Name;
                var hashCode  = (uint)storeName.GetHashCode();
                result.PoweredByLink = _poweredLinks[hashCode % _poweredLinks.Length];
            }

            if (workContext.RequestUrl != null)
            {
                result.RequestUrl = workContext.RequestUrl.ToString();

                //Populate current page number
                result.CurrentPage = workContext.PageNumber ?? 1;
                result.PageSize    = workContext.PageSize ?? 0;
            }

            return(result);
        }
Exemple #45
0
        public static ShopifyThemeWorkContext ToShopifyModel(this storefrontModel.WorkContext workContext, IStorefrontUrlBuilder urlBuilder)
        {
            var converter = new ShopifyModelConverter();

            return(converter.ToLiquidContext(workContext, urlBuilder));
        }
        public static ShopifyThemeWorkContext ToShopifyModel(this storefrontModel.WorkContext workContext, IStorefrontUrlBuilder urlBuilder)
        {
            var result = new ShopifyThemeWorkContext();

            result.CurrentPage = 1;
            result.CountryOptionTags = string.Join("\r\n", workContext.AllCountries.OrderBy(c => c.Name).Select(c => c.ToOptionTag()));
            result.PageDescription = workContext.CurrentPageSeo != null ? workContext.CurrentPageSeo.MetaDescription : string.Empty;
            result.PageTitle = workContext.CurrentPageSeo != null ? workContext.CurrentPageSeo.Title : string.Empty;
            result.Shop = workContext.CurrentStore.ToShopifyModel(workContext);
            result.Cart = workContext.CurrentCart.ToShopifyModel(workContext);
            result.Product = workContext.CurrentProduct != null ? workContext.CurrentProduct.ToShopifyModel(workContext) : null;
            result.Customer = workContext.CurrentCustomer.HasAccount ? workContext.CurrentCustomer.ToShopifyModel(workContext, urlBuilder) : null;
            result.AllStores = workContext.AllStores.Select(x => x.ToShopifyModel(workContext)).ToArray();

            result.CurrentCurrency = workContext.CurrentCurrency.ToShopifyModel();
            result.CurrentLanguage = workContext.CurrentLanguage.ToShopifyModel();

            if (workContext.CurrentProduct != null && workContext.CurrentProduct.Category != null)
            {
                result.Collection = workContext.CurrentProduct.Category.ToShopifyModel(workContext);
            }

            if (workContext.CurrentCatalogSearchCriteria.Terms.Any())
            {
                result.CurrentTags =
                    new TagCollection(
                        workContext.CurrentCatalogSearchCriteria.Terms.Select(t => t.ToShopifyModel()).ToList());
            }

            var searchResult = workContext.CurrentCatalogSearchResult;
            if (searchResult != null)
            {
                result.Collection = searchResult.ToShopifyModel(workContext);

                if (searchResult.Categories != null)
                {
                    result.Collections = new Collections(searchResult.Categories.Select(x => x.ToShopifyModel(workContext)));
                }
            }

            if (workContext.CurrentLinkLists != null)
            {
                result.Linklists = new Linklists(workContext.CurrentLinkLists.Select(x => x.ToShopifyModel()));
            }

            if (workContext.Order != null)
            {
                result.Order = workContext.Order.ToShopifyModel(urlBuilder);
            }

            result.PaymentFormHtml = workContext.PaymentFormHtml;

            if(workContext.CurrentPage != null)
            {
                result.Page = workContext.CurrentPage.ToShopifyModel();
            }

            if(workContext.CurrentBlog != null)
            {
                result.Blog = workContext.CurrentBlog.ToShopifyModel();
            }

            if(workContext.CurrentBlogArticle != null)
            {
                result.Article = workContext.CurrentBlogArticle.ToShopifyModel();
            }

            if (workContext.ContactUsForm != null)
            {
                result.Form = workContext.ContactUsForm.ToShopifyModel();
            }

            if (workContext.Login != null)
            {
                result.Form = workContext.Login.ToShopifyModel();
            }

            return result;
        }
 public CartController(WorkContext workContext, IOrderModuleApi orderApi, IStorefrontUrlBuilder urlBuilder, ICommerceCoreModuleApi commerceApi)
     : base(workContext, urlBuilder)
 {
     _orderApi = orderApi;
     _commerceApi = commerceApi;
 }
 public PageController(WorkContext context, IStorefrontUrlBuilder urlBuilder, IStaticContentService contentService)
     : base(context, urlBuilder)
 {
     _contentService = contentService;
 }
Exemple #49
0
 public StorefrontControllerBase(IWorkContextAccessor workContextAccessor, IStorefrontUrlBuilder urlBuilder)
 {
     WorkContext = workContextAccessor.WorkContext;
     UrlBuilder  = urlBuilder;
 }
        public static ShopifyThemeWorkContext ToShopifyModel(this storefrontModel.WorkContext workContext, IStorefrontUrlBuilder urlBuilder)
        {
            var result = new ShopifyThemeWorkContext();

            result.CurrentPage = 1;
            result.CountryOptionTags = string.Join("\r\n", workContext.AllCountries.OrderBy(c => c.Name).Select(c => c.ToOptionTag()));
            result.PageDescription = workContext.CurrentPageSeo != null ? workContext.CurrentPageSeo.MetaDescription : string.Empty;
            result.PageTitle = workContext.CurrentPageSeo != null ? workContext.CurrentPageSeo.Title : string.Empty;
            result.Shop = workContext.CurrentStore != null ? workContext.CurrentStore.ToShopifyModel(workContext) : null;
            result.Cart = workContext.CurrentCart != null ? workContext.CurrentCart.ToShopifyModel(workContext) : null;
            result.Product = workContext.CurrentProduct != null ? workContext.CurrentProduct.ToShopifyModel() : null;
            result.Customer = workContext.CurrentCustomer != null && workContext.CurrentCustomer.IsRegisteredUser ? workContext.CurrentCustomer.ToShopifyModel(workContext, urlBuilder) : null;
            result.AllStores = workContext.AllStores.Select(x => x.ToShopifyModel(workContext)).ToArray();

            result.CurrentCurrency = workContext.CurrentCurrency != null ? workContext.CurrentCurrency.ToShopifyModel() : null;
            result.CurrentLanguage = workContext.CurrentLanguage != null ? workContext.CurrentLanguage.ToShopifyModel() : null;

            if (workContext.CurrentCatalogSearchCriteria != null && workContext.CurrentCatalogSearchCriteria.Terms.Any())
            {
                result.CurrentTags =
                    new TagCollection(
                        workContext.CurrentCatalogSearchCriteria.Terms.Select(t => t.ToShopifyModel()).ToList());
            }

            if(workContext.CurrentCategory != null)
            {
                result.Collection = workContext.CurrentCategory.ToShopifyModel(workContext);
            }

            if (workContext.Categories != null)
            {
                result.Collections = new Collections(new MutablePagedList<Collection>((pageNumber, pageSize) =>
                {
                    workContext.Categories.Slice(pageNumber, pageSize);
                    return new StaticPagedList<Collection>(workContext.Categories.Select(x => x.ToShopifyModel(workContext)), workContext.Categories);
                }));
                }

            if(!string.IsNullOrEmpty(workContext.CurrentCatalogSearchCriteria.Keyword) && workContext.Products != null)
            {
                result.Search = workContext.Products.ToShopifyModel(workContext.CurrentCatalogSearchCriteria.Keyword);
            }

            if (workContext.CurrentLinkLists != null)
            {
                result.Linklists = new Linklists(workContext.CurrentLinkLists.Select(x => x.ToShopifyModel(workContext, urlBuilder)));
            }

            if (workContext.Pages != null)
            {
                result.Pages = new Pages(workContext.Pages.OfType<ContentPage>().Select(x => x.ToShopifyModel()));
                result.Blogs = new Blogs(workContext.Blogs.Select(x => x.ToShopifyModel(workContext.CurrentLanguage)));
            }

            if (workContext.CurrentOrder != null)
            {
                result.Order = workContext.CurrentOrder.ToShopifyModel(urlBuilder);
            }

            if (workContext.CurrentQuoteRequest != null)
            {
                result.QuoteRequest = workContext.CurrentQuoteRequest.ToShopifyModel();
            }

            
            result.PaymentFormHtml = workContext.PaymentFormHtml;

            if (workContext.CurrentPage != null)
            {
                result.Page = workContext.CurrentPage.ToShopifyModel();
            }

            if (workContext.CurrentBlog != null)
            {
                result.Blog = workContext.CurrentBlog.ToShopifyModel(workContext.CurrentLanguage);
            }

            if (workContext.CurrentBlogArticle != null)
            {
                result.Article = workContext.CurrentBlogArticle.ToShopifyModel();
            }

            if (workContext.ContactUsForm != null)
            {
                result.Form = workContext.ContactUsForm.ToShopifyModel();
            }

            if (workContext.Login != null)
            {
                result.Form = workContext.Login.ToShopifyModel();
            }

            if (workContext.StorefrontNotification != null)
            {
                result.Notification = workContext.StorefrontNotification.ToShopifyModel();
            }

            result.ExternalLoginProviders = workContext.ExternalLoginProviders.Select(p => new LoginProvider
            {
                AuthenticationType = p.AuthenticationType,
                Caption = p.Caption,
                Properties = p.Properties
            }).ToList();

            result.ApplicationSettings = new MetafieldsCollection("application_settings", workContext.ApplicationSettings);

            //Powered by link
            if (workContext.CurrentStore != null)
            {
                var storeName = workContext.CurrentStore.Name;
                var hashCode = (uint)storeName.GetHashCode();
                result.PoweredByLink = _poweredLinks[hashCode % _poweredLinks.Length];
            }

            result.CurrentPage = 1;
            if (workContext.RequestUrl != null)
            {
                result.RequestUrl = workContext.RequestUrl.ToString();
                //Populate current page number
                var qs = HttpUtility.ParseQueryString(workContext.RequestUrl.Query);
                result.CurrentPage = Convert.ToInt32(qs.Get("page") ?? 1.ToString());
            }
            return result;
        }
Exemple #51
0
 public StaticContentController(IWorkContextAccessor workContextAccessor, IStorefrontUrlBuilder urlBuilder, IAuthorizationService authorizationService)
     : base(workContextAccessor, urlBuilder)
 {
     _authorizationService = authorizationService;
 }
 public ProductController(WorkContext context, IStorefrontUrlBuilder urlBuilder, ICatalogSearchService catalogSearchService)
     : base(context, urlBuilder)
 {
     _catalogSearchService = catalogSearchService;
 }
Exemple #53
0
        public static ShopifyThemeWorkContext ToShopifyModel(this storefrontModel.WorkContext workContext, IStorefrontUrlBuilder urlBuilder)
        {
            var converter = ServiceLocator.Current.GetInstance <ShopifyModelConverter>();

            return(converter.ToLiquidContext(workContext, urlBuilder));
        }
Exemple #54
0
 public ApiBlogController(IWorkContextAccessor workContextAccessor, IStorefrontUrlBuilder urlBuilder)
     : base(workContextAccessor, urlBuilder)
 {
 }
Exemple #55
0
 public ApiUserActionsController(WorkContext workContext, IStorefrontUrlBuilder urlBuilder,
                                 IProductRecommendationsModuleApiClient productRecommendationsApi) : base(workContext, urlBuilder)
 {
     _productRecommendationsApi = productRecommendationsApi;
 }
 public ApiOrderController(IWorkContextAccessor workContextAccessor, IStorefrontUrlBuilder urlBuilder, IOrderModule orderApi, IStoreModule storeApi)
     : base(workContextAccessor, urlBuilder)
 {
     _orderApi = orderApi;
     _storeApi = storeApi;
 }
 public ApiPricingController(IWorkContextAccessor workContextAccessor, IStorefrontUrlBuilder urlBuilder, IPromotionEvaluator promotionEvaluator, IPricingService pricingService)
     : base(workContextAccessor, urlBuilder)
 {
     _pricingService     = pricingService;
     _promotionEvaluator = promotionEvaluator;
 }
 public MenuLinkListServiceImpl(ICMSContentModuleApi cmsApi, ICatalogSearchService catalogSearchService, IStorefrontUrlBuilder urlBuilder)
 {
     _cmsApi = cmsApi;
     _catalogSearchService = catalogSearchService;
     _urlBuilder = urlBuilder;
 }