public ActionResult Orders_Update([DataSourceRequest]DataSourceRequest request, OrderViewModel order)
        {
            if (ModelState.IsValid)
            {
                using (var northwind = new NorthwindEntities())
                {
                    var entity = northwind.Orders.FirstOrDefault(o => o.OrderID == order.OrderID);
                    if (entity == null)
                    {
                        string errorMessage = string.Format("Cannot update record with OrderID:{0} as it's not available.", order.OrderID);
                        ModelState.AddModelError("", errorMessage);
                    }
                    else
                    {
                        entity.CustomerID = order.CustomerID;
                        entity.EmployeeID = order.EmployeeID;
                        entity.OrderDate = order.OrderDate;
                        entity.ShipCountry = order.ShipCountry;
                        entity.ShipVia = order.ShipVia;
                        entity.ShippedDate = order.ShippedDate;
                        entity.ShipName = order.ShipName;
                        entity.ShipAddress = order.ShipAddress;
                        entity.ShipCity = order.ShipCity;
                        entity.ShipPostalCode = order.ShipPostalCode;

                        northwind.Orders.Attach(entity);
                        northwind.Entry(entity).State = EntityState.Modified;
                        northwind.SaveChanges();
                    }
                }
            }
            return Json(new[] { order }.ToDataSourceResult(request, ModelState));
        }
 public ActionResult Orders_Create([DataSourceRequest]DataSourceRequest request, OrderViewModel order)
 {
     if (ModelState.IsValid)
     {
         using (var northwind = new NorthwindEntities())
         {
             var entity = new Order
             {
                 CustomerID = order.CustomerID,
                 EmployeeID = order.EmployeeID,
                 OrderDate = order.OrderDate,
                 ShipCountry = order.ShipCountry,
                 ShipVia = order.ShipVia,
                 ShippedDate = order.ShippedDate,
                 ShipName = order.ShipName,
                 ShipAddress = order.ShipAddress,
                 ShipCity = order.ShipCity,
                 ShipPostalCode = order.ShipPostalCode
             };
             northwind.Orders.Add(entity);
             northwind.SaveChanges();
             order.OrderID = entity.OrderID;
         }
     }
     return Json(new[] { order }.ToDataSourceResult(request, ModelState));
 }
        public ActionResult OrderDetails_Update([DataSourceRequest]DataSourceRequest request, OrderDetailViewModel order)
        {
            if (ModelState.IsValid)
            {
                using (var northwind = new NorthwindEntities())
                {

                    var entity = northwind.Order_Details.FirstOrDefault(detail => detail.OrderID == order.OrderID && detail.ProductID == order.ProductID);
                    if (entity == null)
                    {
                        string errorMessage = string.Format("Cannot update record with ProductID:{0} and OrderID:{1} as it's not available in current order.", order.OrderID, order.ProductID);
                        ModelState.AddModelError("", errorMessage);
                    }
                    else
                    {
                        entity.UnitPrice = order.UnitPrice;
                        entity.Quantity = (short)order.Quantity;
                        entity.Discount = order.Discount;

                        northwind.SaveChanges();
                    }
                }
            }
            return Json(new[] { order }.ToDataSourceResult(request, ModelState));
        }
 public ActionResult OrderDetails_Create([DataSourceRequest]DataSourceRequest request, OrderDetailViewModel order, int ParentID)
 {
     if (ModelState.IsValid)
     {
         using (var northwind = new NorthwindEntities())
         {
             var existingEntity = northwind.Order_Details.FirstOrDefault(detail => detail.OrderID == ParentID && detail.ProductID == order.ProductID);
             if (existingEntity != null)
             {
                 string errorMessage = string.Format("Record with ProductID:{0} and OrderID:{1} already exists in current order.", order.OrderID, order.ProductID);
                 ModelState.AddModelError("", errorMessage);
             }
             else
             {
                 var entity = new Order_Detail
                 {
                     OrderID = ParentID,
                     ProductID = order.ProductID,
                     UnitPrice = order.UnitPrice,
                     Quantity = (short)order.Quantity,
                     Discount = order.Discount
                 };
                 northwind.Order_Details.Add(entity);
                 northwind.SaveChanges();
                 order.OrderID = entity.OrderID;
             }
         }
     }
     return Json(new[] { order }.ToDataSourceResult(request, ModelState));
 }
 public ActionResult Customers_Destroy([DataSourceRequest]DataSourceRequest request, CustomerViewModel customer)
 {
     if (ModelState.IsValid)
     {
         using (var northwind = new NorthwindEntities())
         {
             var entity = new Customer
             {
                 CustomerID = customer.CustomerID,
                 CompanyName = customer.CompanyName,
                 Country = customer.Country,
                 City = customer.City,
                 ContactName = customer.ContactName,
                 Phone = customer.Phone,
             };
             northwind.Customers.Attach(entity);
             northwind.Customers.Remove(entity);
             northwind.SaveChanges();
         }
     }
     return Json(new[] { customer }.ToDataSourceResult(request, ModelState));
 } 
 public ActionResult Customers_Create([DataSourceRequest]DataSourceRequest request, CustomerViewModel customer)
 {
     if (ModelState.IsValid)
     {
         using (var northwind = new NorthwindEntities())
         {
             var entity = new Customer
             {
                 CustomerID = Guid.NewGuid().ToString().Substring(0,5),
                 CompanyName = customer.CompanyName,
                 Country = customer.Country,
                 City = customer.City,
                 ContactName = customer.ContactName,
                 Phone = customer.Phone,
             };
             northwind.Customers.Add(entity);
             northwind.SaveChanges();
             customer.CustomerID = entity.CustomerID;
         }
     }
     return Json(new[] { customer }.ToDataSourceResult(request, ModelState));
 }
        public ActionResult Orders_Destroy([DataSourceRequest]DataSourceRequest request, OrderViewModel order)
        {
            if (ModelState.IsValid)
            {
                using (var northwind = new NorthwindEntities())
                {
                    List<Order_Detail> details = northwind.Order_Details.Where(od => od.OrderID == order.OrderID).ToList();

                    foreach (var orderDetail in details)
                    {
                        northwind.Order_Details.Remove(orderDetail);
                    }

                    var entity = new Order
                    {
                        CustomerID = order.CustomerID,
                        OrderID = order.OrderID,
                        EmployeeID = order.EmployeeID,
                        OrderDate = order.OrderDate,
                        ShipCountry = order.ShipCountry,
                        ShipVia = order.ShipVia,
                        ShippedDate = order.ShippedDate,
                        ShipName = order.ShipName,
                        ShipAddress = order.ShipAddress,
                        ShipCity = order.ShipCity,
                        ShipPostalCode = order.ShipPostalCode
                    };
                    northwind.Orders.Attach(entity);
                    northwind.Orders.Remove(entity);
                    northwind.SaveChanges();
                }
            }
            return Json(new[] { order }.ToDataSourceResult(request, ModelState));
        }