/// <summary> /// Actualiza un pedido /// </summary> /// <param name="id"></param> /// <param name="value"></param> /// <returns></returns> public int actualizarPedido(int id, PedidoConLineaPedido value) { int affectedRows = 0; try { Conexion conexion = new Conexion(); SqlConnection conection = conexion.connection; conexion.openConnection(); SqlCommand comando = new SqlCommand("EXECUTE BorraLineasPedido @ID_Pedido", conection); comando.Parameters.Add("@ID_Pedido", SqlDbType.Int).Value = value.ID; affectedRows += comando.ExecuteNonQuery(); comando = new SqlCommand("EXECUTE InsertarLineaPedido @ID_Pedido,@ID_Producto,@Cantidad,@PrecioVenta", conection); foreach (LineaPedido lp in value.LineasPedido) { comando.Parameters.Add("@ID_Pedido", SqlDbType.Int).Value = value.ID; comando.Parameters.Add("@ID_Producto", SqlDbType.Int).Value = lp.IDProducto; comando.Parameters.Add("@Cantidad", SqlDbType.Int).Value = lp.Cantidad; comando.Parameters.Add("@PrecioVenta", SqlDbType.Money).Value = lp.PrecioVenta; affectedRows += comando.ExecuteNonQuery(); } conection.Close(); } catch (SqlException e) { Console.WriteLine(e.Message); } return(affectedRows); }
/*public Object Get() { * throw new HttpResponseException(HttpStatusCode.BadRequest); * }*/ // POST: api/Pedido public void Post([FromBody] PedidoConLineaPedido value) { GestoraPedidosBL gestoraPedidosBL = new GestoraPedidosBL(); try { gestoraPedidosBL.insertPedido(value); }catch (Exception e) { throw e; } }
//POST De Testeo /* public void Post() * { * GestoraPedidosBL gestoraPedidosBL = new GestoraPedidosBL(); * PedidoConLineaPedido pedidoConLinea = new PedidoConLineaPedido(); * LineaPedido lineaPedido = new LineaPedido(); * lineaPedido.IDProducto = 73; * lineaPedido.Cantidad = 10; * lineaPedido.PrecioVenta = 50; * * LineaPedido lineaPedido2 = new LineaPedido(); * lineaPedido2.IDProducto = 74; * lineaPedido2.Cantidad = 10; * lineaPedido2.PrecioVenta = 50; * * pedidoConLinea.IDCliente = 1; * pedidoConLinea.LineasPedido.Add(lineaPedido); * pedidoConLinea.LineasPedido.Add(lineaPedido2); * try * { * gestoraPedidosBL.insertPedido(pedidoConLinea); * } * catch (Exception e) * { * throw e; * } * }*/ // PUT: api/Pedido/5 public void Put(int id, [FromBody] PedidoConLineaPedido value) { GestoraPedidosBL gestoraPedidosBL = new GestoraPedidosBL(); try { gestoraPedidosBL.actualizarPedido(id, value); }catch (Exception e) { throw e; } }
/// <summary> /// Devuelve un pedido concreto y todas sus lineas de pedido /// </summary> /// <param name="id"></param> /// <returns></returns> public PedidoConLineaPedido getPedido(int id) { PedidoConLineaPedido pedidoConLineaPedido = null; SqlConnection conexion = new SqlConnection(); Conexion miConexion = new Conexion(); SqlCommand miComando = new SqlCommand(); SqlDataReader miLector; //Buscamos el pedido try { miConexion.openConnection(); conexion = miConexion.connection; miComando.CommandText = "SELECT * FROM Pedidos WHERE id = @id"; SqlParameter param; param = new System.Data.SqlClient.SqlParameter(); param.ParameterName = "@id"; param.SqlDbType = System.Data.SqlDbType.Int; param.Value = id; miComando.Parameters.Add(param); miComando.Connection = conexion; miLector = miComando.ExecuteReader(); //Si hay lineas en el lector if (miLector.HasRows) { pedidoConLineaPedido = new PedidoConLineaPedido(); miLector.Read(); pedidoConLineaPedido = new PedidoConLineaPedido(); pedidoConLineaPedido.ID = (int)miLector["ID"]; pedidoConLineaPedido.Fecha = (DateTime)miLector["Fecha"]; pedidoConLineaPedido.IDCliente = (int)miLector["ID_Cliente"]; pedidoConLineaPedido.PrecioTotal = (decimal)miLector["PrecioTotal"]; miLector.Close(); //Se insertan sus lineas de pedido pedidoConLineaPedido.LineasPedido = getLineasPedido(id, conexion); //Se insertan los productos //pedidoConLineaPedidoYProductos.Productos = getProductos(conexion); //Ya no es necesario } miConexion.connection.Close(); } catch (Exception e) { throw e; } return(pedidoConLineaPedido); }
// GET: api/Pedido/5 public PedidoConLineaPedido Get(int id) { PedidoConLineaPedido pedidoConLineaPedido = new PedidoConLineaPedido(); GestoraPedidosBL gestoraPedidosBL = new GestoraPedidosBL(); try { pedidoConLineaPedido = gestoraPedidosBL.getPedidoBL(id); }catch (Exception e) { throw e; } return(pedidoConLineaPedido); }
/// <summary> /// Devuelve un pedido concreto y todas sus lineas de pedido /// </summary> /// <param name="id"></param> /// <returns></returns> public PedidoConLineaPedido getPedidoBL(int id) { GestoraPedidosDAL gestoraPedidosDAL = new GestoraPedidosDAL(); PedidoConLineaPedido p = new PedidoConLineaPedido(); try { p = gestoraPedidosDAL.getPedido(id); } catch (Exception e) { throw e; } return(p); }
/// <summary> /// /// </summary> /// <param name="p"></param> /// <returns></returns> private bool pedidoValido(PedidoConLineaPedido p) { bool b = true; //Revisamos que ninguna linea tiene una cantidad inferior a 1 for (int i = 0; i < p.LineasPedido.Count; i++) { if (p.LineasPedido[i].Cantidad < 1) { b = false; } } return(b); }
/// <summary> /// /// </summary> /// <param name="id"></param> /// <param name="p"></param> /// <returns></returns> public int actualizarPedido(int id, PedidoConLineaPedido p) { GestoraPedidosDAL gestoraPedidosDAL = new GestoraPedidosDAL(); int r = 0; if (pedidoValido(p)) { try { r = gestoraPedidosDAL.actualizarPedido(id, p); }catch (Exception e) { throw e; } } return(r); }
/// <summary> /// Inserta un nuevo pedido en la base de datos y todas sus Lineas de pedido /// </summary> /// <param name="pedidoConLineaPedido"></param> /// <returns>Un entero con las filas afectadas</returns> public int insertPedido(PedidoConLineaPedido pedidoConLineaPedido) { int affectedRows = 0; GestoraPedidosDAL gestoraPedidoDAL = new GestoraPedidosDAL(); if (pedidoValido(pedidoConLineaPedido)) { try { affectedRows = gestoraPedidoDAL.insertPedido(pedidoConLineaPedido); } catch (Exception e) { throw e; } } return(affectedRows); }
/// <summary> /// Inserta un nuevo pedido en la base de datos y todas sus Lineas de pedido /// </summary> /// <param name="pedidoConLineaPedido"></param> /// <returns>Un entero con las filas afectadas</returns> public int insertPedido(PedidoConLineaPedido pedidoConLineaPedido) { int affectedRows = 0; int idPedidoInsertado = -1; SqlCommand sqlCommandInsertPedido; SqlCommand sqlCommandInsertLineaPedido; Conexion conexion = new Conexion(); SqlParameter parameterIdCliente = new SqlParameter(); SqlParameter parameterCantidad = new SqlParameter(); SqlParameter parameterPrecioVenta = new SqlParameter(); SqlParameter parameterIdProducto = new SqlParameter(); SqlParameter parameterIdPedido = new SqlParameter(); SqlParameter parameterOutPut = new SqlParameter(); try { conexion.openConnection(); sqlCommandInsertPedido = new SqlCommand("InsertarPedido", conexion.connection); sqlCommandInsertPedido.CommandType = System.Data.CommandType.StoredProcedure; parameterIdCliente.ParameterName = "@ID_Cliente"; parameterIdCliente.SqlDbType = System.Data.SqlDbType.Int; parameterIdCliente.Value = pedidoConLineaPedido.IDCliente; parameterOutPut.ParameterName = "@ID_Pedido"; parameterOutPut.SqlDbType = System.Data.SqlDbType.Int; parameterOutPut.Direction = System.Data.ParameterDirection.Output; sqlCommandInsertPedido.Parameters.Add(parameterIdCliente); sqlCommandInsertPedido.Parameters.Add(parameterOutPut); //Llamada a procedimento para insertar pedido affectedRows = sqlCommandInsertPedido.ExecuteNonQuery(); idPedidoInsertado = Convert.ToInt32(sqlCommandInsertPedido.Parameters["@ID_Pedido"].Value); //Parametros para llamada a aprocedimiento para insertar lineas de pedido sqlCommandInsertLineaPedido = new SqlCommand("InsertarLineaPedido", conexion.connection);//Nombre sqlCommandInsertLineaPedido.CommandType = System.Data.CommandType.StoredProcedure; parameterCantidad.ParameterName = "@Cantidad"; parameterCantidad.SqlDbType = System.Data.SqlDbType.Int; parameterPrecioVenta.ParameterName = "@PrecioVenta"; parameterPrecioVenta.SqlDbType = System.Data.SqlDbType.Decimal; parameterIdProducto.ParameterName = "@ID_Producto"; parameterIdProducto.SqlDbType = System.Data.SqlDbType.Int; parameterIdPedido.ParameterName = "@ID_Pedido"; parameterIdPedido.SqlDbType = System.Data.SqlDbType.Int; parameterIdPedido.Value = idPedidoInsertado; //Bucle para insertar las distintas lineas del pedido for (int i = 0; i < pedidoConLineaPedido.LineasPedido.Count; i++) { //Llamada a procedimiento para insertar cada linea de pedido //IdPedido, idProducto, Cantidad, PrecioVenta parameterIdProducto.Value = pedidoConLineaPedido.LineasPedido.ElementAt(i).IDProducto; parameterPrecioVenta.Value = Math.Round(pedidoConLineaPedido.LineasPedido.ElementAt(i).PrecioVenta, 2); parameterCantidad.Value = pedidoConLineaPedido.LineasPedido.ElementAt(i).Cantidad; sqlCommandInsertLineaPedido.Parameters.Add(parameterIdPedido); sqlCommandInsertLineaPedido.Parameters.Add(parameterIdProducto); sqlCommandInsertLineaPedido.Parameters.Add(parameterCantidad); sqlCommandInsertLineaPedido.Parameters.Add(parameterPrecioVenta); affectedRows = affectedRows + sqlCommandInsertLineaPedido.ExecuteNonQuery(); sqlCommandInsertLineaPedido.Parameters.Clear(); } } catch (SqlException e) { throw e; } finally { conexion.connection.Close(); } return(affectedRows); }