public IHttpActionResult PutOrder(int id, Order order) { if (!ModelState.IsValid) { return BadRequest(ModelState); } if (id != order.OrderId) { return BadRequest(); } db.Entry(order).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!OrderExists(id)) { return NotFound(); } else { throw; } } return StatusCode(HttpStatusCode.NoContent); }
public ActionResult NewOrder(OrderView orderView) { //Recupero o leo los datos(objetos) del la session: orderView = Session["orderView"] as OrderView;//hago un casting var customerId = int.Parse(Request["CustomerId"]); if (customerId == 0) { //para mandar la lista a los cientes: var list1 = db.Customers.ToList(); list1.Add(new Customer { CustomerId = 0, FirstName = "[Seleccione un Cliente.....]" }); ViewBag.CustomerId = new SelectList(list1.OrderBy(c => c.LastName), "CustomerId", "FullName"); ViewBag.Error = "Debe Seleccionar un Cliente....."; return View(orderView); } var customer = db.Customers.Find(customerId); if (customer == null) { //para mandar la lista a los cientes: var list1 = db.Customers.ToList(); list1.Add(new Customer { CustomerId = 0, FirstName = "[Seleccione un Cliente.....]" }); ViewBag.CustomerId = new SelectList(list1.OrderBy(c => c.LastName), "CustomerId", "FullName"); ViewBag.Error = "El Cliente no Existe....."; return View(orderView); } //validando detalles del producto: lo tienen que seleccionar if (orderView.ProductOrders.Count == 0) { //para mandar la lista a los cientes: var list1 = db.Customers.ToList(); list1.Add(new Customer { CustomerId = 0, FirstName = "[Seleccione un Cliente.....]" }); ViewBag.CustomerId = new SelectList(list1.OrderBy(c => c.LastName), "CustomerId", "FullName"); ViewBag.Error = "Debe Ingresar Detalle del Producto....."; return View(orderView); } var orderId = 0; //Manejo transacsional: //Start Transction: //Inyectar error para prueba de la transaction: int i = 0; using (var transaction = db.Database.BeginTransaction()) { try { var order = new Order { CustomerId = customerId, OrderDate = DateTime.Now, OrderStatus = OrderStatus.Created }; db.Orders.Add(order); db.SaveChanges(); //onsulta linq para obtner el maximo de la tabla orders: orderId = db.Orders.ToList().Select(o => o.OrderId).Max(); foreach (var item in orderView.ProductOrders) { var orderDetail = new OrderDetail { ProductId = item.ProductId, Descripcion = item.Descripcion, Price = item.Price, Quantity = item.Quantity, OrderId = orderId }; db.OrderDetails.Add(orderDetail); db.SaveChanges(); //Error provocado para probar transaction //i++; //if (i > 2) //{ // int a = 0; // i /= a; //} } //Confirmo la transaction; transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); ViewBag.Error = "ERROR: " + ex.Message; //para mandar la lista a los cientes: var listC = db.Customers.ToList(); listC.Add(new Customer { CustomerId = 0, FirstName = "[Seleccione un Cliente.....]" }); ViewBag.CustomerId = new SelectList(listC.OrderBy(c => c.LastName), "CustomerId", "FullName"); return View(orderView); } }//end Transaction ViewBag.Message = string.Format("La orden: {0}, Grabada OK.", orderId); //para mandar la lista a los cientes: var list = db.Customers.ToList(); list.Add(new Customer { CustomerId = 0, FirstName = "[Seleccione un Cliente.....]" }); ViewBag.CustomerId = new SelectList(list.OrderBy(c => c.LastName), "CustomerId", "FullName"); orderView = new OrderView(); orderView.Customer = new Customer(); orderView.ProductOrders = new List<ProductOrder>(); Session["orderView"] = orderView; return View(orderView); }
public IHttpActionResult PostOrder(Order order) { if (!ModelState.IsValid) { return BadRequest(ModelState); } db.Orders.Add(order); db.SaveChanges(); return CreatedAtRoute("DefaultApi", new { id = order.OrderId }, order); }