public static ShipmentEntity ToDataModel(this Shipment shipment, CustomerOrderEntity orderEntity)
        {
            if (shipment == null)
            {
                throw new ArgumentNullException("shipment");
            }

            var retVal = new ShipmentEntity();

            retVal.InjectFrom(shipment);

            retVal.Currency = shipment.Currency.ToString();


            //Allow to empty address
            retVal.Addresses = new ObservableCollection <AddressEntity>();
            if (shipment.DeliveryAddress != null)
            {
                retVal.Addresses = new ObservableCollection <AddressEntity>(new AddressEntity[] { shipment.DeliveryAddress.ToDataModel() });
            }
            if (shipment.Items != null)
            {
                retVal.Items = new ObservableCollection <ShipmentItemEntity>(shipment.Items.Select(x => x.ToDataModel(orderEntity)));
            }
            if (shipment.Packages != null)
            {
                retVal.Packages = new ObservableCollection <ShipmentPackageEntity>(shipment.Packages.Select(x => x.ToDataModel(orderEntity)));
            }
            if (shipment.TaxDetails != null)
            {
                retVal.TaxDetails = new ObservableCollection <TaxDetailEntity>();
                retVal.TaxDetails.AddRange(shipment.TaxDetails.Select(x => x.ToDataModel()));
            }
            return(retVal);
        }
		public static CustomerOrder ToCoreModel(this CustomerOrderEntity entity, IEnumerable<ShippingMethod> shippingMethods, IEnumerable<PaymentMethod> paymentMethods)
		{
			if (entity == null)
				throw new ArgumentNullException("entity");

			var retVal = new CustomerOrder();

			retVal.InjectFrom(entity);

			retVal.Currency = entity.Currency;

			if(entity.Discounts != null && entity.Discounts.Any())
			{
				retVal.Discount = entity.Discounts.First().ToCoreModel();
			}
			if (entity.Items != null)
			{
				retVal.Items = entity.Items.Select(x => x.ToCoreModel()).ToList();
			}
			if (entity.Addresses != null)
			{
				retVal.Addresses = entity.Addresses.Select(x => x.ToCoreModel()).ToList();
			}
			if (entity.Shipments != null)
			{
				retVal.Shipments = entity.Shipments.Select(x => x.ToCoreModel(shippingMethods, paymentMethods)).ToList();
			}
			if (entity.InPayments != null)
			{
				retVal.InPayments = entity.InPayments.Select(x => x.ToCoreModel(paymentMethods)).ToList();
			}
			retVal.TaxDetails = entity.TaxDetails.Select(x => x.ToCoreModel()).ToList();
			return retVal;
		}
        public static ShipmentItemEntity ToDataModel(this ShipmentItem shipmentItem, CustomerOrderEntity orderEntity, PrimaryKeyResolvingMap pkMap)
        {
            if (shipmentItem == null)
            {
                throw new ArgumentNullException("shipmentItem");
            }

            var retVal = new ShipmentItemEntity();

            pkMap.AddPair(shipmentItem, retVal);
            retVal.InjectFrom(shipmentItem);

            //Try to find cart line item by shipment item
            if (!String.IsNullOrEmpty(shipmentItem.LineItemId))
            {
                retVal.LineItem = orderEntity.Items.FirstOrDefault(x => x.Id == shipmentItem.LineItemId);
            }
            if (retVal.LineItem == null && shipmentItem.LineItem != null)
            {
                retVal.LineItem = orderEntity.Items.FirstOrDefault(x => x.Id == shipmentItem.LineItem.Id);
            }
            if (retVal.LineItem == null && shipmentItem.LineItem != null)
            {
                retVal.LineItem = orderEntity.Items.FirstOrDefault(x => x.ProductId == shipmentItem.LineItem.ProductId);
            }
            if (retVal.LineItem != null && !String.IsNullOrEmpty(retVal.LineItem.Id))
            {
                retVal.LineItemId = retVal.LineItem.Id;
                retVal.LineItem   = null;
            }
            return(retVal);
        }
Example #4
0
        public static ShipmentItemEntity ToDataModel(this ShipmentItem shipmentItem, CustomerOrderEntity orderEntity)
        {
            if (shipmentItem == null)
            {
                throw new ArgumentNullException("shipmentItem");
            }

            var retVal = new ShipmentItemEntity();

            retVal.InjectFrom(shipmentItem);

            if (shipmentItem.LineItem != null)
            {
                retVal.LineItem = orderEntity.Items.FirstOrDefault(x => x.ProductId == shipmentItem.ProductId);
            }
            return(retVal);
        }
        public static CustomerOrderEntity ToDataModel(this CustomerOrder order)
        {
            if (order == null)
            {
                throw new ArgumentNullException("order");
            }

            var retVal = new CustomerOrderEntity();

            retVal.InjectFrom(order);

            retVal.Currency = order.Currency.ToString();

            if (order.Properties != null)
            {
                retVal.Properties = new ObservableCollection <OperationPropertyEntity>(order.Properties.Select(x => x.ToDataModel()));
            }

            if (order.Addresses != null)
            {
                retVal.Addresses = new ObservableCollection <AddressEntity>(order.Addresses.Select(x => x.ToDataModel()));
            }
            if (order.Items != null)
            {
                retVal.Items = new ObservableCollection <LineItemEntity>(order.Items.Select(x => x.ToDataModel()));
            }
            if (order.Shipments != null)
            {
                retVal.Shipments = new ObservableCollection <ShipmentEntity>(order.Shipments.Select(x => x.ToDataModel()));
            }
            if (order.InPayments != null)
            {
                retVal.InPayments = new ObservableCollection <PaymentInEntity>(order.InPayments.Select(x => x.ToDataModel()));
            }
            if (order.Discount != null)
            {
                retVal.Discounts = new ObservableCollection <DiscountEntity>(new DiscountEntity[] { order.Discount.ToDataModel() });
            }
            if (order.TaxDetails != null)
            {
                retVal.TaxDetails = new ObservableCollection <TaxDetailEntity>();
                retVal.TaxDetails.AddRange(order.TaxDetails.Select(x => x.ToDataModel()));
            }
            return(retVal);
        }
        private ObservableChangeTracker GetChangeTracker(IRepository repository, CustomerOrderEntity customerOrderEntity)
        {
            var retVal = new ObservableChangeTracker
            {
                RemoveAction = (x) =>
                {
                    repository.Remove(x);
                },
                AddAction = (x) =>
                {
                    var address  = x as AddressEntity;
                    var shipment = x as ShipmentEntity;
                    var lineItem = x as LineItemEntity;

                    if (address != null)
                    {
                        address.CustomerOrder = customerOrderEntity;
                    }
                    if (shipment != null)
                    {
                        foreach (var shipmentItem in shipment.Items)
                        {
                            var orderLineItem = customerOrderEntity.Items.FirstOrDefault(item => item.Id == shipmentItem.Id);
                            if (orderLineItem != null)
                            {
                                orderLineItem.Shipment = shipment;
                            }
                            else
                            {
                                shipmentItem.CustomerOrder = customerOrderEntity;
                            }
                        }
                        shipment.Items = new NullCollection <LineItemEntity>();
                    }
                    if (lineItem != null)
                    {
                        lineItem.CustomerOrder   = customerOrderEntity;
                        lineItem.CustomerOrderId = customerOrderEntity.Id;
                    }
                    repository.Add(x);
                }
            };

            return(retVal);
        }
