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 <Pedido> ListarPedidosPorFecha(DateTime fechaInicio, DateTime fechaFin)
        {
            SqlConnection conexion         = null;
            SqlDataReader drPedidoPorFecha = null;

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

                SqlCommand cmdListarPedidosPorFecha = new SqlCommand("ListarPedidosPorFecha", conexion);
                cmdListarPedidosPorFecha.CommandType = CommandType.StoredProcedure;

                cmdListarPedidosPorFecha.Parameters.AddWithValue("@inicio", fechaInicio);
                cmdListarPedidosPorFecha.Parameters.AddWithValue("@fin", fechaFin);

                conexion.Open();

                drPedidoPorFecha = cmdListarPedidosPorFecha.ExecuteReader();

                List <Pedido>      pedidosPorFecha = new List <Pedido>();
                List <LineaPedido> LineasPedido;

                Pedido            pedido;
                UsuarioRegistrado registrado;

                while (drPedidoPorFecha.Read())
                {
                    registrado = PersistenciaUsuarioRegistrado.Buscar((int)drPedidoPorFecha["CedulaUsuario"], false);

                    LineasPedido = PersistenciaPedido.BuscarLineasPedido((int)drPedidoPorFecha["Numero"]);

                    pedido = new Pedido((int)drPedidoPorFecha["Numero"], (DateTime)drPedidoPorFecha["Fecha"], (double)drPedidoPorFecha["PrecioTotal"], (bool)drPedidoPorFecha["Enviado"], registrado, LineasPedido);

                    pedidosPorFecha.Add(pedido);
                }

                return(pedidosPorFecha);
            }
            finally
            {
                if (drPedidoPorFecha != null)
                {
                    drPedidoPorFecha.Close();
                }

                if (conexion != null)
                {
                    conexion.Close();
                }
            }
        }
        public static List <Pedido> ListarPedidosEnviados()
        {
            SqlConnection conexion        = null;
            SqlDataReader drPedidoEnviado = null;

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

                SqlCommand cmdListarPedidosEnviados = new SqlCommand("ListarPedidosEnviados", conexion);
                cmdListarPedidosEnviados.CommandType = CommandType.StoredProcedure;

                conexion.Open();

                drPedidoEnviado = cmdListarPedidosEnviados.ExecuteReader();

                List <Pedido>      pedidosEnviados = new List <Pedido>();
                List <LineaPedido> LineasPedido;

                Pedido            pedido;
                UsuarioRegistrado registrado;

                while (drPedidoEnviado.Read())
                {
                    registrado = PersistenciaUsuarioRegistrado.Buscar((int)drPedidoEnviado["CedulaUsuario"], false);

                    LineasPedido = PersistenciaPedido.BuscarLineasPedido((int)drPedidoEnviado["Numero"]);

                    pedido = new Pedido((int)drPedidoEnviado["Numero"], (DateTime)drPedidoEnviado["Fecha"], (double)drPedidoEnviado["PrecioTotal"], (bool)drPedidoEnviado["Enviado"], registrado, LineasPedido);

                    pedidosEnviados.Add(pedido);
                }

                return(pedidosEnviados);
            }
            finally
            {
                if (drPedidoEnviado != null)
                {
                    drPedidoEnviado.Close();
                }

                if (conexion != null)
                {
                    conexion.Close();
                }
            }
        }
        public static Pedido BuscarPedido(int numero)
        {
            SqlConnection conexion = null;
            SqlDataReader drPedido = null;

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

                SqlCommand cmdBuscarPedido = new SqlCommand("BuscarPedido", conexion);
                cmdBuscarPedido.CommandType = CommandType.StoredProcedure;

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

                conexion.Open();

                drPedido = cmdBuscarPedido.ExecuteReader();

                Pedido pedido = new Pedido();

                List <LineaPedido> lineasPedido;
                UsuarioRegistrado  registrado;

                if (drPedido.Read())
                {
                    registrado = PersistenciaUsuarioRegistrado.Buscar((int)drPedido["CedulaUsuario"], false);

                    lineasPedido = PersistenciaPedido.BuscarLineasPedido((int)drPedido["Numero"]);

                    pedido = new Pedido((int)drPedido["Numero"], (DateTime)drPedido["Fecha"], (double)drPedido["PrecioTotal"], (bool)drPedido["Enviado"], registrado, lineasPedido);
                }

                return(pedido);
            }
            finally
            {
                if (drPedido != null)
                {
                    drPedido.Close();
                }

                if (conexion != null)
                {
                    conexion.Close();
                }
            }
        }
        public static List <Pedido> ListarPedidosEnviadosXMedicamento(Int64 oRUC, int oCodigo)
        {
            Pedido        oPed;
            List <Pedido> oLista = new List <Pedido>();
            SqlDataReader oReader;

            SqlConnection oConexion = new SqlConnection(Conexion.STR);
            SqlCommand    oComando  = new SqlCommand("ListarPedidosEnviadosXMedicamento", oConexion);

            oComando.CommandType = CommandType.StoredProcedure;

            oComando.Parameters.AddWithValue("rucMedicamento", oRUC);
            oComando.Parameters.AddWithValue("codMedicamento", oCodigo);

            try
            {
                oConexion.Open();
                oReader = oComando.ExecuteReader();

                if (oReader.HasRows)
                {
                    while (oReader.Read())
                    {
                        int oNum = (int)oReader["numero"];

                        oPed = PersistenciaPedido.BuscarPorNumero(oNum);

                        oLista.Add(oPed);
                    }

                    oReader.Close();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                oConexion.Close();
            }

            return(oLista);
        }
        public static List <Pedido> ListarTodo(string oCliente)
        {
            Pedido        oPed;
            List <Pedido> oLista = new List <Pedido>();
            SqlDataReader oReader;

            SqlConnection oConexion = new SqlConnection(Conexion.STR);
            SqlCommand    oComando  = new SqlCommand("ListarTodo", oConexion);

            oComando.CommandType = CommandType.StoredProcedure;

            oComando.Parameters.AddWithValue("cliente", oCliente);

            try
            {
                oConexion.Open();
                oReader = oComando.ExecuteReader();


                if (oReader.HasRows)
                {
                    while (oReader.Read())
                    {
                        int oNum = (int)oReader["numero"];

                        oPed = PersistenciaPedido.Buscar(oCliente, oNum);

                        oLista.Add(oPed);
                    }

                    oReader.Close();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                oConexion.Close();
            }

            return(oLista);
        }