//public IHttpActionResult EditarOrden(dynamic request) public IHttpActionResult EditarOrden(ActualizarOrdenRequest editrequest) { try { //var ordenId = Convert.ToInt32(request.ordenId); Guid token = Guid.Parse(Convert.ToString(Request.Headers.GetValues("Authorization").FirstOrDefault())); var sesionRep = new SesionRepository(); var userId = sesionRep.GetUserIdFromSession(token); if (userId == null) { return(Unauthorized()); } //var productos = request.productos; //var productos = (ActualizarOrdenRequest)request.productos; var productos = editrequest; var result = ordenRepository.EditarOrden(editrequest.ordenId, Convert.ToInt32(userId), productos); return(Ok(result)); } catch (Exception ex) { return(InternalServerError(ex)); } }
public BaseResponse EditarOrden(int ordenId, int usuarioId, ActualizarOrdenRequest request) { try { var db = new pedidoclick(); db.Database.Connection.Open(); var orden = db.t_Orden.Where(x => x.Id == ordenId).FirstOrDefault(); if (orden == null) { return(new BaseResponse { Mensaje = "No se pudo encontrar la orden", Resultado = false }); } foreach (var p in request.productos.Where(x => x.agregar == false).ToList()) { var producto = db.t_OrdenDetalle.Where(x => x.IdOrden == ordenId && x.IdProducto == p.productoId).FirstOrDefault(); if (producto != null) { producto.Cantidad = p.cantidad; if (p.borrado) { producto.Borrado = p.borrado; producto.IdUsuarioBorro = usuarioId; producto.FechaBorro = DateTime.Now; } } } var productosAgregar = new List <t_OrdenDetalle>(); foreach (var p in request.productos.Where(x => x.agregar == true).ToList()) { var prod = new t_OrdenDetalle(); prod.IdProducto = p.productoId; prod.Cantidad = p.cantidad; prod.FechaCreo = DateTime.Now; prod.IdOrden = ordenId; prod.Borrado = false; var productoDB = db.t_Producto.FirstOrDefault(x => x.Id == p.productoId); if (productoDB != null) { prod.Precio = productoDB.Precio; } productosAgregar.Add(prod); } if (productosAgregar.Count > 0) { db.t_OrdenDetalle.AddRange(productosAgregar); } db.SaveChanges(); db.Database.Connection.Close(); return(new BaseResponse { Mensaje = "Orden Actualizada", Resultado = true }); } catch (Exception ex) { return(new BaseResponse { Mensaje = "Sucedio un error al actualizar la orden", Resultado = false }); } }