Example #7
0
        /// <summary>
        /// Patch CatalogBase type
        /// </summary>
        /// <param name="source"></param>
        /// <param name="target"></param>
        public static void Patch(this CustomerOrderEntity source, CustomerOrderEntity target)
        {
            if (target == null)
            {
                throw new ArgumentNullException("target");
            }

            source.Patch((OperationEntity)target);

            var patchInjectionPolicy = new PatchInjection <CustomerOrderEntity>(x => x.CustomerId, x => x.StoreId,
                                                                                x => x.OrganizationId, x => x.EmployeeId);

            target.InjectFrom(patchInjectionPolicy, source);

            if (!source.Addresses.IsNullCollection())
            {
                source.Addresses.Patch(target.Addresses, new AddressComparer(), (sourceItem, targetItem) => sourceItem.Patch(targetItem));
            }

            if (!source.Shipments.IsNullCollection())
            {
                source.Shipments.Patch(target.Shipments, (sourceShipment, targetShipment) => sourceShipment.Patch(targetShipment));
            }

            if (!source.Items.IsNullCollection())
            {
                source.Items.Patch(target.Items, (sourceItem, targetItem) => sourceItem.Patch(targetItem));
            }

            if (!source.InPayments.IsNullCollection())
            {
                source.InPayments.Patch(target.InPayments, (sourcePayment, targetPayment) => sourcePayment.Patch(targetPayment));
            }

            if (!source.Discounts.IsNullCollection())
            {
                source.Discounts.Patch(target.Discounts, new DiscountComparer(), (sourceDiscount, targetDiscount) => sourceDiscount.Patch(targetDiscount));
            }
            if (!source.TaxDetails.IsNullCollection())
            {
                var taxDetailComparer = AnonymousComparer.Create((TaxDetailEntity x) => x.Name);
                source.TaxDetails.Patch(target.TaxDetails, taxDetailComparer, (sourceTaxDetail, targetTaxDetail) => sourceTaxDetail.Patch(targetTaxDetail));
            }
        }
        public static PaymentInEntity ToDataModel(this PaymentIn paymentIn, CustomerOrderEntity orderEntity)
        {
            if (paymentIn == null)
            {
                throw new ArgumentNullException("paymentIn");
            }

            var retVal = new PaymentInEntity();

            retVal.InjectFrom(paymentIn);

            retVal.Currency = paymentIn.Currency.ToString();
            retVal.Status   = paymentIn.PaymentStatus.ToString();


            if (paymentIn.BillingAddress != null)
            {
                retVal.Addresses = new ObservableCollection <AddressEntity>(new AddressEntity[] { paymentIn.BillingAddress.ToDataModel() });
            }
            return(retVal);
        }
        public static CustomerOrder ToCoreModel(this CustomerOrderEntity entity)
        {
            if (entity == null)
            {
                throw new ArgumentNullException("entity");
            }

            var retVal = new CustomerOrder();

            retVal.InjectFrom(entity);

            retVal.Currency = (CurrencyCodes)Enum.Parse(typeof(CurrencyCodes), entity.Currency);

            if (entity.Properties != null)
            {
                retVal.Properties = entity.Properties.Select(x => x.ToCoreModel()).ToList();
            }
            if (entity.Discounts != null && entity.Discounts.Any())
            {
                retVal.Discount = entity.Discounts.First().ToCoreModel();
            }
            if (entity.Items != null)
            {
                retVal.Items = entity.Items.Select(x => x.ToCoreModel()).ToList();
            }
            if (entity.Addresses != null)
            {
                retVal.Addresses = entity.Addresses.Select(x => x.ToCoreModel()).ToList();
            }
            if (entity.Shipments != null)
            {
                retVal.Shipments = entity.Shipments.Select(x => x.ToCoreModel()).ToList();
            }
            if (entity.InPayments != null)
            {
                retVal.InPayments = entity.InPayments.Select(x => x.ToCoreModel()).ToList();
            }
            retVal.TaxDetails = entity.TaxDetails.Select(x => x.ToCoreModel()).ToList();
            return(retVal);
        }
		public static CustomerOrderEntity ToDataModel(this CustomerOrder order, PrimaryKeyResolvingMap pkMap)
		{
			if (order == null)
				throw new ArgumentNullException("order");

			var retVal = new CustomerOrderEntity();
            pkMap.AddPair(order, retVal);
            retVal.InjectFrom(order);

			retVal.Currency = order.Currency.ToString();

	
			if(order.Addresses != null)
			{
				retVal.Addresses = new ObservableCollection<AddressEntity>(order.Addresses.Select(x=>x.ToDataModel()));
			}
			if(order.Items != null)
			{
				retVal.Items = new ObservableCollection<LineItemEntity>(order.Items.Select(x=>x.ToDataModel(pkMap)));
			}
			if(order.Shipments != null)
			{
				retVal.Shipments = new ObservableCollection<ShipmentEntity>(order.Shipments.Select(x => x.ToDataModel(retVal, pkMap)));
			}
			if(order.InPayments != null)
			{
				retVal.InPayments = new ObservableCollection<PaymentInEntity>(order.InPayments.Select(x => x.ToDataModel(retVal, pkMap)));
			}
			if(order.Discount != null)
			{
				retVal.Discounts = new ObservableCollection<DiscountEntity>(new DiscountEntity[] { order.Discount.ToDataModel() });
			}
			if (order.TaxDetails != null)
			{
				retVal.TaxDetails = new ObservableCollection<TaxDetailEntity>();
				retVal.TaxDetails.AddRange(order.TaxDetails.Select(x => x.ToDataModel()));
			}
			return retVal;
		}
