//Cambia el estado de la oferta a vencida indicando que la fecha límite llegó o ya se tomo una decisión
        public static void CambiarOfertaAVencida(ModeloOferta oferta)
        {
            try
            {
                NpgsqlCommand cmd = new NpgsqlCommand("Update oferta set vencida='true' where idoferta=@idoferta",Conexion.conexion);
                cmd.Parameters.Add("idoferta",oferta.idOferta);
                Conexion.abrirConexion();
                cmd.ExecuteNonQuery();
                Conexion.cerrarConexion();
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }
 //Método que permite ver sólo mis ofertas realizadas
 public static List<ModeloOferta> VerMisOfertas(string nombreUsuario)
 {
     try
     {
         List<ModeloOferta> ofertas = null;
         //Creación del comando
         NpgsqlCommand cmd = new NpgsqlCommand("Select * from oferta where nombreusuariosubasta = @nombreusuario",Conexion.conexion);
         //Se añade parámetros para evitar sql injection
         cmd.Parameters.Add("nombreusuario",nombreUsuario);
         Conexion.abrirConexion();
         //Creación de lector de base de datos
         NpgsqlDataReader reader = cmd.ExecuteReader();
         //Si el lector tiene tados
         if (reader.HasRows)
         {
             ofertas = new List<ModeloOferta>();
             //Se lee todos los productos de uno en uno
             while (reader.Read())
             {
                 ModeloOferta oferta = new ModeloOferta();
                 oferta.cantidad = float.Parse(reader["cantidad"].ToString());
                 oferta.fecha = DateTime.Parse(reader["fecha"].ToString());
                 oferta.idOferta = double.Parse(reader["idoferta"].ToString());
                 oferta.precio = float.Parse(reader["precio"].ToString());
                 oferta.producto = BaseDatosProducto.ObtenerProducto(double.Parse(reader["idproducto"].ToString()));
                 oferta.tipoMoneda = reader["tipomoneda"].ToString();
                 oferta.usuarioSubasta = BaseDatosUsuario.ObtenerUsuario(reader["nombreusuariosubasta"].ToString());
                 oferta.vencida = (bool)reader["vencida"];
                 //Se lo va guardando en una lista que será retornada posteriormente
                 ofertas.Add(oferta);
             }
         }
         return ofertas;
     }
     catch (Exception)
     {
         throw new Exception("Hubo un error con la base de datos, intente de nuevo más tarde");
     }
 }
 //Permite ver las ofertas de un determinado producto. Ésto lo realiza un administrador.
 public static List<ModeloOferta> VerOfertasDelProducto(double idProducto)
 {
     try
     {
         List<ModeloOferta> ofertas = null;
         NpgsqlCommand cmd = new NpgsqlCommand("Select * from oferta where idproducto = @idproducto",Conexion.conexion);
         cmd.Parameters.Add("idproducto",idProducto);
         Conexion.abrirConexion();
         NpgsqlDataReader reader = cmd.ExecuteReader();
         if (reader.HasRows)
         {
             ofertas = new List<ModeloOferta>();
             while (reader.Read())
             {
                 ModeloOferta oferta = new ModeloOferta();
                 oferta.cantidad = float.Parse(reader["cantidad"].ToString());
                 oferta.fecha = DateTime.Parse(reader["fecha"].ToString());
                 oferta.idOferta = double.Parse(reader["idoferta"].ToString());
                 oferta.precio = float.Parse(reader["precio"].ToString());
                 oferta.producto = BaseDatosProducto.ObtenerProducto(double.Parse(reader["idproducto"].ToString()));
                 oferta.tipoMoneda = reader["tipomoneda"].ToString();
                 oferta.usuarioSubasta = BaseDatosUsuario.ObtenerUsuario(reader["nombreusuariosubasta"].ToString());
                 oferta.vencida = (bool)reader["vencida"];
                 ofertas.Add(oferta);
             }
         }
         return ofertas;
     }
     catch (Exception)
     {
         throw new Exception("Hubo un error con la base de datos, intente de nuevo más tarde");
     }
 }