public IActionResult DecProductCountOne(int?id)
        {
            double productTotal = 0;

            if (id == null)
            {
                return(NotFound());
            }
            List <BasketVM> basketP = new List <BasketVM>();

            if (Request.Cookies["basket"] != null)
            {
                basketP = JsonConvert.DeserializeObject <List <BasketVM> >(Request.Cookies["basket"]);
            }
            BasketVM product = basketP.FirstOrDefault(p => p.Id == id);

            if (product != null)
            {
                product.Count--;
            }
            if (product.Count == 0)
            {
                basketP.Remove(product);
            }



            productTotal = Math.Abs(product.Count) * product.Price;
            Response.Cookies.Append("basket", JsonConvert.SerializeObject(basketP));

            return(PartialView("_ProductCardPartial", basketP));
        }
        public IActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            string existbasket = Request.Cookies["basket"];

            List <BasketVM> products = new List <BasketVM>();

            if (existbasket != null)
            {
                products = JsonConvert.DeserializeObject <List <BasketVM> >(existbasket);
            }

            BasketVM product = products.FirstOrDefault(p => p.Id == id);

            products.Remove(product);

            string basket = JsonConvert.SerializeObject(products);

            Response.Cookies.Append("basket", basket, new CookieOptions {
                MaxAge = TimeSpan.FromDays(14)
            });

            return(RedirectToAction("Basket"));
        }
        public IActionResult IncProductCountOne(int?id)
        {
            double productTotal = 0;

            if (id == null)
            {
                return(NotFound());
            }
            List <BasketVM> basket = new List <BasketVM>();

            if (Request.Cookies["basket"] != null)
            {
                basket = JsonConvert.DeserializeObject <List <BasketVM> >(Request.Cookies["basket"]);
            }
            BasketVM product = basket.FirstOrDefault(p => p.Id == id);

            if (product != null)
            {
                product.Count++;
            }

            productTotal = Math.Abs(product.Count) * product.Price;
            Response.Cookies.Append("basket", JsonConvert.SerializeObject(basket));

            return(Json(productTotal));
        }
示例#4
0
        public async Task <IActionResult> Index(string username)
        {
            if (username == null)
            {
                return(NotFound());
            }
            if (username.ToLower().Trim() != User.Identity.Name.ToLower().Trim())
            {
                return(NotFound());
            }
            AppUser user = await _userManager.FindByNameAsync(User.Identity.Name);

            if (user == null)
            {
                return(NotFound());
            }
            List <BookInCart> bookInCarts = _db.BookInCarts.Include(bc => bc.Book).ThenInclude(b => b.BookAuthors).ThenInclude(ba => ba.Author).Include(bc => bc.Book).ThenInclude(b => b.Publisher).Include(bc => bc.AppUser).OrderBy(bc => bc.Id).Where(bc => bc.AppUserId == user.Id).ToList();

            //List<BookAuthor> bookAuthors = _db.BookAuthors.Include(ba => ba.Book).Include(ba => ba.Author).ToList();
            ViewBag.Currency = _db.Bios.FirstOrDefault().Currency;
            ViewBag.Total    = 0;
            foreach (BookInCart bookInCart in bookInCarts)
            {
            }
            BasketVM model = new BasketVM
            {
                BookInCarts = bookInCarts
                              //BookAuthors = bookAuthors
            };

            return(View(model));
        }
        public IActionResult DeleteFromBasket(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            ViewBag.Total = 0;
            List <BasketVM> oldProducts = JsonConvert.DeserializeObject <List <BasketVM> >(Request.Cookies["basket"]);

            if (oldProducts == null)
            {
                return(NotFound());
            }
            BasketVM deletedProduct = oldProducts.FirstOrDefault(p => p.Id == id);

            if (deletedProduct == null)
            {
                return(NotFound());
            }
            oldProducts.Remove(deletedProduct);

            Response.Cookies.Append("basket", JsonConvert.SerializeObject(oldProducts));

            return(PartialView("_BasketPartial", oldProducts));
        }
