Exemple #1
0
 protected virtual async Task MergeCouponsFromCartAsync(CartAggregate otherCart)
 {
     foreach (var coupon in otherCart.Cart.Coupons.ToList())
     {
         await AddCouponAsync(coupon);
     }
 }
Exemple #2
0
 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 });
        }
Exemple #4
0
        public async Task SaveAsync(CartAggregate cartAggregate)
        {
            await cartAggregate.RecalculateAsync();

            await _shoppingCartService.SaveChangesAsync(new List <ShoppingCart> {
                cartAggregate.Cart
            });
        }
Exemple #5
0
 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);
     }
 }
Exemple #6
0
        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);
        }