Example #1
0
        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)));
        }
Example #2
0
 /// <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());
 }
Example #6
0
        /// <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);
        }
Example #8
0
        /// <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);
        }
Example #11
0
        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)));
        }
Example #12
0
        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"));
        }
Example #14
0
        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);

        }
Example #18
0
        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));
     }
 }
Example #22
0
        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);
        }
Example #23
0
        /// <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());
 }