示例#6
0
        public async Task <IActionResult> AddBasket(int id)
        {
            Product product = await _db.Products.FindAsync(id);

            if (product == null)
            {
                return(NotFound());
            }
            List <BasketVM> basket;

            if (Request.Cookies["basket"] != null)
            {
                basket = JsonConvert.DeserializeObject <List <BasketVM> >(Request.Cookies["basket"]);
            }
            else
            {
                basket = new List <BasketVM>();
            }
            BasketVM isExist = basket.FirstOrDefault(p => p.Id == id);

            if (isExist == null)
            {
                basket.Add(new BasketVM
                {
                    Id    = id,
                    Count = 1
                });
            }
            else
            {
                isExist.Count += 1;
            }
            Response.Cookies.Append("basket", JsonConvert.SerializeObject(basket));
            return(RedirectToAction(nameof(Index)));
        }
        public IActionResult Delete(int id)
        {
            List <BasketVM> basket = JsonConvert.DeserializeObject <List <BasketVM> >(Request.Cookies["basket"]);
            BasketVM        pro    = basket.FirstOrDefault(p => p.Id == id);

            basket.Remove(pro);
            Response.Cookies.Append("basket", JsonConvert.SerializeObject(basket));
            return(RedirectToAction(nameof(Basket)));
        }
        public async Task <IActionResult> AddBasket(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            if (!User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Login", "Account"));
            }

            Product product = await _db.Products.FindAsync(id);

            if (product == null)
            {
                return(NotFound());
            }
            List <BasketVM> products;

            if (Request.Cookies["basket"] == null)
            {
                products = new List <BasketVM>();
            }
            else
            {
                products = JsonConvert.DeserializeObject <List <BasketVM> >(Request.Cookies["basket"]);
            }
            BasketVM existProduct = products.FirstOrDefault(p => p.Id == id && p.UserName == User.Identity.Name);

            if (existProduct == null)
            {
                BasketVM newProduct = new BasketVM
                {
                    Id       = product.Id,
                    Count    = 1,
                    UserName = User.Identity.Name
                };
                products.Add(newProduct);
            }
            else
            {
                existProduct.Count++;
            }

            string basket2 = JsonConvert.SerializeObject(products);

            Response.Cookies.Append("basket", basket2, new CookieOptions {
                MaxAge = TimeSpan.FromMinutes(20)
            });
            return(Json(products.Where(p => p.UserName == User.Identity.Name).Count()));

            //return RedirectToAction("Index");
        }
        public IActionResult ProductCountMinusAxious(int?id)
        {
            double          basketTotalPrice  = 0;
            double          productTotalPrice = 0;
            string          basket            = Request.Cookies["fbasket"];
            List <BasketVM> basketProducts    = JsonConvert.DeserializeObject <List <BasketVM> >(basket);
            BasketVM        product           = basketProducts.FirstOrDefault(p => p.Id == id);

            if (product.BasketCount > 1)
            {
                product.BasketCount--;
            }
            else
            {
                basketProducts.Remove(product);
            }

            int basketCount = product.BasketCount;

            foreach (var basketProduct in basketProducts.Where(x => x.UserName == User.Identity.Name))
            {
                Product dbProduct = _db.Products.FirstOrDefault(x => x.Id == basketProduct.Id);
                if (dbProduct != null)
                {
                    basketProduct.Price   = dbProduct.Price;
                    basketProduct.Image   = dbProduct.Image;
                    basketProduct.Title   = dbProduct.Title;
                    basketProduct.DbCount = dbProduct.Count;
                }
                basketProduct.ProductTotalPrice = basketProduct.BasketCount * basketProduct.Price;
                if (basketProduct.Id == id)
                {
                    productTotalPrice = basketProduct.ProductTotalPrice;
                }
                basketTotalPrice += basketProduct.ProductTotalPrice;
            }

            string fbasket = JsonConvert.SerializeObject(basketProducts);

            Response.Cookies.Append("fbasket", fbasket, new CookieOptions {
                MaxAge = TimeSpan.FromDays(14)
            });
            var anonymObject = new
            {
                BasketProducts     = basketProducts,
                ProductBasketCount = basketCount,
                BasketTotalPrice   = basketTotalPrice,
                ProductTotalPrice  = productTotalPrice
            };

            return(Ok(anonymObject));
        }
