public static ShipmentEntity ToDataModel(this Shipment shipment) { if (shipment == null) throw new ArgumentNullException("shipment"); var retVal = new ShipmentEntity(); retVal.InjectFrom(shipment); retVal.Currency = shipment.Currency.ToString(); if (shipment.Properties != null) { retVal.Properties = new ObservableCollection<OperationPropertyEntity>(shipment.Properties.Select(x => x.ToDataModel())); } //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<LineItemEntity>(shipment.Items.Select(x=>x.ToDataModel())); } if (shipment.TaxDetails != null) { retVal.TaxDetails = new ObservableCollection<TaxDetailEntity>(); retVal.TaxDetails.AddRange(shipment.TaxDetails.Select(x => x.ToDataModel())); } return retVal; }
/// <summary> /// Patch CatalogBase type /// </summary> /// <param name="source"></param> /// <param name="target"></param> public static void Patch(this ShipmentEntity source, ShipmentEntity target) { if (target == null) throw new ArgumentNullException("target"); source.Patch((OperationEntity)target); var patchInjectionPolicy = new PatchInjection<ShipmentEntity>(x => x.FulfillmentCenterId, x => x.OrganizationId, x => x.EmployeeId, x=> x.Height, x=>x.Length, x=> x.Width, x=>x.MeasureUnit, x=>x.WeightUnit, x=> x.Weight); target.InjectFrom(patchInjectionPolicy, source); if (!source.InPayments.IsNullCollection()) { source.InPayments.Patch(target.InPayments, (sourcePayment, targetPayment) => sourcePayment.Patch(targetPayment)); } if(!source.Items.IsNullCollection()) { source.Items.Patch(target.Items, (sourceItem, targetItem) => sourceItem.Patch(targetItem)); } if (!source.Discounts.IsNullCollection()) { source.Discounts.Patch(target.Discounts, new DiscountComparer(), (sourceDiscount, targetDiscount) => sourceDiscount.Patch(targetDiscount)); } if (!source.Addresses.IsNullCollection()) { source.Addresses.Patch(target.Addresses, new AddressComparer(), (sourceAddress, targetAddress) => sourceAddress.Patch(targetAddress)); } 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 ShipmentEntity ToDataModel(this Shipment shipment, CustomerOrderEntity orderEntity, PrimaryKeyResolvingMap pkMap) { if (shipment == null) throw new ArgumentNullException("shipment"); var retVal = new ShipmentEntity(); retVal.InjectFrom(shipment); pkMap.AddPair(shipment, retVal); 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, pkMap))); } if (shipment.Packages != null) { retVal.Packages = new ObservableCollection<ShipmentPackageEntity>(shipment.Packages.Select(x => x.ToDataModel(orderEntity, pkMap))); } if (shipment.TaxDetails != null) { retVal.TaxDetails = new ObservableCollection<TaxDetailEntity>(); retVal.TaxDetails.AddRange(shipment.TaxDetails.Select(x => x.ToDataModel())); } return retVal; }