Example #11
0
        public static CustomerOrderEntity GetResetedOrder()
        {
            var orderId = "orderId";

            var order = new CustomerOrderEntity
            {
                Id                   = orderId,
                CustomerId           = "customerId",
                StoreId              = "storeId",
                Number               = "number",
                Currency             = "usd",
                PaymentTotal         = 1,
                PaymentTotalWithTax  = 1,
                ShippingTotalWithTax = 1,
                DiscountAmount       = 1,
                DiscountTotal        = 1,
                DiscountTotalWithTax = 1,
                HandlingTotal        = 1,
                HandlingTotalWithTax = 1,
                ShippingTotal        = 1,
                SubTotal             = 1,
                SubTotalWithTax      = 1,
                Sum                  = 1,
                TaxPercentRate       = 1,
                TaxTotal             = 1,
                Total                = 1
            };

            var item = new LineItemEntity
            {
                CustomerOrderId = orderId,
                Id                    = "itemId",
                Currency              = "usd",
                ProductId             = "productId",
                CatalogId             = "catalogId",
                Sku                   = "sku",
                Name                  = "itemName",
                Price                 = 1,
                DiscountAmount        = 1,
                TaxPercentRate        = 1,
                TaxTotal              = 1,
                DiscountAmountWithTax = 1,
                PriceWithTax          = 1,
            };

            var payment = new PaymentInEntity
            {
                CustomerOrderId = orderId,
                Id                    = "paymentId",
                CustomerId            = "customerId",
                Number                = "number",
                Currency              = "usd",
                Price                 = 1,
                DiscountAmount        = 1,
                DiscountAmountWithTax = 1,
                PriceWithTax          = 1,
                TaxPercentRate        = 1,
                TaxTotal              = 1,
                Total                 = 1,
                Sum                   = 1,
                TotalWithTax          = 1,
            };

            var shipment = new ShipmentEntity
            {
                CustomerOrderId = orderId,
                Id                    = "shipmentId",
                Number                = "number",
                Currency              = "usd",
                Price                 = 1,
                DiscountAmount        = 1,
                DiscountAmountWithTax = 1,
                PriceWithTax          = 1,
                Sum                   = 1,
                TaxPercentRate        = 1,
                TaxTotal              = 1,
                Total                 = 1,
                TotalWithTax          = 1,
            };

            order.ResetPrices();
            item.ResetPrices();
            payment.ResetPrices();
            shipment.ResetPrices();

            order.Items = new ObservableCollection <LineItemEntity> {
                item
            };
            order.InPayments = new ObservableCollection <PaymentInEntity> {
                payment
            };
            order.Shipments = new ObservableCollection <ShipmentEntity> {
                shipment
            };

            return(order);
        }
Example #12
0
        public static ShipmentPackageEntity ToDataModel(this ShipmentPackage package, CustomerOrderEntity orderEntity, PrimaryKeyResolvingMap pkMap)
        {
            if (package == null)
            {
                throw new ArgumentNullException("package");
            }

            var retVal = new ShipmentPackageEntity();

            pkMap.AddPair(package, retVal);
            retVal.InjectFrom(package);

            if (package.Items != null)
            {
                retVal.Items = new ObservableCollection <ShipmentItemEntity>(package.Items.Select(x => x.ToDataModel(orderEntity, pkMap)));
            }

            return(retVal);
        }