Exemplo n.º 1
0
        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();
                }
            }
        }
Exemplo n.º 2
0
        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();
                }
            }
        }