public async Task CanRenderAttributesWithoutPrices() { var attributes = string.Empty; foreach (var productAttributeMapping in _productAttributeMappings) { foreach (var productAttributeValue in productAttributeMapping.Value.OrderBy(p => p.Id)) { attributes = _productAttributeParser.AddProductAttribute(attributes, productAttributeMapping.Key, productAttributeValue.Id.ToString()); } } attributes = _productAttributeParser.AddGiftCardAttribute(attributes, "recipientName 1", "*****@*****.**", "senderName 1", "*****@*****.**", "custom message"); var product = new Product { IsGiftCard = true, GiftCardType = GiftCardType.Virtual }; var customer = new Customer(); var formattedAttributes = await _productAttributeFormatter.FormatAttributesAsync(product, attributes, customer, "<br />", false); formattedAttributes.Should().Be( "Processor: 2.2 GHz Intel Pentium Dual-Core E2200<br />Processor: 2.5 GHz Intel Pentium Dual-Core E2200 [+$15.00]<br />RAM: 2 GB<br />RAM: 4GB [+$20.00]<br />RAM: 8GB [+$60.00]<br />HDD: 320 GB<br />HDD: 400 GB [+$100.00]<br />OS: Vista Home [+$50.00]<br />OS: Vista Premium [+$60.00]<br />Software: Microsoft Office [+$50.00]<br />Software: Acrobat Reader [+$10.00]<br />Software: Total Commander [+$5.00]<br />From: senderName 1 <*****@*****.**><br />For: recipientName 1 <*****@*****.**>"); formattedAttributes = await _productAttributeFormatter.FormatAttributesAsync(product, attributes, customer, "<br />", false, false); formattedAttributes.Should().Be( "Processor: 2.2 GHz Intel Pentium Dual-Core E2200<br />Processor: 2.5 GHz Intel Pentium Dual-Core E2200<br />RAM: 2 GB<br />RAM: 4GB<br />RAM: 8GB<br />HDD: 320 GB<br />HDD: 400 GB<br />OS: Vista Home<br />OS: Vista Premium<br />Software: Microsoft Office<br />Software: Acrobat Reader<br />Software: Total Commander<br />From: senderName 1 <*****@*****.**><br />For: recipientName 1 <*****@*****.**>"); }
public void Can_add_and_parse_giftCardAttributes() { var attributes = ""; attributes = _productAttributeParser.AddGiftCardAttribute(attributes, "recipientName 1", "*****@*****.**", "senderName 1", "*****@*****.**", "custom message"); _productAttributeParser.GetGiftCardAttribute(attributes, out var recipientName, out var recipientEmail, out var senderName, out var senderEmail, out var giftCardMessage); recipientName.ShouldEqual("recipientName 1"); recipientEmail.ShouldEqual("*****@*****.**"); senderName.ShouldEqual("senderName 1"); senderEmail.ShouldEqual("*****@*****.**"); giftCardMessage.ShouldEqual("custom message"); }
public void Can_add_and_parse_giftCardAttributes() { string attributes = ""; attributes = _productAttributeParser.AddGiftCardAttribute(attributes, "recipientName 1", "*****@*****.**", "senderName 1", "*****@*****.**", "custom message"); string recipientName, recipientEmail, senderName, senderEmail, giftCardMessage; _productAttributeParser.GetGiftCardAttribute(attributes, out recipientName, out recipientEmail, out senderName, out senderEmail, out giftCardMessage); Assert.AreEqual("recipientName 1", recipientName); Assert.AreEqual("*****@*****.**", recipientEmail); Assert.AreEqual("senderName 1", senderName); Assert.AreEqual("*****@*****.**", senderEmail); Assert.AreEqual("custom message", giftCardMessage); }
public static string AddGiftCardAttribute(this NameValueCollection collection, string attributes, int productId, IProductAttributeParser productAttributeParser, int bundleItemId = 0) { string recipientName = ""; string recipientEmail = ""; string senderName = ""; string senderEmail = ""; string giftCardMessage = ""; string strProductId = ""; if (productId != 0) { strProductId = "_{0}_{1}".FormatWith(productId, bundleItemId); } foreach (string formKey in collection.AllKeys) { if (formKey.Equals(string.Format("giftcard{0}.RecipientName", strProductId), StringComparison.InvariantCultureIgnoreCase)) { recipientName = collection[formKey]; continue; } if (formKey.Equals(string.Format("giftcard{0}.RecipientEmail", strProductId), StringComparison.InvariantCultureIgnoreCase)) { recipientEmail = collection[formKey]; continue; } if (formKey.Equals(string.Format("giftcard{0}.SenderName", strProductId), StringComparison.InvariantCultureIgnoreCase)) { senderName = collection[formKey]; continue; } if (formKey.Equals(string.Format("giftcard{0}.SenderEmail", strProductId), StringComparison.InvariantCultureIgnoreCase)) { senderEmail = collection[formKey]; continue; } if (formKey.Equals(string.Format("giftcard{0}.Message", strProductId), StringComparison.InvariantCultureIgnoreCase)) { giftCardMessage = collection[formKey]; continue; } } return(productAttributeParser.AddGiftCardAttribute(attributes, recipientName, recipientEmail, senderName, senderEmail, giftCardMessage)); }
public static string AddGiftCardAttribute(this NameValueCollection collection, string attributes, int productId, IProductAttributeParser productAttributeParser, int bundleItemId = 0) { string recipientName = ""; string recipientEmail = ""; string senderName = ""; string senderEmail = ""; string giftCardMessage = ""; string strProductId = ""; if (productId != 0) strProductId = "_{0}_{1}".FormatWith(productId, bundleItemId); foreach (string formKey in collection.AllKeys) { if (formKey.Equals(string.Format("giftcard{0}.RecipientName", strProductId), StringComparison.InvariantCultureIgnoreCase)) { recipientName = collection[formKey]; continue; } if (formKey.Equals(string.Format("giftcard{0}.RecipientEmail", strProductId), StringComparison.InvariantCultureIgnoreCase)) { recipientEmail = collection[formKey]; continue; } if (formKey.Equals(string.Format("giftcard{0}.SenderName", strProductId), StringComparison.InvariantCultureIgnoreCase)) { senderName = collection[formKey]; continue; } if (formKey.Equals(string.Format("giftcard{0}.SenderEmail", strProductId), StringComparison.InvariantCultureIgnoreCase)) { senderEmail = collection[formKey]; continue; } if (formKey.Equals(string.Format("giftcard{0}.Message", strProductId), StringComparison.InvariantCultureIgnoreCase)) { giftCardMessage = collection[formKey]; continue; } } return productAttributeParser.AddGiftCardAttribute(attributes, recipientName, recipientEmail, senderName, senderEmail, giftCardMessage); }
public async Task <string> Handle(GetParseProductAttributes request, CancellationToken cancellationToken) { string attributesXml = ""; #region Product attributes var productAttributes = request.Product.ProductAttributeMappings.ToList(); if (request.Product.ProductType == ProductType.BundledProduct) { foreach (var bundle in request.Product.BundleProducts) { var bp = await _productService.GetProductById(bundle.ProductId); if (bp.ProductAttributeMappings.Any()) { productAttributes.AddRange(bp.ProductAttributeMappings); } } } foreach (var attribute in productAttributes) { string controlId = string.Format("product_attribute_{0}", attribute.Id); switch (attribute.AttributeControlType) { case AttributeControlType.DropdownList: case AttributeControlType.RadioList: case AttributeControlType.ColorSquares: case AttributeControlType.ImageSquares: { var ctrlAttributes = request.Form[controlId]; if (!String.IsNullOrEmpty(ctrlAttributes)) { attributesXml = _productAttributeParser.AddProductAttribute(attributesXml, attribute, ctrlAttributes); } } break; case AttributeControlType.Checkboxes: { var ctrlAttributes = request.Form[controlId].ToString(); if (!String.IsNullOrEmpty(ctrlAttributes)) { foreach (var item in ctrlAttributes.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) { if (!String.IsNullOrEmpty(item)) { attributesXml = _productAttributeParser.AddProductAttribute(attributesXml, attribute, item); } } } } break; case AttributeControlType.ReadonlyCheckboxes: { //load read-only (already server-side selected) values var attributeValues = attribute.ProductAttributeValues; foreach (var selectedAttributeId in attributeValues .Where(v => v.IsPreSelected) .Select(v => v.Id) .ToList()) { attributesXml = _productAttributeParser.AddProductAttribute(attributesXml, attribute, selectedAttributeId); } } break; case AttributeControlType.TextBox: case AttributeControlType.MultilineTextbox: { var ctrlAttributes = request.Form[controlId].ToString(); if (!String.IsNullOrEmpty(ctrlAttributes)) { string enteredText = ctrlAttributes.Trim(); attributesXml = _productAttributeParser.AddProductAttribute(attributesXml, attribute, enteredText); } } break; case AttributeControlType.Datepicker: { var day = request.Form[controlId + "_day"]; var month = request.Form[controlId + "_month"]; var year = request.Form[controlId + "_year"]; DateTime?selectedDate = null; try { selectedDate = new DateTime(Int32.Parse(year), Int32.Parse(month), Int32.Parse(day)); } catch { } if (selectedDate.HasValue) { attributesXml = _productAttributeParser.AddProductAttribute(attributesXml, attribute, selectedDate.Value.ToString("D")); } } break; case AttributeControlType.FileUpload: { Guid downloadGuid; Guid.TryParse(request.Form[controlId], out downloadGuid); var download = await _downloadService.GetDownloadByGuid(downloadGuid); if (download != null) { attributesXml = _productAttributeParser.AddProductAttribute(attributesXml, attribute, download.DownloadGuid.ToString()); } } break; default: break; } } //validate conditional attributes (if specified) foreach (var attribute in productAttributes) { var conditionMet = _productAttributeParser.IsConditionMet(request.Product, attribute, attributesXml); if (conditionMet.HasValue && !conditionMet.Value) { attributesXml = _productAttributeParser.RemoveProductAttribute(attributesXml, attribute); } } #endregion #region Gift cards if (request.Product.IsGiftCard) { string recipientName = ""; string recipientEmail = ""; string senderName = ""; string senderEmail = ""; string giftCardMessage = ""; foreach (string formKey in request.Form.Keys) { if (formKey.Equals(string.Format("giftcard_{0}.RecipientName", request.Product.Id), StringComparison.OrdinalIgnoreCase)) { recipientName = request.Form[formKey]; continue; } if (formKey.Equals(string.Format("giftcard_{0}.RecipientEmail", request.Product.Id), StringComparison.OrdinalIgnoreCase)) { recipientEmail = request.Form[formKey]; continue; } if (formKey.Equals(string.Format("giftcard_{0}.SenderName", request.Product.Id), StringComparison.OrdinalIgnoreCase)) { senderName = request.Form[formKey]; continue; } if (formKey.Equals(string.Format("giftcard_{0}.SenderEmail", request.Product.Id), StringComparison.OrdinalIgnoreCase)) { senderEmail = request.Form[formKey]; continue; } if (formKey.Equals(string.Format("giftcard_{0}.Message", request.Product.Id), StringComparison.OrdinalIgnoreCase)) { giftCardMessage = request.Form[formKey]; continue; } } attributesXml = _productAttributeParser.AddGiftCardAttribute(attributesXml, recipientName, recipientEmail, senderName, senderEmail, giftCardMessage); } #endregion return(attributesXml); }