// Helper method to simplify shopping cart calls /* public static ShoppingCartService GetCart(Controller controller) { return GetCart(controller.HttpContext); }*/ public void AddToCart(Product product,int quantity) { // Get the matching cart and album instances var cartItem = _unitOfWork.CartRepository.Get(c => c.CartId == ShoppingCartId && c.ProductId == product.Id) .FirstOrDefault(); if (cartItem == null) { // Create a new cart item if no cart item exists cartItem = new Cart { ProductId = product.Id, CartId = ShoppingCartId, Count = quantity, DateCreated = DateTime.Now }; _unitOfWork.CartRepository.Insert(cartItem); } else { // If the item does exist in the cart, // then add one to the quantity cartItem.Count++; } // Save changes _unitOfWork.Save(); }
private IEnumerable<CategoryViewModel> GetCategories(Product product, List<Product> products) { var categoryViewModels = new List<CategoryViewModel>(); foreach (var category in _categories.Where(c=>c.ParentCategory==null)) { var children = _categories.Where(c=>c.ParentCategory==category).ToList(); var childrenCategoryViewModel = GetChildrenCategory(product, products, children); var categoryViewModel = new CategoryViewModel { Id = category.Id.ToString(), Name = category.Name, Active = childrenCategoryViewModel.Any(c => c.Active == "active") ? "active" : (product.CategoryId==category.Id?"active":string.Empty), HasChild = children.Any() ? "haschild" : string.Empty, Total = childrenCategoryViewModel.Sum(c => c.Total)+products.Count(p=>p.CategoryId==category.Id), ChildCategoryViewModels = childrenCategoryViewModel }; categoryViewModels.Add(categoryViewModel); } return categoryViewModels; }
private List<CategoryViewModel> GetChildrenCategory(Product product, List<Product> products, IEnumerable<Category> children) { var categoryViewModel = new List<CategoryViewModel>(); foreach (var child in children) { int total; var childCategoryViewModels=new List<CategoryViewModel>(); var childChildCategories = _categories.Where(c => c.ParentCategory == child).ToList(); var hasChild = string.Empty; if (!childChildCategories.Any()) { total = products.Count(p => p.CategoryId == child.Id); } else { var childrenCategoryViewModels = GetChildrenCategory(product, products, childChildCategories); total = childrenCategoryViewModels.Sum(c => c.Total); hasChild = "haschild"; } var childViewModel = new CategoryViewModel { Id = child.Id.ToString(), Name = child.Name, Active = product.CategoryId == child.Id ? "active" : string.Empty, HasChild=hasChild, Total=total, ChildCategoryViewModels=childCategoryViewModels }; categoryViewModel.Add(childViewModel); } return categoryViewModel; }