示例#10
0
        public IActionResult DecProductCount(int id)
        {
            List <BasketVM> basket = new List <BasketVM>();

            basket = JsonConvert.DeserializeObject <List <BasketVM> >(Request.Cookies["basket"]);
            BasketVM incPro = basket.FirstOrDefault(b => b.Id == id);

            if (incPro != null && incPro.Count > 1)
            {
                incPro.Count--;
            }
            Response.Cookies.Append("basket", JsonConvert.SerializeObject(basket));

            return(RedirectToAction(nameof(Basket)));
        }
        /// <summary>
        /// Adding equipment to customer basket and calculating it's price considering rental days. Saving it memorycache.
        /// </summary>
        /// <param name="model">Basket item model includes customerId, day, price and equipment</param>
        /// <returns>Adding result</returns>
        public JsonResult AddEquipmentToBasket(BasketItemVM model)
        {
            ServiceResult AddEquipmentToBasketResult = new ServiceResult()
            {
                Type    = ResultType.UnKnown,
                Message = "Something went wrong"
            };

            try
            {
                var result            = CalculateRentPrice(model);
                var hasCustomerBasket = memoryCache.TryGetValue(model.CustomerId, out BasketVM customerBasket);
                if (!hasCustomerBasket)
                {
                    customerBasket = new BasketVM()
                    {
                        CustomerId  = model.CustomerId,
                        BasketItems = new List <BasketItemVM>()
                    };
                    memoryCache.Set(model.CustomerId, customerBasket);
                }

                customerBasket.BasketItems.Add(new BasketItemVM()
                {
                    CustomerId = model.CustomerId,
                    Day        = model.Day,
                    Point      = result.Point,
                    Price      = result.Price,
                    Equipment  = new EquipmentVM
                    {
                        Id   = model.Equipment.Id,
                        Name = model.Equipment.Name,
                        Type = model.Equipment.Type
                    }
                });


                AddEquipmentToBasketResult.Type    = ResultType.Success;
                AddEquipmentToBasketResult.Message = "Item Added To Basket Succesfully";
            }
            catch
            {
                AddEquipmentToBasketResult.Type    = ResultType.Error;
                AddEquipmentToBasketResult.Message = "Error Occured While Adding Equiptment To Basket";
            }

            return(Json(AddEquipmentToBasketResult));
        }
        public IActionResult GetProductCount(int?id)
        {
            List <BasketVM> basket = new List <BasketVM>();

            if (Request.Cookies["basket"] != null)
            {
                basket = JsonConvert.DeserializeObject <List <BasketVM> >(Request.Cookies["basket"]);
            }
            BasketVM product = basket.FirstOrDefault(p => p.Id == id);

            if (product.Count == 0)
            {
                return(NotFound());
            }
            return(Json(product.Count));
        }
示例#13
0
        public ActionResult Basket()
        {
            string   client = System.Web.HttpContext.Current.User.Identity.Name;
            BasketVM result = new BasketVM();
            BasketDM basket = _mappers.ToBasketDM.Map <BasketDTO, BasketDM>(_clientService.GetBasket(client));

            result.Basket  = basket;
            result.Clothes = new List <ClothDM>();
            foreach (var i in basket.Products)
            {
                if (i.Table == DL.Entities.SkinShop.Goods.Cloth)
                {
                    result.Clothes.Add(_mappers.ToClothDM.Map <ClothDTO, ClothDM>(_adminService.GetCloth(i.FromTableId)));
                }
            }
            return(View(result));
        }
示例#14
0
        public IActionResult DeleteProduct(int id)
        {
            List <BasketVM> basket = new List <BasketVM>();

            basket = JsonConvert.DeserializeObject <List <BasketVM> >(Request.Cookies["basket"]);
            if (basket == null)
            {
                return(NotFound());
            }
            BasketVM removedItem = basket.FirstOrDefault(b => b.Id == id);

            if (removedItem != null)
            {
                basket.Remove(removedItem);
            }
            Response.Cookies.Append("basket", JsonConvert.SerializeObject(basket));

            return(RedirectToAction(nameof(Basket)));
        }
