public void AddToCart(int productId) { var product = _catalogData.GetProducts().Products.FirstOrDefault(p => p.Id == productId); if (product == null) { return; } Cart cart = _cartStore.Cart; //сначала получаем корзину из куки, либо создаем новую CartItem cartItem = cart.Items.FirstOrDefault(item => item.ProductId == productId); //находим товар в корзине if (cartItem != null) { cartItem.Quantity++; // если товар уже добавлен, то увеличиваем его количество } else { cart.Items.Add(new CartItem { ProductId = productId, Quantity = 1 }); //иначе добавляем единицу товара в корзину } _cartStore.Cart = cart; //сохраняем корзину в куки }
public IActionResult Index([FromServices] ICatalogData catalogData) { List <SitemapNode> nodes = new List <SitemapNode> //составляем список статических узлов для передачи в карту сайта { new SitemapNode(Url.Action("Index", "Home")), new SitemapNode(Url.Action("ContactUs", "Home")), new SitemapNode(Url.Action("Index", "Blogs")), new SitemapNode(Url.Action("BlogSingle", "Blogs")), new SitemapNode(Url.Action("Shop", "Catalog")), new SitemapNode(Url.Action("Index", "WebAPITest")), }; //добавляем к списку все страницы секций товаров nodes.AddRange(catalogData.GetSections().Select(section => new SitemapNode(Url.Action("Shop", "Catalog", new { sectionId = section.Id })))); //добавляем к списку все страницы брендов товаров foreach (var brand in catalogData.GetBrands()) { nodes.Add(new SitemapNode(Url.Action("Shop", "Catalog", new { brandId = brand.Id }))); } //добавляем к списку каждую страницу каждого товара foreach (var product in catalogData.GetProducts().Products) { nodes.Add(new SitemapNode(Url.Action("ProductDetails", "Catalog", new { product.Id }))); } return(new SitemapProvider().CreateSitemap(new SitemapModel(nodes))); //передаем список провайдеру для создания карты сайта }
public IActionResult Shop(int?sectionId, int?brandId, int page = 1) { int?pageSize = int.TryParse(_configuration["PageSize"], out int page_size) ? page_size : (int?)null; PageProductsDTO products = _catalogData.GetProducts(new ProductFilter { BrandId = brandId, SectionId = sectionId, Page = page, PageSize = pageSize }); CatalogViewModel catalogViewModel = new CatalogViewModel { BrandId = brandId, SectionId = sectionId, Products = products.Products.FromDTO().ToView(), PageViewModel = new PageViewModel() { PageNumber = page, TotalItems = products.TotalCount, PageSize = pageSize.GetValueOrDefault() } }; return(View(catalogViewModel)); }
private int GetProductsCount(int brandId) { int productCount = 0; foreach (ProductDTO product in _catalogData.GetProducts().Products) { if (product.Brand.Id == brandId) { productCount = productCount + 1; } } return(productCount); }
public IActionResult Shop(int?sectionId, int?brandId) { IQueryable <Product> products = _catalogData.GetProducts(new ProductFilter { BrandId = brandId, SectionId = sectionId }); CatalogViewModel catalogViewModel = new CatalogViewModel { BrandId = brandId, SectionId = sectionId, Products = products.Select(product => new ProductViewModel { Id = product.Id, ImageUrl = product.ImageUrl, Name = product.Name, Order = product.Order, Price = product.Price }).OrderBy(p => p.Order).ToList() }; return(View(catalogViewModel)); }
public CartViewModel TransformCartToViewModel() { List <ProductViewModel> products = _catalogData.GetProducts(new ProductFilter() //сначала получаем список Product { ProductsIdList = Cart.Items.Select(cartItem => cartItem.ProductId).ToList() }) //(фильтр по списку ID товаров из корзины) .Select(product => new ProductViewModel() //сразу преобразовываем каждый Product в ProductViewModel { Id = product.Id, ImageUrl = product.ImageUrl, Name = product.Name, Order = product.Order, Price = product.Price, BrandName = product.Brand != null ? product.Brand.Name : string.Empty }).ToList(); List <CartItemViewModel> cartItems = new List <CartItemViewModel>(); foreach (var item in Cart.Items) { CartItemViewModel cartItem = new CartItemViewModel() { Product = products.First(p => p.Id == item.ProductId), Quantity = item.Quantity }; cartItems.Add(cartItem); } CartViewModel cartViewModel = new CartViewModel() { CartItems = cartItems }; return(cartViewModel); }
[HttpPost] //метод Post, т.к. нужно передать данные фильтра в теле сообщения, а не в строке запроса public PageProductsDTO GetProducts([FromBody] ProductFilter filter = null) { return(_catalogData.GetProducts(filter)); }