public void UpdateOfPaymentItems() { var selectedPaymentShippingItems = new List <PaymentMethodShippingMethod>(); foreach (var selectedPaymentMethod in SelectedPaymentMethods) { var itemToAdd = new PaymentMethodShippingMethod { PaymentMethodId = selectedPaymentMethod.PaymentMethodId, ShippingMethodId = InnerItem.ShippingMethodId }; selectedPaymentShippingItems.Add(itemToAdd); } var paymentShippingForDelete = InnerItem.PaymentMethodShippingMethods.Where( x => !selectedPaymentShippingItems.Any(pm => pm.PaymentMethodId == x.PaymentMethodId)).ToList(); foreach (var paymentMethodShippingMethodForDelete in paymentShippingForDelete) { InnerItem.PaymentMethodShippingMethods.Remove(paymentMethodShippingMethodForDelete); var itemToDelete = OriginalItem.PaymentMethodShippingMethods.SingleOrDefault( item => item.PaymentMethodShippingMethodId == paymentMethodShippingMethodForDelete.PaymentMethodShippingMethodId); if (itemToDelete != null) { OriginalItem.PaymentMethodShippingMethods.Remove(itemToDelete); } Repository.Attach(paymentMethodShippingMethodForDelete); Repository.Remove(paymentMethodShippingMethodForDelete); } foreach (var paymentShippingToAdd in selectedPaymentShippingItems) { var sameItemFromInnerItem = InnerItem.PaymentMethodShippingMethods.SingleOrDefault( pmsm => pmsm.PaymentMethodId == paymentShippingToAdd.PaymentMethodId && pmsm.ShippingMethodId == paymentShippingToAdd.ShippingMethodId); if (sameItemFromInnerItem != null) { continue; } InnerItem.PaymentMethodShippingMethods.Add(paymentShippingToAdd); } if (!IsWizardMode) { Repository.UnitOfWork.Commit(); } }
public void GetShippingItemToInnerItem() { var selectedPaymentShipping = new List <PaymentMethodShippingMethod>(); foreach (var selectedShippingMethod in SelectedShippingMethods) { var itemToAdd = new PaymentMethodShippingMethod(); itemToAdd.ShippingMethodId = selectedShippingMethod.ShippingMethodId; itemToAdd.PaymentMethodId = InnerItem.PaymentMethodId; selectedPaymentShipping.Add(itemToAdd); } var paymentShippingForDelete = InnerItem.PaymentMethodShippingMethods.Where( x => !selectedPaymentShipping.Any(ps => ps.ShippingMethodId == x.ShippingMethodId)).ToList(); foreach (var paymentShippingToDelete in paymentShippingForDelete) { InnerItem.PaymentMethodShippingMethods.Remove(paymentShippingToDelete); Repository.Attach(paymentShippingToDelete); Repository.Remove(paymentShippingToDelete); } foreach (var paymentShippingToAdd in selectedPaymentShipping) { var sameItemFromInnerItem = InnerItem.PaymentMethodShippingMethods.SingleOrDefault( pmsm => pmsm.PaymentMethodId == paymentShippingToAdd.PaymentMethodId && pmsm.ShippingMethodId == paymentShippingToAdd.ShippingMethodId); if (sameItemFromInnerItem != null) { continue; } InnerItem.PaymentMethodShippingMethods.Add(paymentShippingToAdd); } if (!IsWizardMode) { Repository.UnitOfWork.Commit(); } }