예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }