public async Task <ActionResult> AddProduct(int?id)
        {
            if (id != null)
            {
                var session       = new SessionManager(HttpContext);
                var curCartAmount = session.GetOrCreateProductList();
                var product       = _mapper.Map <ProductViewModel>
                                        (await _productService.GetProduct(id));
                product.Amount = 1;

                if (curCartAmount.Count == 0)
                {
                    session.AddProduct(product);
                }
                else
                {
                    foreach (var item in curCartAmount)
                    {
                        if (item.Id == product.Id)
                        {
                            if (await _shoppingCartService.IsEnoughProduct(product.Id, item.Amount))
                            {
                                session.AddProduct(product);
                                return(RedirectToAction(nameof(GetCart)));
                            }
                            else
                            {
                                return(RedirectToAction("GetProductList", "Product"));
                            }
                        }
                    }

                    foreach (var item in curCartAmount)
                    {
                        if (item.Id != product.Id)
                        {
                            session.AddProduct(product);
                            return(RedirectToAction(nameof(GetCart)));
                        }
                    }
                }
            }
            return(RedirectToAction(nameof(GetCart)));
        }