Пример #1
0
        /// <summary>
        /// Returns the value of a property on the product. Will traverse the content tree recursively to find the value. Will also use the master relation property of the product to search master products. NOTE: If you have a IPublishedContent model use that instead of the string productIdentifier, which is slightly slower.
        /// </summary>
        /// <param name="storeId">Id of the store.</param>
        /// <param name="productIdentifier">A unique identifier of the product. E.g. the node id from Umbraco.</param>
        /// <param name="propertyAlias">Alias of the property to find.</param>
        /// <param name="func">A function to filter the result.</param>
        /// <returns>The text value of the property.</returns>
        public static T GetPropertyValue <T>(long storeId, string productIdentifier, string propertyAlias, Func <IPublishedContent, bool> func = null)
        {
            ProductIdentifier       productIdentifierObj = new ProductIdentifier(productIdentifier);
            UmbracoHelper           umbracoHelper        = new UmbracoHelper(UmbracoContext.Current);
            IPublishedContent       content = umbracoHelper.TypedContent(productIdentifierObj.NodeId);
            VariantPublishedContent variant = PublishedContentVariantService.Instance.GetVariant(storeId, content, productIdentifierObj.VariantId);

            return(DependencyContainer.Instance.Resolve <IPublishedContentProductInformationExtractor>().GetPropertyValue <T>(content, propertyAlias, variant, func));
        }
Пример #2
0
        public void PostStock(string productIdentifier, Stock stock)
        {
            ProductIdentifier productIdentifierObj = new ProductIdentifier(productIdentifier);

            IContent content = ApplicationContext.Current.Services.ContentService.GetById(productIdentifierObj.NodeId);
            IProductInformationExtractor <IContent, VariantPublishedContent> productInformationExtractor = ContentProductInformationExtractor.Instance;
            IVariantService <IContent, VariantPublishedContent> contentVariantService = ContentVariantService.Instance;

            long storeId = productInformationExtractor.GetStoreId(content);
            VariantPublishedContent variant = contentVariantService.GetVariant(storeId, content, productIdentifierObj.VariantId);

            stock.Sku = !string.IsNullOrEmpty(stock.Sku) ? stock.Sku : productInformationExtractor.GetSku(content, variant);

            ProductService.Instance.SetStock(storeId, stock.Sku, !string.IsNullOrEmpty(stock.Value) ? stock.Value.ParseToDecimal() : null);
        }
Пример #3
0
        public Stock GetStock(string productIdentifier)
        {
            Stock             stock = new Stock();
            ProductIdentifier productIdentifierObj = new ProductIdentifier(productIdentifier);

            IContent content = ApplicationContext.Current.Services.ContentService.GetById(productIdentifierObj.NodeId);
            IProductInformationExtractor <IContent, VariantPublishedContent> productInformationExtractor = ContentProductInformationExtractor.Instance;
            IVariantService <IContent, VariantPublishedContent> contentVariantService = ContentVariantService.Instance;

            long storeId = productInformationExtractor.GetStoreId(content);
            VariantPublishedContent variant = contentVariantService.GetVariant(storeId, content, productIdentifierObj.VariantId);

            stock.Sku = productInformationExtractor.GetSku(content, variant);
            decimal?stockValue = ProductService.Instance.GetStock(storeId, stock.Sku);

            stock.Value = stockValue != null?stockValue.Value.ToString("0.####") : "";

            return(stock);
        }
 public override string GetVariantProductIdentifier(IPublishedContent content, VariantPublishedContent variant)
 {
     return(content.Id + "_" + variant.VariantIdentifier);
 }
Пример #5
0
        /// <summary>
        /// Returns the value of a property on the product. Will traverse the content tree recursively to find the value. Will also use the master relation property of the product to search master products.
        /// </summary>
        /// <param name="storeId">Id of the store.</param>
        /// <param name="model">The product as a IPublishedContent.</param>
        /// <param name="propertyAlias">Alias of the property to find.</param>
        /// <param name="variantId">The id of a specific product variant</param>
        /// <param name="func">A function to filter the result.</param>
        /// <returns>The text value of the property.</returns>
        public static T GetPropertyValue <T>(long storeId, IPublishedContent product, string propertyAlias, string variantId = null, Func <IPublishedContent, bool> func = null)
        {
            VariantPublishedContent variant = !string.IsNullOrEmpty(variantId) ? PublishedContentVariantService.Instance.GetVariant(storeId, product, variantId) : null;

            return(DependencyContainer.Instance.Resolve <IPublishedContentProductInformationExtractor>().GetPropertyValue <T>(product, propertyAlias, variant, func));
        }
Пример #6
0
 /// <summary>
 /// Gets the current stock for a specific product.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="storeId">Id of the store.</param>
 /// <param name="product"></param>
 /// <param name="variant"></param>
 /// <returns>The stock of the product. Will be null if no stock have been provided for this product.</returns>
 public static decimal?GetStock <T>(long storeId, T product, VariantPublishedContent variant) where T : class
 {
     return(TeaCommerceHelper.GetStock(storeId, product, variant));
 }
Пример #7
0
 /// <summary>
 /// Gets a price for a specific product/variant in the current currency.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="storeId">Id of the store.</param>
 /// <param name="product">A product.</param>
 /// <param name="variant">A variant.</param>
 /// <returns>A price object.</returns>
 public static Price GetPrice <T>(long storeId, T product, VariantPublishedContent variant) where T : class
 {
     return(TeaCommerceHelper.GetPrice(storeId, product, variant));
 }
 public abstract string GetVariantProductIdentifier(T content, VariantPublishedContent variant);
Пример #9
0
 public override string GetVariantProductIdentifier(IContent content, VariantPublishedContent variant)
 {
     return(content.Id + (variant != null ? "_" + variant.VariantIdentifier : ""));
 }