public void Can_Serialize_A_LineItemCollection_And_Store_In_ExtendedData() { //// Arrange var extendedData = new ExtendedDataCollection(); //// Act extendedData.AddLineItemCollection(_shipment.Items); Console.Write(extendedData.GetValue(Constants.ExtendedDataKeys.LineItemCollection)); //// Assert Assert.DoesNotThrow(() => XDocument.Parse(extendedData.GetValue(Constants.ExtendedDataKeys.LineItemCollection))); }
/// <summary> /// Utility extension the deserializes BraintreeProviderSettings from the ExtendedDataCollection /// </summary> /// <param name="extendedData"> /// The extended data. /// </param> /// <returns> /// The <see cref="BraintreeProviderSettings"/>. /// </returns> public static BraintreeProviderSettings GetBrainTreeProviderSettings(this ExtendedDataCollection extendedData) { return(extendedData.ContainsKey(Constants.ExtendedDataKeys.BraintreeProviderSettings) ? JsonConvert.DeserializeObject <BraintreeProviderSettings>( extendedData.GetValue(Constants.ExtendedDataKeys.BraintreeProviderSettings)) : new BraintreeProviderSettings()); }
/// <summary> /// Deserializes and returns a <see cref="Transaction"/> from the extended data collection /// </summary> /// <param name="extendedData"> /// The extended data. /// </param> /// <returns> /// The <see cref="Transaction"/>. /// </returns> public static TransactionReference GetBraintreeTransaction(this ExtendedDataCollection extendedData) { return(extendedData.ContainsKey(Constants.Braintree.ExtendedDataKeys.BraintreeTransaction) ? JsonConvert.DeserializeObject <TransactionReference>( extendedData.GetValue(Constants.Braintree.ExtendedDataKeys.BraintreeTransaction)) : null); }
/// <summary> /// The product tax amount. /// </summary> /// <param name="extendedData"> /// The extended data. /// </param> /// <returns> /// The <see cref="decimal"/>. /// </returns> public static decimal ProductSalePriceTaxAmount(this ExtendedDataCollection extendedData) { return(!extendedData.TaxIncludedInProductPrice() ? 0M : extendedData.ContainsKey(Constants.ExtendedDataKeys.ProductSalePriceTaxAmount) ? extendedData.GetValue(Constants.ExtendedDataKeys.ProductSalePriceTaxAmount).AsDecimal() : 0M); }
/// <summary> /// The product pre tax sale price. /// </summary> /// <param name="extendedData"> /// The extended data. /// </param> /// <returns> /// The <see cref="decimal"/>. /// </returns> public static decimal ProductPreTaxSalePrice(this ExtendedDataCollection extendedData) { return(!extendedData.TaxIncludedInProductPrice() ? extendedData.GetPriceValue() : extendedData.ContainsKey(Constants.ExtendedDataKeys.ProductSalePriceNoTax) ? extendedData.GetValue(Constants.ExtendedDataKeys.ProductSalePriceNoTax).AsDecimal() : extendedData.GetPriceValue()); }
/// <summary> /// Get the processor settings from the extended data collection /// </summary> /// <param name="extendedData">The <see cref="ExtendedDataCollection"/></param> /// <returns>The deserialized <see cref="QuickPayProviderSettings"/></returns> public static QuickPayProviderSettings GetProviderSettings(this ExtendedDataCollection extendedData) { if (!extendedData.ContainsKey(Constants.ExtendedDataKeys.ProcessorSettings)) { return(new QuickPayProviderSettings()); } return(JsonConvert.DeserializeObject <QuickPayProviderSettings>(extendedData.GetValue(Constants.ExtendedDataKeys.ProcessorSettings))); }
public static NoteDisplay GetNote(this ExtendedDataCollection extendedData) { if (!extendedData.ContainsKey(Constants.ExtendedDataKeys.Note)) { return(null); } var attempt = SerializationHelper.DeserializeXml <NoteDisplay>(extendedData.GetValue(Constants.ExtendedDataKeys.Note)); return(attempt.Success ? attempt.Result : null); }
/// <summary> /// Utility to get SMTP Gateway Provider settings from the <see cref="ExtendedDataCollection"/> /// </summary> /// <param name="extendedData">The <see cref="ExtendedDataCollection"/></param> public static SmtpNotificationGatewayProviderSettings GetSmtpProviderSettings(this ExtendedDataCollection extendedData) { if (!extendedData.ContainsKey(Constants.ExtendedDataKeys.SmtpProviderSettings)) { return(new SmtpNotificationGatewayProviderSettings()); } return (JsonConvert.DeserializeObject <SmtpNotificationGatewayProviderSettings>( extendedData.GetValue(Constants.ExtendedDataKeys.SmtpProviderSettings))); }
/// <summary> /// Gets an <see cref="IAddress"/> from the <see cref="ExtendedDataCollection"/> /// </summary> /// <param name="extendedData"> /// The extended Data. /// </param> /// <param name="dictionaryKey"> /// The dictionary Key. /// </param> /// <returns> /// The <see cref="IAddress"/>. /// </returns> public static IAddress GetAddress(this ExtendedDataCollection extendedData, string dictionaryKey) { if (!extendedData.ContainsKey(dictionaryKey)) { return(null); } var attempt = SerializationHelper.DeserializeXml <Address>(extendedData.GetValue(dictionaryKey)); return(attempt.Success ? attempt.Result : null); }
/// <summary> /// Gets an <see cref="IAddress"/> from the <see cref="ExtendedDataCollection"/> /// </summary> /// <param name="extendedData"> /// The extended Data. /// </param> /// <param name="dictionaryKey"> /// The dictionary Key. /// </param> /// <returns> /// The <see cref="IAddress"/>. /// </returns> public static IAddress GetAddress(this ExtendedDataCollection extendedData, string dictionaryKey) { if (!extendedData.ContainsKey(dictionaryKey)) { return(null); } // Get the address data from the extendedData var addressData = extendedData.GetValue(dictionaryKey); // Firstly try JSON convert if (IsValidJson(addressData)) { return(JsonConvert.DeserializeObject <Address>(addressData)); } var attempt = SerializationHelper.DeserializeXml <Address>(extendedData.GetValue(dictionaryKey)); return(attempt.Success ? attempt.Result : null); }
public void Can_Serialize_An_Address_And_Store_In_ExtendedDataCollection() { //// Arrange var extendedData = new ExtendedDataCollection(); //// Act extendedData.AddAddress(_address, AddressType.Billing); Console.Write(extendedData.SerializeToXml()); //// Assert Assert.DoesNotThrow(() => XDocument.Parse(extendedData.GetValue(Constants.ExtendedDataKeys.BillingAddress))); }
public void Can_Deserialize_ExtendedData_To_Dictionary() { //// Arrange var persisted = @"<?xml version=""1.0"" encoding=""utf-16""?><extendedData><key3>value3</key3><key2>value2</key2><key1>value1</key1><key5>value5</key5><key4>value4</key4></extendedData>"; //// Act var extended = new ExtendedDataCollection(persisted); //// Assert Assert.IsTrue(5 == extended.Count); Assert.AreEqual("value3", extended.GetValue("key3")); }
public void Can_Deserialize_ExtendedData_To_Dictionary() { //// Arrange var persisted = @"<?xml version=""1.0"" encoding=""utf-16""?><extendedData><key3>value3</key3><key2>value2</key2><key1>value1</key1><key5>value5</key5><key4>value4</key4></extendedData>"; //// Act var extended = new ExtendedDataCollection(persisted); //// Assert Assert.IsTrue(5 == extended.Count); Assert.AreEqual("value3", extended.GetValue("key3")); }
public void Can_Verify_A_Value_Can_Be_Retrieved_By_A_Key() { //// Arrange const string key = "key"; const string value = "Yep"; //// Act _extendedData.SetValue(key, value); var retrieved = _extendedData.GetValue(key); //// Assert Assert.AreEqual(value, retrieved); }
public static bool GetPayPalRequestIsAjaxRequest(this ExtendedDataCollection extendedData) { bool value; if (bool.TryParse(extendedData.GetValue("paypalExpressAjax"), out value)) { return(value); } else { return(false); } }
/// <summary> /// Gets a list of all keys with a given key prefix. /// </summary> /// <param name="extendedData"> /// The extended data. /// </param> /// <param name="prefix"> /// The prefix. /// </param> /// <returns> /// The collection of values that match the prefix. /// </returns> /// <remarks> /// Introduced for customer context conversions. /// </remarks> internal static IEnumerable <KeyValuePair <string, string> > GetItemsByKeyPrefix(this ExtendedDataCollection extendedData, string prefix) { var values = new List <KeyValuePair <string, string> >(); foreach (var item in extendedData.Keys) { if (item.StartsWith(prefix)) { values.Add(new KeyValuePair <string, string>(item, extendedData.GetValue(item))); } } return(values); }
public void Can_Deserialize_ProviderSettings_FromCamelCased_Json() { //// Arrange var extendedData = new ExtendedDataCollection(); var settings = TestHelper.GetBraintreeProviderSettings(); extendedData.SaveProviderSettings(settings); //// Act var json = extendedData.GetValue(Constants.ExtendedDataKeys.BraintreeProviderSettings); Assert.IsNotNullOrEmpty(json); var deserialized = JsonConvert.DeserializeObject<BraintreeProviderSettings>(json); Assert.NotNull(deserialized); }
public void Can_Deserialize_A_LineItemCollection_From_ExtendedDataCollection() { //// Arrange var extendedData = new ExtendedDataCollection(); extendedData.AddLineItemCollection(_shipment.Items); Console.Write(extendedData.GetValue(Constants.ExtendedDataKeys.LineItemCollection)); //// Act var lineItemCollection = extendedData.GetLineItemCollection <ItemCacheLineItem>(); //// Assert Assert.NotNull(lineItemCollection); Assert.IsTrue(lineItemCollection.Any()); }
/// <summary> /// Utility extension the deserializes BraintreeProviderSettings from the ExtendedDataCollection /// </summary> /// <param name="extendedData"> /// The extended data. /// </param> /// <returns> /// The <see cref="BraintreeProviderSettings"/>. /// </returns> public static BraintreeProviderSettings GetBrainTreeProviderSettings(this ExtendedDataCollection extendedData) { BraintreeProviderSettings settings; if (extendedData.ContainsKey(Constants.ExtendedDataKeys.BraintreeProviderSettings)) { var json = extendedData.GetValue(Constants.ExtendedDataKeys.BraintreeProviderSettings); settings = JsonConvert.DeserializeObject <BraintreeProviderSettings>(json); } else { settings = new BraintreeProviderSettings(); } return(settings); }
/// <summary> /// Gets the <see cref="PayPalProviderSettings"/>. /// </summary> /// <param name="extendedData"> /// The extended data. /// </param> /// <returns> /// The <see cref="PayPalProviderSettings"/>. /// </returns> public static PayPalProviderSettings GetPayPalProviderSettings(this ExtendedDataCollection extendedData) { PayPalProviderSettings settings; if (extendedData.ContainsKey(Constants.PayPal.ExtendedDataKeys.ProviderSettings)) { var json = extendedData.GetValue(Constants.PayPal.ExtendedDataKeys.ProviderSettings); settings = JsonConvert.DeserializeObject <PayPalProviderSettings>(json); } else { settings = new PayPalProviderSettings(); } return(settings); }
/// <summary> /// Gets a typed value. /// </summary> /// <param name="extendedData"> /// The extended data. /// </param> /// <param name="key"> /// The key. /// </param> /// <typeparam name="T"> /// The type to be returned. /// </typeparam> /// <returns> /// The typed value. /// </returns> public static T GetValue <T>(this ExtendedDataCollection extendedData, string key) where T : class, new() { try { var value = extendedData.GetValue(key); return(!value.IsNullOrWhiteSpace() ? JsonConvert.DeserializeObject <T>(value) : default(T)); } catch (Exception ex) { var logData = MultiLogger.GetBaseLoggingData(); logData.AddCategory("ExtendedData"); MultiLogHelper.WarnWithException(typeof(Extensions), "Failed to deserialize value. Proceding with operation returning default T.", ex, logData); return(default(T)); } }
public void Can_Deserialize_ProviderSettings_FromCamelCased_Json() { //// Arrange var extendedData = new ExtendedDataCollection(); var settings = TestHelper.GetBraintreeProviderSettings(); extendedData.SaveProviderSettings(settings); //// Act var json = extendedData.GetValue(Constants.ExtendedDataKeys.BraintreeProviderSettings); Assert.IsNotNullOrEmpty(json); var deserialized = JsonConvert.DeserializeObject <BraintreeProviderSettings>(json); Assert.NotNull(deserialized); }
/// <summary> /// Gets a <see cref="OfferSettingsDisplay"/> from an <see cref="ExtendedDataCollection"/>. /// </summary> /// <param name="extendedData"> /// The extended data. /// </param> /// <returns> /// The <see cref="OfferSettingsDisplay"/>. /// </returns> internal static OfferSettingsDisplay GetOfferSettingsDisplay(this ExtendedDataCollection extendedData) { if (!extendedData.ContainsCoupon()) { return(null); } try { return (JsonConvert.DeserializeObject <OfferSettingsDisplay>( extendedData.GetValue(Core.Constants.ExtendedDataKeys.CouponReward))); } catch (Exception ex) { LogHelper.Error(typeof(CouponExtendedDataExtensions), "Failed to deserialize coupon from ExtendedDataCollection", ex); throw; } }
/// <summary> /// Creates an instance of <see cref="LineItemCollection"/> from a serialized collection in the ExtendedDataCollection /// </summary> /// <typeparam name="T">The type of the <see cref="ILineItem"/></typeparam> /// <param name="extendedData">The extended data collection</param> /// <returns><see cref="LineItemCollection"/></returns> public static LineItemCollection GetLineItemCollection <T>(this ExtendedDataCollection extendedData) where T : LineItemBase { if (!extendedData.ContainsKey(Constants.ExtendedDataKeys.LineItemCollection)) { return(null); } var xdoc = XDocument.Parse(extendedData.GetValue(Constants.ExtendedDataKeys.LineItemCollection)); var lineItemCollection = new LineItemCollection(); foreach (var element in xdoc.Descendants(Constants.ExtendedDataKeys.LineItem)) { var dictionary = GetLineItemXmlValues(element.ToString()); var extendData = new ExtendedDataCollection(dictionary[Constants.ExtendedDataKeys.ExtendedData]); var ctrValues = new object[] { new Guid(dictionary[Constants.ExtendedDataKeys.LineItemTfKey]), dictionary[Constants.ExtendedDataKeys.Name], dictionary[Constants.ExtendedDataKeys.Sku], int.Parse(dictionary[Constants.ExtendedDataKeys.Quantity]), decimal.Parse(dictionary[Constants.ExtendedDataKeys.Price], NumberStyles.Any, CultureInfo.InvariantCulture), new ExtendedDataCollection(dictionary[Constants.ExtendedDataKeys.ExtendedData]) }; var attempt = ActivatorHelper.CreateInstance <LineItemBase>(typeof(T).FullName, ctrValues); if (!attempt.Success) { MultiLogHelper.Error <LineItemCollection>("Failed to instantiate a LineItemCollection from ExtendedData", attempt.Exception); throw attempt.Exception; } attempt.Result.ContainerKey = new Guid(dictionary[Constants.ExtendedDataKeys.ContainerKey]); lineItemCollection.Add(attempt.Result); } return(lineItemCollection); }
/// <summary> /// Returns the merchShipMethodKey value as a GUID /// </summary> /// <param name="extendedData"> /// The extended Data. /// </param> /// <returns> /// The GUID based 'Key' of the <see cref="IShipMethod"/> /// </returns> public static Guid GetShipMethodKey(this ExtendedDataCollection extendedData) { return(extendedData.GetValue(Constants.ExtendedDataKeys.ShipMethodKey).AsGuid()); }
/// <summary> /// returns the "merchWeight" value /// </summary> /// <param name="extendedData">The <see cref="ExtendedDataCollection"/></param> /// <returns>The barcode</returns> public static string GetBarcodeValue(this ExtendedDataCollection extendedData) { return(extendedData.GetValue(Constants.ExtendedDataKeys.Barcode)); }
/// <summary> /// returns the "merchLength" value /// </summary> /// <param name="extendedData">The <see cref="ExtendedDataCollection"/></param> /// <returns>The length</returns> public static decimal GetLengthValue(this ExtendedDataCollection extendedData) { return(extendedData.GetValue(Constants.ExtendedDataKeys.Length).AsDecimal()); }
/// <summary> /// Returns the "merchManufacturerModelNumber" value /// </summary> /// <param name="extendedData"> /// The extended Data. /// </param> /// <returns> /// The manufacturers model number /// </returns> public static string GetManufacturerModelNumberValue(this ExtendedDataCollection extendedData) { return(extendedData.GetValue(Constants.ExtendedDataKeys.ManufacturerModelNumber)); }
public void Can_Serialize_A_LineItemCollection_And_Store_In_ExtendedData() { //// Arrange var extendedData = new ExtendedDataCollection(); //// Act extendedData.AddLineItemCollection(_shipment.Items); Console.Write(extendedData.GetValue(Constants.ExtendedDataKeys.LineItemCollection)); //// Assert Assert.DoesNotThrow(() => XDocument.Parse(extendedData.GetValue(Constants.ExtendedDataKeys.LineItemCollection))); }
/// <summary> /// Returns the "merchTrackInventory" value /// </summary> /// <param name="extendedData">The <see cref="ExtendedDataCollection"/></param> /// <returns>The Umbraco media Id</returns> public static int GetDownloadMediaIdValue(this ExtendedDataCollection extendedData) { return(extendedData.GetValue(Constants.ExtendedDataKeys.DownloadMediaId).AsInt()); }
/// <summary> /// Return the WarehouseCatalogKey /// </summary> /// <param name="extendedData"> /// The extended Data. /// </param> /// <returns> /// The GUID warehouse catalog key. /// </returns> public static Guid GetWarehouseCatalogKey(this ExtendedDataCollection extendedData) { return(extendedData.GetValue(Constants.ExtendedDataKeys.WarehouseCatalogKey).AsGuid()); }
public void Can_Serialize_An_Address_And_Store_In_ExtendedDataCollection() { //// Arrange var extendedData = new ExtendedDataCollection(); //// Act extendedData.AddAddress(_address, AddressType.Billing); Console.Write(extendedData.SerializeToXml()); //// Assert Assert.DoesNotThrow(() => XDocument.Parse(extendedData.GetValue(Constants.ExtendedDataKeys.BillingAddress))); }
/// <summary> /// Returns the "merchOnSale" value as a boolean /// </summary> /// <param name="extendedData"> /// The extended Data. /// </param> /// <returns> /// A value indicating whether or not the item is on sale. /// </returns> public static bool GetOnSaleValue(this ExtendedDataCollection extendedData) { return(extendedData.GetValue(Constants.ExtendedDataKeys.OnSale).AsBool()); }
public void Can_Deserialize_A_LineItemCollection_From_ExtendedDataCollection() { //// Arrange var extendedData = new ExtendedDataCollection(); extendedData.AddLineItemCollection(_shipment.Items); Console.Write(extendedData.GetValue(Constants.ExtendedDataKeys.LineItemCollection)); //// Act var lineItemCollection = extendedData.GetLineItemCollection<ItemCacheLineItem>(); //// Assert Assert.NotNull(lineItemCollection); Assert.IsTrue(lineItemCollection.Any()); }
/// <summary> /// Returns the "merchSalePrice" value /// </summary> /// <param name="extendedData"> /// The extended Data. /// </param> /// <returns> /// The sales price /// </returns> public static decimal GetSalePriceValue(this ExtendedDataCollection extendedData) { return(extendedData.GetValue(Constants.ExtendedDataKeys.SalePrice).AsDecimal()); }