// GET: Ordenes public ActionResult NuevaOrden() { var ordeViewModels = new OrdenViewModels(); ordeViewModels.Cliente = new Cliente(); ordeViewModels.Productos = new List <ProductoOrden>(); Session["ordenViewModels"] = ordeViewModels; var lista = db.Clientes.ToList(); lista.Add(new Cliente { ClienteID = 0, Nombre = "[Seleccionar un Cliente...]" }); lista = lista.OrderBy(c => c.NombreCompleto).ToList(); ViewBag.ClienteID = new SelectList(lista, "ClienteID", "NombreCompleto"); return(View(ordeViewModels)); }
public ActionResult NuevaOrden(OrdenViewModels ordenViewModels) { ordenViewModels = Session["ordenViewModels"] as OrdenViewModels; var clienteID = int.Parse(Request["ClienteID"]); if (clienteID == 0) { var lista = db.Clientes.ToList(); lista.Add(new Cliente { ClienteID = 0, Nombre = "[Seleccionar un Cliente...]" }); lista = lista.OrderBy(c => c.NombreCompleto).ToList(); ViewBag.ClienteID = new SelectList(lista, "ClienteID", "NombreCompleto"); ViewBag.Error = "Debes seleccionar un cliente"; return(View(ordenViewModels)); } var cliente = db.Clientes.Find(clienteID); if (cliente == null) { var lista = db.Clientes.ToList(); lista.Add(new Cliente { ClienteID = 0, Nombre = "[Seleccionar un Cliente...]" }); lista = lista.OrderBy(c => c.NombreCompleto).ToList(); ViewBag.ClienteID = new SelectList(lista, "ClienteID", "NombreCompleto"); ViewBag.Error = "cliente no existe"; return(View(ordenViewModels)); } if (ordenViewModels.Productos.Count == 0) { var lista = db.Clientes.ToList(); lista.Add(new Cliente { ClienteID = 0, Nombre = "[Seleccionar un Cliente...]" }); lista = lista.OrderBy(c => c.NombreCompleto).ToList(); ViewBag.ClienteID = new SelectList(lista, "ClienteID", "NombreCompleto"); ViewBag.Error = "No se ingresaron productos a la orden"; return(View(ordenViewModels)); } int ordenID = 0; // int i = 0; // borrarrrrrrrrrrrrr // TRNSACCION using (var transaccion = db.Database.BeginTransaction()) { try { var orden = new Orden { ClienteID = clienteID, FechaOrden = DateTime.Now, EstadoOrden = EstadoOrden.Creada }; db.ordens.Add(orden); db.SaveChanges(); ordenID = db.ordens.ToList().Select(o => o.OrdenID).Max(); foreach (var item in ordenViewModels.Productos) { var detalleOrden = new DetalleOrden { ProductoID = item.ProductoID, Descripcion = item.Descripcion, Precio = item.Precio, Cantidad = item.Cantidad, OrdenID = ordenID }; db.detalleOrdens.Add(detalleOrden); db.SaveChanges(); // borrar /* * i++; * if (i > 1 ) * { * int a = 0; * i = i/a; * } * */ } transaccion.Commit(); } catch (Exception ex) { transaccion.Rollback(); ViewBag.Error = "Error: " + ex.Message; var listaC = db.Clientes.ToList(); listaC.Add(new Cliente { ClienteID = 0, Nombre = "[Seleccionar un Cliente...]" }); listaC = listaC.OrderBy(c => c.NombreCompleto).ToList(); ViewBag.ClienteID = new SelectList(listaC, "ClienteID", "NombreCompleto"); return(View(ordenViewModels)); } } ViewBag.Message = string.Format("La orden {0} , se guardo correctamente", ordenID); var listaCli = db.Clientes.ToList(); listaCli.Add(new Cliente { ClienteID = 0, Nombre = "[Seleccionar un Cliente...]" }); listaCli = listaCli.OrderBy(c => c.NombreCompleto).ToList(); ViewBag.ClienteID = new SelectList(listaCli, "ClienteID", "NombreCompleto"); ordenViewModels = new OrdenViewModels(); ordenViewModels.Cliente = new Cliente(); ordenViewModels.Productos = new List <ProductoOrden>(); Session["ordenViewModels"] = ordenViewModels; return(View(ordenViewModels)); }