Exemplo n.º 1
0
        public Cart SaveShippingInfo(int catalogId, Address shippingAddress)
        {
            EntityFramework.Cart model = null;

            // cannot create a cart without a session id
            if (Context.SessionId == Guid.Empty)
            {
                return(null);
            }

            using (var db = eCommerce.Accessors.EntityFramework.eCommerceDbContext.Create())
            {
                model = db.Carts.Find(Context.SessionId);

                if (model == null)
                {
                    model = new EntityFramework.Cart();
                    db.Carts.Add(model);
                }

                DTOMapper.MapShipping(shippingAddress, model);
                model.CatalogId = catalogId;
                model.Id        = Context.SessionId;

                db.SaveChanges();
            }
            return(FindCart(catalogId, model.Id));
        }
Exemplo n.º 2
0
        public Cart SaveCartItem(int catalogId, int productId, int quantity)
        {
            EntityFramework.Cart model = null;

            // cannot create a cart without a session id
            if (Context.SessionId == Guid.Empty)
            {
                return(null);
            }

            using (var db = eCommerce.Accessors.EntityFramework.eCommerceDbContext.Create())
            {
                model = db.Carts.Find(Context.SessionId);

                if (model == null)
                {
                    model           = new EntityFramework.Cart();
                    model.CatalogId = catalogId;
                    model.Id        = Context.SessionId;
                    db.Set <EntityFramework.Cart>().Add(model);
                    db.SaveChanges();
                }

                var cartItemModel = (from ci in db.CartItems where ci.CartId == Context.SessionId && ci.ProductId == productId select ci).FirstOrDefault();

                if (quantity == 0)
                {
                    if (cartItemModel != null)
                    {
                        // we need to remove this item
                        db.CartItems.Remove(cartItemModel);
                    }
                }
                else if (cartItemModel == null)
                {
                    // we need to add this item
                    cartItemModel           = new EntityFramework.CartItem();
                    cartItemModel.CartId    = model.Id;
                    cartItemModel.CatalogId = catalogId;
                    cartItemModel.ProductId = productId;
                    db.CartItems.Add(cartItemModel);
                }

                if (cartItemModel != null)
                {
                    cartItemModel.Quantity = quantity;
                }

                db.SaveChanges();
            }
            return(FindCart(catalogId, model.Id));
        }
Exemplo n.º 3
0
        private Cart FindCart(int catalogId, Guid id)
        {
            Cart cart = null;

            if (id != Guid.Empty)
            {
                using (var db = eCommerce.Accessors.EntityFramework.eCommerceDbContext.Create())
                {
                    EntityFramework.Cart model = db.Carts.Find(id);

                    // gracefully handle situation where the cart id does not exist
                    // or there is a catalog id mismatch
                    if (model != null && model.CatalogId == catalogId)
                    {
                        cart = DTOMapper.Map <Cart>(model);

                        var cartItemModels = from ci in db.CartItems
                                             join p in db.Products on ci.ProductId equals p.Id
                                             where ci.CartId == cart.Id
                                             select new { Model = ci, Name = p.Name };

                        var cartItems = new List <CartItem>();

                        foreach (var cim in cartItemModels)
                        {
                            var cartitem = DTOMapper.Map <CartItem>(cim.Model);
                            cartitem.ProductName = cim.Name;
                            cartItems.Add(cartitem);
                        }

                        cart.CartItems = cartItems.ToArray();
                    }
                }
            }
            return(cart);
        }
Exemplo n.º 4
0
        public bool DeleteCart(int catalogId)
        {
            bool result = false;

            var sessionId = Context.SessionId;

            if (sessionId != Guid.Empty)
            {
                using (var db = eCommerce.Accessors.EntityFramework.eCommerceDbContext.Create())
                {
                    EntityFramework.Cart model = db.Carts.Find(sessionId);
                    // gracefully handle situation where the cart id does not exist
                    // or there is a catalog id mismatch
                    if (model != null && model.CatalogId == catalogId)
                    {
                        var cartItems = db.CartItems.Where(ci => ci.CartId == sessionId);

                        if (cartItems.Any())
                        {
                            foreach (var item in cartItems)
                            {
                                db.CartItems.Remove(item);
                            }
                            db.SaveChanges(); // delete so FK allows delete of carts
                        }

                        db.Carts.Remove(model);
                    }

                    db.SaveChanges();
                    result = true; // we deleted a cart
                }
            }

            return(result);
        }
Exemplo n.º 5
0
        public ActionResult AddToCart(long Id, int Quantity = 1)
        {
            if (CurrentUser != null)
            {
                var cart    = db.Carts.FirstOrDefault(x => x.User.Id == CurrentUser.Id);
                var product = db.Products.FirstOrDefault(x => x.Id == Id);

                // User haven't already had cart
                if (cart == null)
                {
                    cart = new EntityFramework.Cart()
                    {
                        User = CurrentUser,
                    };
                    db.Carts.Add(cart);
                    db.SaveChanges();
                }

                if (product != null)
                {
                    var cartItem = db.CartItems.FirstOrDefault(x => x.Cart.Id == cart.Id && x.Product.Id == Id);

                    if (cartItem == null)
                    {
                        cartItem = new CartItem()
                        {
                            Cart     = cart,
                            Product  = product,
                            Price    = product.Price,
                            Quantity = Quantity,
                        };
                        db.CartItems.Add(cartItem);
                    }
                    else
                    {
                        cartItem.Quantity += Quantity;
                    }
                    db.SaveChanges();

                    var cartItems = db.CartItems.Where(x => x.Cart.Id == cart.Id).ToList();
                    return(Json(new CartResponseModel <UpdateCartModel>()
                    {
                        Result = true,
                        Message = "Thêm giỏ hàng thành công!",
                        Data = new UpdateCartModel()
                        {
                            Id = product.Id,
                            Image = product.Image1,
                            Price = string.Format("{0:0,0}", product.Price),
                            Quantity = cartItem.Quantity,
                            Url = "",
                            TotalQuantity = cartItems.Sum(x => x.Quantity),
                            TotalAmount = string.Format("{0:0,0}", cartItems.Sum(x => x.ItemAmount))
                        }
                    }, JsonRequestBehavior.AllowGet));
                }
                return(Json(new CartResponseModel()
                {
                    Result = false, Message = "Sản phẩm đã bị xóa!"
                }, JsonRequestBehavior.AllowGet));
            }
            return(Json(new CartResponseModel()
            {
                Result = false, Message = "Vui lòng đăng nhập!"
            }, JsonRequestBehavior.AllowGet));
        }