public async Task <AddToCartResponse> AddToCartAsync(Guid productId, int quantity)
        {
            var res     = new AddToCartResponse();
            var product = _productDataService.Query.Include(x => x.RequiredProducts)
                          .FirstOrDefault(x => x.Id == productId);

            if (product == null)
            {
                return new AddToCartResponse {
                           Message = "محصول یافت نشد"
                }
            }
            ;

            res.Message =
                _shoppingCartHelper.GetAddToCartValidationErrors(_workContext.CurrentUser, product, quantity,
                                                                 _accessManager, _unitOfWork);

            if (string.IsNullOrEmpty(res.Message))
            {
                await _shoppingCartHelper.AddToCartAsync(product, quantity, _workContext.CurrentUser, _unitOfWork);

                res.Success = true;
                res.Message = $"{product.Title} به سبد خرید اضافه شد ";
            }
            return(res);
        }
        [HttpPost]//manager kur response kur jsondan cagır..
        public ActionResult AddToCart(AddToCartRequest request)
        {
            CartManager       manager  = new CartManager();
            string            message  = manager.Add(request.ProductID);
            AddToCartResponse response = new AddToCartResponse();

            response.Message = message;
            return(Json(response));
        }
        public AddToCartResponse AddToCart(AddToCartRequest request)
        {
            var response = new AddToCartResponse
            {
                IsSuccessful = false,
                Message      = ""
            };

            try
            {
                var customer = _context.Customers
                               .Where(x => x.Id == request.CarryOutToAddToCart.CustomerId)
                               .FirstOrDefault();

                Food            food                    = null;
                List <CarryOut> existingFood            = null;
                Beverage        beverage                = null;
                List <CarryOut> existingBeverages       = null;
                int             currentFoodQuantity     = 0;
                int             currentBeverageQuantity = 0;

                if (request.CarryOutToAddToCart.Food != null)
                {
                    food = _context.Foods
                           .Where(x => x.Id == request.CarryOutToAddToCart.Food.Id)
                           .FirstOrDefault();
                }
                if (request.CarryOutToAddToCart.Beverage != null)
                {
                    beverage = _context.Beverages
                               .Where(x => x.Id == request.CarryOutToAddToCart.Beverage.Id)
                               .FirstOrDefault();
                }

                if (customer != null)
                {
                    if (food != null)
                    {
                        existingFood = _context.CarryOuts
                                       .Include(x => x.Food)
                                       .Include(x => x.Beverage)
                                       .Include(x => x.Customer)
                                       .Where(x => x.Customer.Id == customer.Id)
                                       .Where(x => x.Food.Name == food.Name)
                                       .Where(x => x.SubmissionTime == null)
                                       .ToList();

                        foreach (var item in existingFood)
                        {
                            currentFoodQuantity += item.FoodQuantity;
                        }

                        _context.RemoveRange(existingFood);
                    }

                    if (beverage != null)
                    {
                        existingBeverages = _context.CarryOuts
                                            .Include(x => x.Food)
                                            .Include(x => x.Beverage)
                                            .Include(x => x.Customer)
                                            .Where(x => x.Customer.Id == customer.Id)
                                            .Where(x => x.Beverage.Name == beverage.Name)
                                            .Where(x => x.SubmissionTime == null)
                                            .ToList();

                        foreach (var item in existingBeverages)
                        {
                            currentBeverageQuantity += item.BeverageQuantity;
                        }

                        _context.RemoveRange(existingBeverages);
                    }

                    var cartItem = new CarryOut
                    {
                        Beverage         = beverage,
                        BeverageQuantity = request.CarryOutToAddToCart.BeverageQuantity + currentBeverageQuantity,
                        BundleId         = 0,
                        Customer         = customer,
                        Food             = food,
                        FoodQuantity     = request.CarryOutToAddToCart.FoodQuantity + currentFoodQuantity,
                        SubmissionTime   = null,
                        Id = 0
                    };

                    _context.Add(cartItem);
                    _context.SaveChanges();

                    response.IsSuccessful = true;
                    response.Message      = "Successfully added carry out to cart for the customer.";
                }
            }
            catch (Exception ex)
            {
                response.Message = ex.ToString();
            }

            return(response);
        }