示例#15
0
 private async Task DecreaseProductCount(Product dbProduct, BasketVM basketPro)
 {
     dbProduct.Count -= basketPro.Count;
     await _db.SaveChangesAsync();
 }
示例#16
0
        public async Task <IActionResult> Sale(BasketVM info)
        {
            AppUser user = await _userManager.FindByNameAsync(User.Identity.Name);

            List <BookInCart> bookInCarts = _db.BookInCarts.Include(bc => bc.Book).ThenInclude(b => b.Publisher).Include(bc => bc.AppUser).OrderBy(bc => bc.Id).Where(bc => bc.AppUserId == user.Id).ToList();

            ViewBag.Currency = _db.Bios.FirstOrDefault().Currency;
            Sale    sale  = new Sale();
            decimal total = 0;

            if (Request.Form["Type"].ToString().ToLower() == "metro")
            {
                sale.Date             = DateTime.Now;
                sale.AppUserId        = user.Id;
                sale.PhoneNumber      = info.PhoneNumber;
                sale.DeliveryType     = Request.Form["Type"];
                sale.DeliveryLocation = Request.Form["Metro"];
            }
            else if (Request.Form["Type"].ToString().ToLower() == "şəhər daxili")
            {
                sale.Date             = DateTime.Now;
                sale.AppUserId        = user.Id;
                sale.PhoneNumber      = info.PhoneNumber;
                sale.DeliveryType     = Request.Form["Type"];
                sale.DeliveryLocation = Request.Form["City"];
                total = 2;
            }
            else if (Request.Form["Type"].ToString().ToLower() == "rayon")
            {
                sale.Date             = DateTime.Now;
                sale.AppUserId        = user.Id;
                sale.PhoneNumber      = info.PhoneNumber;
                sale.DeliveryType     = Request.Form["Type"];
                sale.DeliveryLocation = Request.Form["Region"];
                total = 2;
            }
            List <SaleBook> saleBooks = new List <SaleBook>();
            int             i         = 0;
            int             a;

            foreach (BookInCart bookInCart in bookInCarts)
            {
                if (int.TryParse(Request.Form["Count"][i], out a))
                {
                    if (bookInCart.Book.Publisher.Discount <= 0)
                    {
                        saleBooks.Add(new SaleBook
                        {
                            SaleId    = sale.Id,
                            Count     = int.Parse(Request.Form["Count"][i]),
                            Price     = decimal.Round((bookInCart.Book.Price * ViewBag.Currency), 2),
                            BookId    = bookInCart.Book.Id,
                            AppUserId = user.Id
                        });
                    }
                    else
                    {
                        saleBooks.Add(new SaleBook
                        {
                            SaleId    = sale.Id,
                            Count     = int.Parse(Request.Form["Count"][i]),
                            Price     = decimal.Round((bookInCart.Book.Price * ViewBag.Currency * ((decimal)(100 - bookInCart.Book.Publisher.Discount) / 100)), 2),
                            BookId    = bookInCart.Book.Id,
                            AppUserId = user.Id
                        });
                    }
                    if (bookInCart.Book.Publisher.Discount <= 0)
                    {
                        total += decimal.Round((bookInCart.Book.Price * ViewBag.Currency), 2) * int.Parse(Request.Form["Count"][i]);
                    }
                    else
                    {
                        total += decimal.Round((bookInCart.Book.Price * ViewBag.Currency * ((decimal)(100 - bookInCart.Book.Publisher.Discount) / 100)), 2) * int.Parse(Request.Form["Count"][i]);
                    }
                    Book bookCount = _db.Books.FirstOrDefault(b => b.Id == bookInCart.BookId);
                    if (bookCount.Count != 0)
                    {
                        if (bookCount.Count > int.Parse(Request.Form["Count"][i]))
                        {
                            bookCount.Count -= int.Parse(Request.Form["Count"][i]);
                        }
                        else
                        {
                            bookCount.Count = 0;
                        }
                    }
                    bookCount.SaleCount += int.Parse(Request.Form["Count"][i]);
                    i++;
                    _db.BookInCarts.Remove(bookInCart);
                }
            }
            sale.Total     = total;
            sale.SaleBooks = saleBooks;
            await _db.Sales.AddAsync(sale);

            await _db.SaveChangesAsync();

            return(RedirectToAction("Index", "Home"));
        }
        public IActionResult AddBasket(int?id)
        {
            double basketTotalPrice = 0;

            if (id == null)
            {
                return(NotFound());
            }

            if (!User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Login", "Account"));
            }

            Product dbproduct = _db.Products.FirstOrDefault(x => x.Id == id);

            if (dbproduct == null)
            {
                return(NotFound());
            }
            List <BasketVM> basketProducts;

            if (Request.Cookies["fbasket"] == null)
            {
                basketProducts = new List <BasketVM>();
            }
            else
            {
                basketProducts = JsonConvert.DeserializeObject <List <BasketVM> >(Request.Cookies["fbasket"]);
            }

            BasketVM existProduct = basketProducts.FirstOrDefault(p => p.Id == id && p.UserName == User.Identity.Name);

            if (existProduct == null)
            {
                BasketVM newproduct = new BasketVM
                {
                    Id          = dbproduct.Id,
                    BasketCount = 1,
                    UserName    = User.Identity.Name
                };
                basketProducts.Add(newproduct);
            }
            else
            {
                existProduct.BasketCount++;
            }

            foreach (var basketProduct in basketProducts.Where(x => x.UserName == User.Identity.Name))
            {
                Product dbProduct = _db.Products.FirstOrDefault(x => x.Id == basketProduct.Id);
                if (dbProduct != null)
                {
                    basketProduct.Price   = dbProduct.Price;
                    basketProduct.Image   = dbProduct.Image;
                    basketProduct.Title   = dbProduct.Title;
                    basketProduct.DbCount = dbProduct.Count;
                }
                basketProduct.ProductTotalPrice = basketProduct.BasketCount * basketProduct.Price;
                basketTotalPrice += basketProduct.ProductTotalPrice;
            }

            string fbasket = JsonConvert.SerializeObject(basketProducts);

            Response.Cookies.Append("fbasket", fbasket, new CookieOptions {
                MaxAge = TimeSpan.FromDays(14)
            });
            var anonymObject = new
            {
                BasketTotalPrice   = basketTotalPrice,
                BasketProductCount = basketProducts.Where(p => p.UserName == User.Identity.Name).Count()
            };

            return(Ok(anonymObject));
        }
        public IActionResult ProductFilter(int?PriceFrom, int?PriceTo, int?CategoryId,
                                           int?BrandId, int?MechanismId, int?WaterProtectionId, int?BandTypeId, int?CaseThickId, int?GlassTypeId)
        {
            FilterOptionsVM optionsVM = new FilterOptionsVM();
            var             result    = _context.Products.Where(p => p.HasDeleted == false)
                                        .Include(p => p.ProductImages).Include(p => p.Brand)
                                        .Include(p => p.Mechanism).Include(p => p.WaterProtection)
                                        .Include(p => p.GlassType).Include(p => p.CaseThick)
                                        .Include(p => p.BandType).Include(p => p.ProductCategories)
                                        .ThenInclude(p => p.Category).AsQueryable();

            if (PriceFrom != null)
            {
                result = result.Where(x => x.Price >= PriceFrom);
                optionsVM.PriceFrom = PriceFrom;
            }
            if (PriceTo != null)
            {
                result            = result.Where(x => x.Price <= PriceTo);
                optionsVM.PriceTo = PriceTo;
            }
            if (CategoryId != null)
            {
                result = result.Where(x => x.ProductCategories.Select(pc => pc.CategoryId == CategoryId).FirstOrDefault());
                optionsVM.CategoryId = CategoryId;
            }
            if (BrandId != null)
            {
                result            = result.Where(x => x.BrandId == BrandId);
                optionsVM.BrandId = BrandId;
            }
            if (MechanismId != null)
            {
                result = result.Where(x => x.MechanismId == MechanismId);
                optionsVM.MechanismId = MechanismId;
            }

            if (WaterProtectionId != null)
            {
                result = result.Where(x => x.WaterProtectionId == WaterProtectionId);
                optionsVM.WaterProtectionId = WaterProtectionId;
            }
            if (BandTypeId != null)
            {
                result = result.Where(x => x.BandTypeId == BandTypeId);
            }
            if (CaseThickId != null)
            {
                result = result.Where(x => x.CaseThickId == CaseThickId);
                optionsVM.CaseThicksId = CaseThickId;
            }
            if (GlassTypeId != null)
            {
                result = result.Where(x => x.GlassTypeId == GlassTypeId);
                optionsVM.GlassTypeId = GlassTypeId;
            }

            ProductPartialVM model            = new ProductPartialVM();
            List <BasketVM>  filteredProducts = new List <BasketVM>();

            foreach (Product item in result)
            {
                BasketVM basketVM = new BasketVM
                {
                    Id        = item.Id,
                    Model     = item.Model,
                    WatchCode = item.WatchCode,
                    Price     = item.Price,
                    Image     = item.Image,
                    Discount  = item.Discount
                };
                filteredProducts.Add(basketVM);
            }
            optionsVM.BandTypeId = BandTypeId;
            Response.Cookies.Append("filterOptions", JsonConvert.SerializeObject(optionsVM));
            Response.Cookies.Append("filter", JsonConvert.SerializeObject(filteredProducts));
            return(RedirectToAction("Index", "Product"));
        }
        public IActionResult Index(int?id, int?page)
        {
            ViewBag.Mechanisms      = _context.Mechanisms.Where(m => m.HasDeleted == false).ToList();
            ViewBag.CaseThicks      = _context.CaseThicks.Where(m => m.HasDeleted == false).ToList();
            ViewBag.GlassTypes      = _context.GlassTypes.Where(m => m.HasDeleted == false).ToList();
            ViewBag.BandTypes       = _context.BandTypes.Where(m => m.HasDeleted == false).ToList();
            ViewBag.WaterProtection = _context.WaterProtections.ToList();
            ViewBag.Categories      = _context.Categories.ToList();
            ViewBag.Brands          = _context.Brands.Where(b => b.HasDeleted == false).ToList();
            List <BasketVM> products = new List <BasketVM>();

            if (id != null)
            {
                //Response.Cookies.Delete("filter");
                //Response.Cookies.Append("filter",)
                ViewBag.PageCount = Decimal.Ceiling((decimal)_context.Products
                                                    .Where(t => t.HasDeleted == false && t.BrandId == id).Count() / 8);
                ViewBag.Page = page;
                if (page == null)
                {
                    //Response.Cookies.Append("filter",Json)
                    var pr = _context.Products.Where(t => t.HasDeleted == false && t.BrandId == id).Take(8).ToList();
                    foreach (Product item in pr)
                    {
                        BasketVM basketVM = new BasketVM
                        {
                            Id        = item.Id,
                            Model     = item.Model,
                            WatchCode = item.WatchCode,
                            Price     = item.Price,
                            Image     = item.Image,
                            Discount  = item.Discount
                        };
                        products.Add(basketVM);
                    }
                    return(View(products));
                }
                var pro = _context.Products.Where(t => t.HasDeleted == false && t.BrandId == id).Skip(((int)page - 1) * 8).Take(8).ToList();
                foreach (Product item in pro)
                {
                    BasketVM basketVM = new BasketVM
                    {
                        Id        = item.Id,
                        Model     = item.Model,
                        WatchCode = item.WatchCode,
                        Price     = item.Price,
                        Image     = item.Image,
                        Discount  = item.Discount
                    };
                    products.Add(basketVM);
                }
                return(View(products));
            }
            //List<BasketVM> basketproducts = new List<BasketVM>();
            //if (Request.Cookies["basket"] != null)
            //{
            //    basketproducts = JsonConvert.DeserializeObject<List<BasketVM>>(Request.Cookies["basket"]);
            //}
            //ViewBag.BasketCount = basketproducts.Count();
            //if (Request.Cookies["filter"] != null)
            //{

            //}
            if (Request.Cookies["filter"] != null)
            {
                FilterOptionsVM optionsVM = new FilterOptionsVM();
                optionsVM                 = JsonConvert.DeserializeObject <FilterOptionsVM>(Request.Cookies["filterOptions"]);
                ViewBag.PriceFrom         = optionsVM.PriceFrom;
                ViewBag.PriceTo           = optionsVM.PriceTo;
                ViewBag.CategoryId        = optionsVM.CategoryId;
                ViewBag.BrandId           = optionsVM.BrandId;
                ViewBag.MechanismId       = optionsVM.MechanismId;
                ViewBag.WaterProtectionId = optionsVM.WaterProtectionId;
                ViewBag.BandTypeId        = optionsVM.BandTypeId;
                ViewBag.CaseThicksId      = optionsVM.CaseThicksId;
                ViewBag.GlassTypeId       = optionsVM.GlassTypeId;



                products          = JsonConvert.DeserializeObject <List <BasketVM> >(Request.Cookies["filter"]);
                ViewBag.PageCount = Decimal.Ceiling((decimal)products.Count() / 8);
                ViewBag.Page      = page;
                if (page == null)
                {
                    var pr = products.Take(8).ToList();
                    return(View(pr));
                }
                var produ = products.Skip(((int)page - 1) * 8).Take(8).ToList();
                return(View(produ));
            }

            ViewBag.PageCount = Decimal.Ceiling((decimal)_context.Products
                                                .Where(t => t.HasDeleted == false).Count() / 8);
            ViewBag.Page = page;
            if (page == null)
            {
                var pr = _context.Products.Where(t => t.HasDeleted == false).Take(8).ToList();
                foreach (Product item in pr)
                {
                    BasketVM basketVM = new BasketVM
                    {
                        Id        = item.Id,
                        Model     = item.Model,
                        WatchCode = item.WatchCode,
                        Price     = item.Price,
                        Image     = item.Image,
                        Discount  = item.Discount
                    };
                    products.Add(basketVM);
                }
                return(View(products));
            }
            var prod = _context.Products.Where(t => t.HasDeleted == false).Skip(((int)page - 1) * 8).Take(8).ToList();

            foreach (Product item in prod)
            {
                BasketVM basketVM = new BasketVM
                {
                    Id        = item.Id,
                    Model     = item.Model,
                    WatchCode = item.WatchCode,
                    Price     = item.Price,
                    Image     = item.Image,
                    Discount  = item.Discount
                };
                products.Add(basketVM);
            }
            return(View(products));
        }
        public async Task <IActionResult> AddToBasket(int?id, int?count)
        {
            if (id == null)
            {
                return(NotFound());
            }
            Product product = await _context.Products.FindAsync(id);

            if (product == null)
            {
                return(NotFound());
            }
            List <BasketVM> products;

            if (Request.Cookies["basket"] == null)
            {
                products = new List <BasketVM>();
            }
            else
            {
                products = JsonConvert.DeserializeObject <List <BasketVM> >(Request.Cookies["basket"]);
            }
            BasketVM isExist = products.FirstOrDefault(p => p.Id == id);

            if (isExist == null && count == null)
            {
                BasketVM newProduct = new BasketVM()
                {
                    Id        = product.Id,
                    Count     = 1,
                    Image     = product.Image,
                    Model     = product.Model,
                    Price     = product.Price - product.Price * product.Discount / 100,
                    WatchCode = product.WatchCode
                };
                products.Add(newProduct);
            }
            else if (isExist == null && count != null)
            {
                BasketVM newProduct = new BasketVM()
                {
                    Id        = product.Id,
                    Count     = (int)count,
                    Image     = product.Image,
                    Model     = product.Model,
                    Price     = product.Price,
                    WatchCode = product.WatchCode
                };
                products.Add(newProduct);
            }
            else if (isExist != null && count != null)
            {
                isExist.Count += (int)count;
            }
            else
            {
                isExist.Count++;
            }
            foreach (BasketVM prod in products)
            {
                ViewBag.BasketTotal += prod.Price * prod.Count;
            }
            ViewBag.BasketCount = products.Count();
            Response.Cookies.Append("basket", JsonConvert.SerializeObject(products));
            //products = JsonConvert.DeserializeObject<List<BasketVM>>(Request.Cookies["basket"]);
            return(PartialView("_BasketPartial", products));
        }