/// <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)); }
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); }
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); }
/// <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)); }
/// <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)); }
/// <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);
public override string GetVariantProductIdentifier(IContent content, VariantPublishedContent variant) { return(content.Id + (variant != null ? "_" + variant.VariantIdentifier : "")); }