示例#1
0
        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))); //передаем список провайдеру для создания карты сайта
        }
示例#3
0
        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));
        }
示例#4
0
        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);
        }
示例#7
0
 [HttpPost] //метод Post, т.к. нужно передать данные фильтра в теле сообщения, а не в строке запроса
 public PageProductsDTO GetProducts([FromBody] ProductFilter filter = null)
 {
     return(_catalogData.GetProducts(filter));
 }