public static void AgregarPedido(Pedido pedido)
        {
            SqlConnection conexion = null;

            try
            {
                conexion = new SqlConnection(Conexion.CadenaConexion);

                SqlCommand cmdAgregarPedido = new SqlCommand("AgregarPedido", conexion);
                cmdAgregarPedido.CommandType = CommandType.StoredProcedure;

                cmdAgregarPedido.Parameters.AddWithValue("@fecha", pedido.Fecha);
                cmdAgregarPedido.Parameters.AddWithValue("@precioTotal", pedido.PrecioTotal);
                cmdAgregarPedido.Parameters.AddWithValue("@enviado", pedido.Enviado);
                cmdAgregarPedido.Parameters.AddWithValue("@cedulaUsuario", pedido.Registrado.Cedula);

                SqlParameter numeroPedido = new SqlParameter("@numeroPedido", SqlDbType.Int);
                numeroPedido.Direction = ParameterDirection.Output;
                cmdAgregarPedido.Parameters.Add(numeroPedido);

                conexion.Open();

                int filasAfectadas = cmdAgregarPedido.ExecuteNonQuery();

                int numeroPedidoAgregado = Convert.ToInt32(numeroPedido.Value);

                List <LineaPedido> lineasPedido = pedido.LineasPedidos;

                foreach (LineaPedido lp in lineasPedido)
                {
                    PersistenciaPedido.AgregarLineasDePedido(lp, numeroPedidoAgregado);

                    Articulo artciulo = PersistenciaArticulo.Buscar(lp.PArticulo.CodigoBarras, false);

                    artciulo.Stock = artciulo.Stock - lp.Cantidad;

                    PersistenciaArticulo.Modificar(artciulo);
                }

                if (filasAfectadas < 1)
                {
                    throw new ExcepcionPersistencia("Ocurrio un error al agregar el Pedido.");
                }
            }
            finally
            {
                if (conexion != null)
                {
                    conexion.Close();
                }
            }
        }
        public static List <LineaPedido> BuscarLineasPedido(int numero)
        {
            SqlConnection conexion      = null;
            SqlDataReader drLineaPedido = null;

            try
            {
                conexion = new SqlConnection(Conexion.CadenaConexion);

                SqlCommand cmdBuscarLineasPedido = new SqlCommand("BuscarLineasPedido", conexion);
                cmdBuscarLineasPedido.CommandType = CommandType.StoredProcedure;

                cmdBuscarLineasPedido.Parameters.AddWithValue("@numero", numero);

                conexion.Open();

                drLineaPedido = cmdBuscarLineasPedido.ExecuteReader();

                List <LineaPedido> LineasPedidos = new List <LineaPedido> ();

                LineaPedido lineaPedido;
                Articulo    articulo;

                while (drLineaPedido.Read())
                {
                    articulo = PersistenciaArticulo.Buscar((long)drLineaPedido["CodigoArticulo"], true);

                    lineaPedido = new LineaPedido((int)drLineaPedido["Numero"], (int)drLineaPedido["Cantidad"], articulo);
                    LineasPedidos.Add(lineaPedido);
                }

                return(LineasPedidos);
            }
            finally
            {
                if (drLineaPedido != null)
                {
                    drLineaPedido.Close();
                }

                if (conexion != null)
                {
                    conexion.Close();
                }
            }
        }
        public static void Eliminar(string nombre)
        {
            SqlConnection conexion = null;

            try
            {
                conexion = new SqlConnection(Conexion.CadenaConexion);

                SqlCommand cmdEliminarCategoria = new SqlCommand("EliminarCategoria", conexion);
                cmdEliminarCategoria.CommandType = CommandType.StoredProcedure;

                cmdEliminarCategoria.Parameters.AddWithValue("@nombre", nombre);

                conexion.Open();

                int filasAfectadas = cmdEliminarCategoria.ExecuteNonQuery();

                if (filasAfectadas < 1)
                {
                    throw new ExcepcionPersistencia("Error al Eliminar la categoria: " + nombre);
                }

                List <Articulo> articulos = PersistenciaArticulo.ListarXCategoriaDesordenado(nombre);

                foreach (Articulo a in articulos)
                {
                    PersistenciaArticulo.Eliminar(a.CodigoBarras);
                }
            }
            finally
            {
                if (conexion != null)
                {
                    conexion.Close();
                }
            }
        }
        public static void EliminarPedido(Pedido pedido)
        {
            SqlConnection conexion = null;

            try
            {
                conexion = new SqlConnection(Conexion.CadenaConexion);

                SqlCommand cmdEliminarPedido = new SqlCommand("EliminarPedido", conexion);
                cmdEliminarPedido.CommandType = CommandType.StoredProcedure;

                cmdEliminarPedido.Parameters.AddWithValue("@numero", pedido.Numero);

                SqlParameter retorno = new SqlParameter("@valorRetorno", SqlDbType.Int);
                retorno.Direction = ParameterDirection.ReturnValue;
                cmdEliminarPedido.Parameters.Add(retorno);

                conexion.Open();

                int filasAfectadas = cmdEliminarPedido.ExecuteNonQuery();

                switch ((int)retorno.Value)
                {
                case 1:
                    throw new ExcepcionPersistencia("No existe un pedido con el número: " + pedido.Numero);
                    break;

                case 2:
                    throw new ExcepcionPersistencia("El pedido no puede eliminarse porque ya fue enviado al usuario.");
                    break;

                case 3:
                    throw new ExcepcionPersistencia("Ocurrio un error al eliminar las lineas del pedido.");
                    break;

                case 4:
                    throw new ExcepcionPersistencia("No se pudo Eliminar el pedido.");
                    break;
                }

                if (filasAfectadas < 1)
                {
                    throw new ExcepcionPersistencia("Error al eliminar el Pedido con el número: " + pedido.Numero);
                }
                else
                {
                    foreach (LineaPedido lp in pedido.LineasPedidos)
                    {
                        if (lp.PArticulo.Eliminado == false)
                        {
                            Articulo artciulo = PersistenciaArticulo.Buscar(lp.PArticulo.CodigoBarras, false);

                            artciulo.Stock = artciulo.Stock + lp.Cantidad;

                            PersistenciaArticulo.Modificar(artciulo);
                        }
                    }
                }
            }
            finally
            {
                if (conexion != null)
                {
                    conexion.Close();
                }
            }
        }