public JsonResult Create([DataSourceRequest] DataSourceRequest request, Product product)
        {
            if (product != null && ModelState.IsValid)
            {
                var newProduct = new Data.Product
                {
                    ProductName = product.Name,
                    UnitPrice = product.UnitPrice,
                    UnitsInStock = product.UnitsInStock,
                    Discontinued = product.Discontinued,
                    SupplierID = product.Supplier.Id,
                    CategoryID = product.Category.Id
                };

                _context.Products.Add(newProduct);
                _context.SaveChanges();
            }

            return Json(new[] { product }.ToDataSourceResult(request, ModelState));
        }
        public JsonResult Delete([DataSourceRequest] DataSourceRequest request, Product product)
        {
            if (product != null)
            {
                var deletedProduct = _context.Products.First(p => p.ProductID == product.Id);

                try
                {
                    _context.Products.Remove(deletedProduct);
                    _context.SaveChanges();
                }
                catch (Exception exception)
                {
                    return this.Json(new DataSourceResult
                    {
                        Errors = string.Format("Product deleting was faild. Check if you trying to delete product that already using in users orders. Original server error: \n {0}",exception.Message)
                    });
                }
            }

            return Json(new[] { product }.ToDataSourceResult(request, ModelState));
        }
        public JsonResult Update([DataSourceRequest] DataSourceRequest request, Product product)
        {
            if (product != null && ModelState.IsValid)
            {
                var updatedProduct = _context.Products.FirstOrDefault(p => p.ProductID == product.Id);
                if (updatedProduct != null)
                {
                    updatedProduct.ProductName = product.Name;
                    updatedProduct.UnitPrice = product.UnitPrice;
                    updatedProduct.UnitsInStock = product.UnitsInStock;
                    updatedProduct.Discontinued = product.Discontinued;
                    updatedProduct.SupplierID = product.Supplier.Id;
                    updatedProduct.CategoryID = product.Category.Id;

                    _context.Entry(updatedProduct).State = EntityState.Modified;
                    _context.SaveChanges();
                }
            }

            return Json(new[] { product }.ToDataSourceResult(request, ModelState));
        }