public static SalesOrderViewModel CreateSalesOrderViewModelFromSalesOrder(SalesOrder salesOrder) { SalesOrderViewModel salesOrderViewModel = new SalesOrderViewModel(); salesOrderViewModel.SalesOrderId = salesOrder.SalesOrderId; salesOrderViewModel.CustomerName = salesOrder.CustomerName; salesOrderViewModel.PONumber = salesOrder.PONumber; salesOrderViewModel.ObjectState = ObjectState.Unchanged; salesOrderViewModel.RowVersion = salesOrder.RowVersion; foreach (SalesOrderItem salesOrderItem in salesOrder.SalesOrderItems) { SalesOrderItemViewModel salesOrderItemViewModel = new SalesOrderItemViewModel(); salesOrderItemViewModel.SalesOrderItemId = salesOrderItem.SalesOrderItemId; salesOrderItemViewModel.ProductCode = salesOrderItem.ProductCode; salesOrderItemViewModel.Quantity = salesOrderItem.Quantity; salesOrderItemViewModel.UnitPrice = salesOrderItem.UnitPrice; salesOrderItemViewModel.ObjectState = ObjectState.Unchanged; salesOrderItemViewModel.RowVersion = salesOrderItem.RowVersion; salesOrderItemViewModel.SalesOrderId = salesOrder.SalesOrderId; salesOrderViewModel.SalesOrderItems.Add(salesOrderItemViewModel); } return salesOrderViewModel; }
public static SalesOrder CreateSalesOrderFromSalesOrderViewModel(SalesOrderViewModel salesOrderViewModel) { SalesOrder salesOrder = new SalesOrder(); salesOrder.SalesOrderId = salesOrderViewModel.SalesOrderId; salesOrder.CustomerName = salesOrderViewModel.CustomerName; salesOrder.PONumber = salesOrderViewModel.PONumber; salesOrder.ObjectState = salesOrderViewModel.ObjectState; salesOrder.RowVersion = salesOrderViewModel.RowVersion; int temporarySalesOrderItemId = -1; foreach (SalesOrderItemViewModel salesOrderItemViewModel in salesOrderViewModel.SalesOrderItems) { SalesOrderItem salesOrderItem = new SalesOrderItem(); salesOrderItem.ProductCode = salesOrderItemViewModel.ProductCode; salesOrderItem.Quantity = salesOrderItemViewModel.Quantity; salesOrderItem.UnitPrice = salesOrderItemViewModel.UnitPrice; salesOrderItem.ObjectState = salesOrderItemViewModel.ObjectState; salesOrderItem.RowVersion = salesOrderItemViewModel.RowVersion; if (salesOrderItemViewModel.ObjectState != ObjectState.Added) salesOrderItem.SalesOrderItemId = salesOrderItemViewModel.SalesOrderItemId; else { salesOrderItem.SalesOrderItemId = temporarySalesOrderItemId; temporarySalesOrderItemId--; } salesOrderItem.SalesOrderId = salesOrderViewModel.SalesOrderId; salesOrder.SalesOrderItems.Add(salesOrderItem); } return salesOrder; }
public virtual ActionResult Create() { SalesOrderViewModel salesOrderViewModel = new SalesOrderViewModel(); salesOrderViewModel.ObjectState = ObjectState.Added; return View(salesOrderViewModel); }
public virtual JsonResult Save(SalesOrderViewModel salesOrderViewModel) { if (!ModelState.IsValid) { throw new ModelStateException(ModelState); } SalesOrder salesOrder = ViewModels.Helpers.CreateSalesOrderFromSalesOrderViewModel(salesOrderViewModel); _salesContext.SalesOrders.Attach(salesOrder); if (salesOrder.ObjectState == ObjectState.Deleted) { foreach (SalesOrderItemViewModel salesOrderItemViewModel in salesOrderViewModel.SalesOrderItems) { SalesOrderItem salesOrderItem = _salesContext.SalesOrderItems.Find(salesOrderItemViewModel.SalesOrderItemId); if (salesOrderItem != null) salesOrderItem.ObjectState = ObjectState.Deleted; } } else { foreach (int salesOrderItemId in salesOrderViewModel.SalesOrderItemsToDelete) { SalesOrderItem salesOrderItem = _salesContext.SalesOrderItems.Find(salesOrderItemId); if (salesOrderItem != null) salesOrderItem.ObjectState = ObjectState.Deleted; } } _salesContext.ApplyStateChanges(); string messageToClient = string.Empty; try { _salesContext.SaveChanges(); } catch (DbUpdateConcurrencyException) { messageToClient = "Someone else have modified this sales order since you retrieved it. Your changes have not been applied. What you see now are the current values in the database."; } catch (Exception ex) { throw new ModelStateException(ex); } if (salesOrder.ObjectState == ObjectState.Deleted) return Json(new { newLocation = "/Sales/Index/" }); if (messageToClient.Trim().Length == 0) messageToClient = ViewModels.Helpers.GetMessageToClient(salesOrderViewModel.ObjectState, salesOrder.CustomerName); salesOrderViewModel.SalesOrderId = salesOrder.SalesOrderId; _salesContext.Dispose(); _salesContext = new DataContext(); salesOrder = _salesContext.SalesOrders.Find(salesOrderViewModel.SalesOrderId); salesOrderViewModel = ViewModels.Helpers.CreateSalesOrderViewModelFromSalesOrder(salesOrder); salesOrderViewModel.MessageToClient = messageToClient; return Json(new { salesOrderViewModel }); }