public string RecuperarSenha(String email)
        {
            Usuario user = new Usuario();

            if (email == null)
            {
                return "Favor preencher o campo de email";
            }

            q.Open();
            SqlCommand cmd;
            SqlDataReader reader;
            // int id_usuario, id_tipo, pontuacao, id_periodo;
            // string nome, email, ddd, telefone, senha, cpf_cnpj, diasemana, endereco, cep, bairro, cidade, estado, pais;

            cmd = new SqlCommand("SELECT senha FROM TB_USUARIO WHERE email=@a", q);
            cmd.Parameters.Add(new SqlParameter("@a", SqlDbType.VarChar));
            cmd.Parameters[0].Value = email;
            reader = cmd.ExecuteReader();

            string senha, erro = null;
            if (reader.Read() == true)
            {
                senha = reader.GetString(0);
                //enviar email com a senha
                Email.SendSenha("", "*****@*****.**", email, "Sua senha", "Voluntariação\n\nSua senha é: " + senha);
            }
            else
            {
                //email não existe
                senha = null;
                erro = "email nao existe";
            }

            reader.Close();
            reader.Dispose();
            cmd.Dispose();
            q.Close();
            q.Dispose();

            return erro;
        }
        public IEnumerable<Usuario> ListaVoluntariosDoProjeto(int id_projeto)
        {
            q.Open();

            SqlCommand cmd;
            SqlDataReader reader;
            List<Usuario> lista = new List<Usuario>();

            cmd = new SqlCommand("SELECT U.ID_USUARIO, U.NOME, U.EMAIL FROM TB_USUARIO U JOIN TB_USUARIO_PROJETO P ON U.ID_USUARIO=P.ID_USUARIO WHERE P.ID_PROJETO=@a AND U.ID_TIPO=1", q);
            cmd.Parameters.Add(new SqlParameter("@a", SqlDbType.Int));
            cmd.Parameters[0].Value = id_projeto;

            reader = cmd.ExecuteReader();
            //Obtém os registros, um por vez
            while (reader.Read())
            {
                Usuario u = new Usuario();

                u.id_usuario = reader.GetInt32(0);
                u.nome = reader.GetString(1);
                u.email = reader.GetString(2);

                lista.Add(u);
            }
            reader.Close();
            reader.Dispose();
            cmd.Dispose();

            q.Close();
            q.Dispose();

            return lista;
        }
        public IEnumerable<Usuario> ListarRanking()
        {
            q.Open();

            SqlCommand cmd;
            SqlDataReader reader;
            List<Usuario> lista = new List<Usuario>();

            cmd = new SqlCommand("SELECT NOME, PONTUACAO FROM TB_USUARIO WHERE ID_TIPO=1 AND PONTUACAO>0 AND ATIVO=1 ORDER BY PONTUACAO DESC, NOME", q);
            reader = cmd.ExecuteReader();
            //Obtém os registros, um por vez
            while (reader.Read())
            {
                Usuario u = new Usuario();

                u.nome = reader.GetString(0);
                u.pontuacao = reader.GetInt32(1);

                lista.Add(u);
            }
            reader.Close();
            reader.Dispose();
            cmd.Dispose();

            q.Close();
            q.Dispose();

            return lista;
        }
        public IEnumerable<Usuario> ListarUsuarios(int id_tipo)
        {
            if (UserType() == 3) //Verifica se é admin antes de sair listando...
            {
                q.Open();

                SqlCommand cmd;
                SqlDataReader reader;
                List<Usuario> lista = new List<Usuario>();

                cmd = new SqlCommand("SELECT ID_USUARIO, NOME, EMAIL FROM TB_USUARIO WHERE ID_TIPO=@a", q);
                cmd.Parameters.Add(new SqlParameter("@a", SqlDbType.Int));
                cmd.Parameters[0].Value = id_tipo;

                reader = cmd.ExecuteReader();
                //Obtém os registros, um por vez
                while (reader.Read())
                {
                    Usuario u = new Usuario();

                    u.id_usuario = reader.GetInt32(0);
                    u.nome = reader.GetString(1);
                    u.email = reader.GetString(2);
                    u.ativo = isAtivo(u.id_usuario);
                    lista.Add(u);
                }
                reader.Close();
                reader.Dispose();
                cmd.Dispose();

                q.Close();
                q.Dispose();

                return lista;
            }
            else
            {
                return null;
            }
        }
        public Usuario Consultar(String email, String pwd)
        {
            Usuario user = new Usuario();

            if (email == null || pwd == null)
            {
                user.Erro = "Favor preencher email e senha!";
                return user;
            }

            q.Open();
            SqlCommand cmd;
            SqlDataReader reader;
            // int id_usuario, id_tipo, pontuacao, id_periodo;
            // string nome, email, ddd, telefone, senha, cpf_cnpj, diasemana, endereco, cep, bairro, cidade, estado, pais;

            cmd = new SqlCommand("SELECT id_usuario, id_tipo, id_periodo, pontuacao, nome, email, ddd, telefone, senha, cpf_cnpj, endereco, cep, bairro, cidade, estado FROM TB_USUARIO WHERE email == @a && senha == @b", q);
            cmd.Parameters.Add(new SqlParameter("@a", SqlDbType.VarChar));
            cmd.Parameters.Add(new SqlParameter("@b", SqlDbType.VarChar));
            cmd.Parameters[0].Value = email;
            cmd.Parameters[1].Value = pwd;
            reader = cmd.ExecuteReader();

            while (reader.Read())
            {
                user.id_usuario = reader.GetInt32(0);
                user.id_tipo = reader.GetInt32(1);
                user.id_periodo = reader.GetInt32(2);
                user.pontuacao = reader.GetInt32(3);
                user.nome = reader.GetString(4);
                user.email = reader.GetString(5);
                user.ddd = reader.GetString(6);
                user.telefone = reader.GetString(7);
                user.senha = reader.GetString(8);
                user.cpf_cnpj = reader.GetString(9);
                user.endereco = reader.GetString(10);
                user.cep = reader.GetString(11);
                user.bairro = reader.GetString(12);
                user.cidade = reader.GetString(13);
                user.estado = reader.GetString(14);

            }
            user.Erro = null;

            reader.Close();
            reader.Dispose();
            cmd.Dispose();
            q.Close();
            q.Dispose();

            return user;
        }