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); }
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); }
/// <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; }
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); }
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); }