public int AddToCart(IUnitOfWork unitOfWork, ICartService cartService, Product product) { var cartItem = cartService.ODataQueryable().SingleOrDefault( c => c.CartId == ShoppingCartId && c.ProductId == product.Id); if (cartItem == null) { cartItem = new Cart { CartId = ShoppingCartId, ProductId = product.Id, Count = 1, DateCreated = DateTime.Now }; cartService.Insert(cartItem); } else { cartItem.Count++; cartService.Update(cartItem); } //save changes unitOfWork.SaveChanges(); return cartItem.Count; }
// remove item from cart public int RemoveFromCart(IUnitOfWork unitOfWork, ICartService cartService, int productId) { var cartItem = cartService.ODataQueryable().Single( c => c.CartId == ShoppingCartId && c.ProductId == productId); //int itemCount = 0; //if (cartItem != null) //{ // if (cartItem.Count > 1) // { // cartItem.Count--; // itemCount = cartItem.Count; // cartService.Update(cartItem); // } // else // { cartService.Delete(cartItem); //} unitOfWork.SaveChanges(); //} return 0; }
// update cart public int UpdateCart(IUnitOfWork unitOfWork, ICartService cartService, int itemId, int quantity) { var cartItem = cartService.ODataQueryable().Single( c => c.CartId == ShoppingCartId && c.ProductId == itemId); if (cartItem != null && cartItem.Count > 0) { if (quantity.Equals(0)) cartService.Delete(cartItem); else { cartItem.Count = quantity; cartService.Update(cartItem); } unitOfWork.SaveChanges(); } return quantity; }
public void MigrateCart(IUnitOfWork unitOfWork, ICartService cartService, string userName) { var shoppingCart = cartService.ODataQueryable().Where(x => x.CartId == ShoppingCartId); foreach (var item in shoppingCart) { item.CartId = userName; } unitOfWork.SaveChanges(); }
public decimal GetTotal(ICartService cartService) { decimal? total = (from k in cartService.ODataQueryable() where k.CartId == ShoppingCartId select (int?)k.Count * k.Product.Price).Sum(); return total ?? decimal.Zero; }
public int GetCount(ICartService cartService) { int? count = cartService.ODataQueryable().Where(x => x.CartId == ShoppingCartId).Count(); return count ?? 0; }
public List<Cart> GetCartItems(ICartService cartService, IProductService productService, ICategoryService categoryService) { var results = new List<Cart>(); var cartItems = cartService.ODataQueryable().Where(x => x.CartId == ShoppingCartId).ToList(); foreach (var item in cartItems) { item.Product = productService.GetProductById(item.ProductId); item.CategoryAlias = categoryService.GetCategoryById(item.Product.CategoryId).Alias; results.Add(item); } return results; }
// empty cart public void EmptyCart(IUnitOfWork unitOfWork, ICartService cartService) { var cartItems = cartService.ODataQueryable().Where(x => x.CartId == ShoppingCartId); foreach (var cartItem in cartItems) { cartService.Delete(cartItem); } unitOfWork.SaveChanges(); }