/// <summary> /// Get product variant attribute values /// </summary> /// <param name="Attributes">Attributes</param> /// <returns>Product variant attribute values</returns> public static ProductVariantAttributeValueCollection ParseProductVariantAttributeValues(string Attributes) { ProductVariantAttributeValueCollection pvaValues = new ProductVariantAttributeValueCollection(); ProductVariantAttributeCollection pvaCollection = ParseProductVariantAttributes(Attributes); foreach (ProductVariantAttribute pva in pvaCollection) { if (!pva.ShouldHaveValues) { continue; } List <string> pvaValuesStr = ParseValues(Attributes, pva.ProductVariantAttributeID); foreach (string pvaValueStr in pvaValuesStr) { if (!String.IsNullOrEmpty(pvaValueStr)) { int pvaValueID = 0; if (int.TryParse(pvaValueStr, out pvaValueID)) { ProductVariantAttributeValue pvaValue = ProductAttributeManager.GetProductVariantAttributeValueByID(pvaValueID); if (pvaValue != null) { pvaValues.Add(pvaValue); } } } } } return(pvaValues); }
/// <summary> /// Get product variant attribute values /// </summary> /// <param name="attributes">Attributes</param> /// <returns>Product variant attribute values</returns> public static List <ProductVariantAttributeValue> ParseProductVariantAttributeValues(string attributes) { var pvaValues = new List <ProductVariantAttributeValue>(); var pvaCollection = ParseProductVariantAttributes(attributes); foreach (var pva in pvaCollection) { if (!pva.ShouldHaveValues) { continue; } var pvaValuesStr = ParseValues(attributes, pva.ProductVariantAttributeId); foreach (string pvaValueStr in pvaValuesStr) { if (!String.IsNullOrEmpty(pvaValueStr)) { int pvaValueId = 0; if (int.TryParse(pvaValueStr, out pvaValueId)) { var pvaValue = ProductAttributeManager.GetProductVariantAttributeValueById(pvaValueId); if (pvaValue != null) { pvaValues.Add(pvaValue); } } } } } return(pvaValues); }
/// <summary> /// Formats attributes /// </summary> /// <param name="productVariant">Product variant</param> /// <param name="Attributes">Attributes</param> /// <param name="customer">Customer</param> /// <param name="Serapator">Serapator</param> /// <param name="HTMLEncode">A value indicating whether to encode (HTML) values</param> /// <returns>Attributes</returns> public static string FormatAttributes(ProductVariant productVariant, string Attributes, Customer customer, string Serapator, bool HTMLEncode) { StringBuilder result = new StringBuilder(); ProductVariantAttributeCollection pvaCollection = ParseProductVariantAttributes(Attributes); foreach (ProductVariantAttribute pva in pvaCollection) { List <string> valuesStr = ParseValues(Attributes, pva.ProductVariantAttributeID); foreach (string valueStr in valuesStr) { string pvaAttribute = string.Empty; if (!pva.ShouldHaveValues) { pvaAttribute = string.Format("{0}: {1}", pva.ProductAttribute.Name, valueStr); } else { ProductVariantAttributeValue pvaValue = ProductAttributeManager.GetProductVariantAttributeValueByID(Convert.ToInt32(valueStr)); if (pvaValue != null) { pvaAttribute = string.Format("{0}: {1}", pva.ProductAttribute.Name, pvaValue.Name); decimal priceAdjustmentBase = TaxManager.GetPrice(productVariant, pvaValue.PriceAdjustment, customer); decimal priceAdjustment = CurrencyManager.ConvertCurrency(priceAdjustmentBase, CurrencyManager.PrimaryStoreCurrency, NopContext.Current.WorkingCurrency); if (priceAdjustmentBase > 0) { string priceAdjustmentStr = PriceHelper.FormatPrice(priceAdjustment, false, false); pvaAttribute += string.Format(" [+{0}]", priceAdjustmentStr); } } } if (!String.IsNullOrEmpty(pvaAttribute)) { result.Append(Serapator); if (HTMLEncode) { result.Append(HttpUtility.HtmlEncode(pvaAttribute)); } else { result.Append(pvaAttribute); } } } } return(result.ToString()); }
/// <summary> /// Gets selected product variant attributes /// </summary> /// <param name="Attributes">Attributes</param> /// <returns>Selected product variant attributes</returns> public static ProductVariantAttributeCollection ParseProductVariantAttributes(string Attributes) { ProductVariantAttributeCollection pvaCollection = new ProductVariantAttributeCollection(); List <int> IDs = ParseProductVariantAttributeIDs(Attributes); foreach (int id in IDs) { ProductVariantAttribute pva = ProductAttributeManager.GetProductVariantAttributeByID(id); if (pva != null) { pvaCollection.Add(pva); } } return(pvaCollection); }
/// <summary> /// Gets selected product variant attributes /// </summary> /// <param name="attributes">Attributes</param> /// <returns>Selected product variant attributes</returns> public static ProductVariantAttributeCollection ParseProductVariantAttributes(string attributes) { var pvaCollection = new ProductVariantAttributeCollection(); var Ids = ParseProductVariantAttributeIds(attributes); foreach (int id in Ids) { var pva = ProductAttributeManager.GetProductVariantAttributeById(id); if (pva != null) { pvaCollection.Add(pva); } } return(pvaCollection); }
/// <summary> /// Finds a product variant attribute combination by attributes stored in XML /// </summary> /// <param name="productVariantId">Product variant identifier</param> /// <param name="attributesXml">Attributes in XML format</param> /// <returns>Found product variant attribute combination</returns> public static ProductVariantAttributeCombination FindProductVariantAttributeCombination(int productVariantId, string attributesXml) { //existing combinations var combinations = ProductAttributeManager.GetAllProductVariantAttributeCombinations(productVariantId); if (combinations.Count == 0) { return(null); } foreach (var combination in combinations) { bool attributesEqual = ProductAttributeHelper.AreProductAttributesEqual(combination.AttributesXml, attributesXml); if (attributesEqual) { return(combination); } } return(null); }
/// <summary> /// Gets the localized name /// </summary> /// <param name="languageId">Language identifier</param> /// <returns>Localized name</returns> public string GetLocalizedName(int languageId) { if (NopContext.Current.LocalizedEntityPropertiesEnabled) { if (languageId > 0) { if (_paLocalized == null) { _paLocalized = ProductAttributeManager.GetProductAttributeLocalizedByProductAttributeId(this.ProductAttributeId); } var temp1 = _paLocalized.FirstOrDefault(cl => cl.LanguageId == languageId); if (temp1 != null && !String.IsNullOrWhiteSpace(temp1.Name)) { return(temp1.Name); } } } return(this.Name); }
/// <summary> /// Formats attributes /// </summary> /// <param name="productVariant">Product variant</param> /// <param name="attributes">Attributes</param> /// <param name="customer">Customer</param> /// <param name="serapator">Serapator</param> /// <param name="htmlEncode">A value indicating whether to encode (HTML) values</param> /// <param name="renderPrices">A value indicating whether to render prices</param> /// <param name="renderProductAttributes">A value indicating whether to render product attributes</param> /// <param name="renderGiftCardAttributes">A value indicating whether to render gift card attributes</param> /// <returns>Attributes</returns> public static string FormatAttributes(ProductVariant productVariant, string attributes, Customer customer, string serapator, bool htmlEncode, bool renderPrices, bool renderProductAttributes, bool renderGiftCardAttributes) { var result = new StringBuilder(); //attributes if (renderProductAttributes) { var pvaCollection = ParseProductVariantAttributes(attributes); for (int i = 0; i < pvaCollection.Count; i++) { var pva = pvaCollection[i]; var valuesStr = ParseValues(attributes, pva.ProductVariantAttributeId); for (int j = 0; j < valuesStr.Count; j++) { string valueStr = valuesStr[j]; string pvaAttribute = string.Empty; if (!pva.ShouldHaveValues) { if (pva.AttributeControlType == AttributeControlTypeEnum.MultilineTextbox) { pvaAttribute = string.Format("{0}: {1}", pva.ProductAttribute.Name, HtmlHelper.FormatText(valueStr, false, true, true, false, false, false)); } else { pvaAttribute = string.Format("{0}: {1}", pva.ProductAttribute.Name, valueStr); } } else { var pvaValue = ProductAttributeManager.GetProductVariantAttributeValueById(Convert.ToInt32(valueStr)); if (pvaValue != null) { pvaAttribute = string.Format("{0}: {1}", pva.ProductAttribute.Name, pvaValue.Name); if (renderPrices) { decimal priceAdjustmentBase = TaxManager.GetPrice(productVariant, pvaValue.PriceAdjustment, customer); decimal priceAdjustment = CurrencyManager.ConvertCurrency(priceAdjustmentBase, CurrencyManager.PrimaryStoreCurrency, NopContext.Current.WorkingCurrency); if (priceAdjustmentBase > 0) { string priceAdjustmentStr = PriceHelper.FormatPrice(priceAdjustment, false, false); pvaAttribute += string.Format(" [+{0}]", priceAdjustmentStr); } } } } if (!String.IsNullOrEmpty(pvaAttribute)) { if (i != 0 || j != 0) { result.Append(serapator); } //we don't encode multiline textbox input if (htmlEncode && pva.AttributeControlType != AttributeControlTypeEnum.MultilineTextbox) { result.Append(HttpUtility.HtmlEncode(pvaAttribute)); } else { result.Append(pvaAttribute); } } } } } //gift cards if (renderGiftCardAttributes) { if (productVariant.IsGiftCard) { string giftCardRecipientName = string.Empty; string giftCardRecipientEmail = string.Empty; string giftCardSenderName = string.Empty; string giftCardSenderEmail = string.Empty; string giftCardMessage = string.Empty; GetGiftCardAttribute(attributes, out giftCardRecipientName, out giftCardRecipientEmail, out giftCardSenderName, out giftCardSenderEmail, out giftCardMessage); if (!String.IsNullOrEmpty(result.ToString())) { result.Append(serapator); } if (htmlEncode) { result.Append(HttpUtility.HtmlEncode(string.Format(LocalizationManager.GetLocaleResourceString("GiftCardAttribute.For"), giftCardRecipientName))); result.Append(serapator); result.Append(HttpUtility.HtmlEncode(string.Format(LocalizationManager.GetLocaleResourceString("GiftCardAttribute.From"), giftCardSenderName))); } else { result.Append(string.Format(LocalizationManager.GetLocaleResourceString("GiftCardAttribute.For"), giftCardRecipientName)); result.Append(serapator); result.Append(string.Format(LocalizationManager.GetLocaleResourceString("GiftCardAttribute.From"), giftCardSenderName)); } } } return(result.ToString()); }