public void Guardar(Pedido p) { using (var tx = _BD.IniciarTransaccion()) { try { string sqltxt = $"INSERT [dbo].[Pedido] ([fechaPedido])" + $" VALUES ('{UtilsDB.GetFecha(p.fechaPedido)}')"; p.id = _BD.EjecutarTransaccion(sqltxt); if (p.id == 0) { throw new ApplicationException(); } foreach (var d in p.detallePedidos) { sqltxt = $"INSERT [dbo].[Detalle_Pedido]" + $"([id_Pedido], [Cantidad], [id_Disco]) " + $"VALUES ('{p.id}', '{d.cantidad}', '{d.idDisco}')"; _BD.EjecutarTransaccion(sqltxt); sqltxt = $"SELECT cantidad FROM Disco WHERE id={d.idDisco}"; var stock = int.Parse(_BD.ConsultaDuranteTransaccion(sqltxt).Rows[0]["cantidad"].ToString()); int number; if (!int.TryParse(d.cantidad, out number)) { throw new ApplicationException("La cantidad ingresada no corresponde."); } if (number <= 0) { throw new ApplicationException("La cantidad ingresada no corresponde."); } int nuevoStock = stock + number; sqltxt = $"UPDATE [dbo].[Disco] SET cantidad = '{nuevoStock}' WHERE id={d.idDisco}"; _BD.EjecutarTransaccion(sqltxt); } tx.Commit(); } catch (ApplicationException aex) { throw aex; } catch (Exception ex) { tx.Rollback(); throw new Exception("No se pudo realizar la operación."); } finally { _BD.cerrar(); } } }
public void Guardar(Venta v) { using (var tx = _BD.IniciarTransaccion()) { try { string sqltxt = $"INSERT [dbo].[Venta] ([fecha],[id_Cliente],[importe_Total])" + $" VALUES ('{UtilsDB.GetFecha(v.fecha)}','{v.id_Cliente}','{v.importe_Total}')"; v.id = _BD.EjecutarTransaccion(sqltxt); if (v.id == 0) { throw new ApplicationException(); } foreach (var d in v.detalleVentas) { sqltxt = $"INSERT [dbo].[Detalle_Venta] " + $"([id_Venta], [id_disco], [cantidad], [precio])" + $" VALUES ('{v.id}','{d.id_disco}','{d.cantidad}','{d.precio}')"; _BD.EjecutarTransaccion(sqltxt); sqltxt = $"SELECT cantidad FROM Disco WHERE id={d.id_disco}"; var stock = int.Parse(_BD.ConsultaDuranteTransaccion(sqltxt).Rows[0]["cantidad"].ToString()); int number; if (!int.TryParse(d.cantidad, out number)) { throw new ApplicationException(); } if (number <= 0) { throw new ApplicationException("La cantidad ingresada no corresponde."); } int nuevoStock = stock - number; if (nuevoStock < 0) { throw new ApplicationException("No hay stock suficiente."); } sqltxt = $"UPDATE [dbo].[Disco] SET cantidad = '{nuevoStock}' WHERE id={d.id_disco}"; _BD.EjecutarTransaccion(sqltxt); } tx.Commit(); } catch (ApplicationException aex) { throw aex; } catch (Exception ex) { tx.Rollback(); throw new Exception("No se pudo realizar la operación."); } finally { _BD.cerrar(); } } }