protected virtual async Task MergeCouponsFromCartAsync(CartAggregate otherCart) { foreach (var coupon in otherCart.Cart.Coupons.ToList()) { await AddCouponAsync(coupon); } }
protected virtual async Task MergeLineItemsFromCartAsync(CartAggregate otherCart) { foreach (var lineItem in otherCart.Cart.Items.ToList()) { await InnerAddLineItemAsync(lineItem, otherCart.CartProducts[lineItem.ProductId]); } }
public async Task SaveAsync(CartAggregate cartAggregate) { await cartAggregate.RecalculateAsync(); await cartAggregate.ValidateAsync(await _cartValidationContextFactory.CreateValidationContextAsync(cartAggregate)); await _shoppingCartService.SaveChangesAsync(new ShoppingCart[] { cartAggregate.Cart }); }
public async Task SaveAsync(CartAggregate cartAggregate) { await cartAggregate.RecalculateAsync(); await _shoppingCartService.SaveChangesAsync(new List <ShoppingCart> { cartAggregate.Cart }); }
protected virtual async Task MergePaymentsFromCartAsync(CartAggregate otherCart) { foreach (var payment in otherCart.Cart.Payments.ToList()) { //Skip validation, do not pass avail methods await AddPaymentAsync(payment, null); } }
public virtual async Task <CartAggregate> MergeWithCartAsync(CartAggregate otherCart) { EnsureCartExists(); //Reset primary keys for all aggregated entities before merge //To prevent insertions same Ids for target cart //exclude user because it might be the current one var entities = otherCart.Cart.GetFlatObjectsListWithInterface <IEntity>(); foreach (var entity in entities) { entity.Id = null; } await MergeLineItemsFromCartAsync(otherCart); await MergeCouponsFromCartAsync(otherCart); await MergeShipmentsFromCartAsync(otherCart); await MergePaymentsFromCartAsync(otherCart); return(this); }
public virtual async Task <CartAggregate> MergeWithCartAsync(CartAggregate otherCart) { EnsureCartExists(); //Reset primary keys for all aggregated entities before merge //To prevent insertions same Ids for target cart //exclude user because it might be the current one var entities = otherCart.Cart.GetFlatObjectsListWithInterface <IEntity>(); foreach (var entity in entities) { entity.Id = null; } foreach (var lineItem in otherCart.Cart.Items.ToList()) { await InnerAddLineItemAsync(lineItem, otherCart.CartProducts[lineItem.ProductId]); } foreach (var coupon in otherCart.Cart.Coupons.ToList()) { await AddCouponAsync(coupon); } foreach (var shipment in otherCart.Cart.Shipments.ToList()) { //Skip validation, do not pass avail methods await AddShipmentAsync(shipment, null); } foreach (var payment in otherCart.Cart.Payments.ToList()) { //Skip validation, do not pass avail methods await AddPaymentAsync(payment, null); } return(this); }