public List <Consulta> Listar(Consulta filtro) { List <Consulta> retorno = new List <Consulta>(); try { //Conectar ao banco this.abrirConexao(); //Instruçao a ser executada string sql = "SELECT C.Horario, C.Duracao, C.Observações, C.Receita, C.ID_Consulta, " + " M.ID_Medico, M.Nome AS NomeMedico, P.ID_Paciente, P.Nome AS NomePaciente, " + " C.ID_Secretaria, C.ID_Estado FROM Consulta AS C " + " INNER JOIN Paciente AS P ON P.ID_Paciente = C.ID_Paciente" + " INNER JOIN Medico AS M ON M.ID_Medico = C.ID_MEDICO WHERE 1=1 "; SqlCommand scm = new SqlCommand(sql, sqlConn); //Se foi passado um ID valido, o mesmo entrara como criterio de filtro. #region Modos de pesquisas; //Filtro por ID_Consulta if (filtro.ID_Consulta > 0) { scm.CommandText += " AND C.ID_Consulta = @ID_Consulta"; scm.Parameters.Add("@ID_Consulta", SqlDbType.Int); scm.Parameters["@ID_Consulta"].Value = filtro.ID_Consulta; } //Filtro por ID_Medico if (filtro.Medico.ID_Medico > 0) { scm.CommandText += " AND M.ID_Medico = @ID_Medico"; scm.Parameters.Add("@ID_Medico", SqlDbType.Int); scm.Parameters["@ID_Medico"].Value = filtro.Medico.ID_Medico; } #endregion SqlDataReader DbReader = scm.ExecuteReader(); while (DbReader.Read()) { Consulta consulta = new Consulta(); //Acessando os valores das colunas do resultado #region Columns //Horario, Duracao, Observacoes, Descricao, ID_Receita, ID_Medico, ID_Paciente, //ID_Secretaria consulta.Horario = DbReader.GetDateTime(DbReader.GetOrdinal("Horario")); consulta.Duracao = DbReader.GetInt32(DbReader.GetOrdinal("Duracao")); if (!DbReader.IsDBNull(DbReader.GetOrdinal("Observações"))) { consulta.Observacoes = DbReader.GetString(DbReader.GetOrdinal("Observações")); } if (!DbReader.IsDBNull(DbReader.GetOrdinal("Receita"))) { consulta.Receita = DbReader.GetString(DbReader.GetOrdinal("Receita")); } consulta.ID_Consulta = DbReader.GetInt32(DbReader.GetOrdinal("ID_Consulta")); consulta.Medico = new Medico(); consulta.Medico.ID_Medico = DbReader.GetInt32(DbReader.GetOrdinal("ID_Medico")); consulta.Medico.Nome = DbReader.GetString(DbReader.GetOrdinal("NomeMedico")); consulta.Paciente = new Paciente(); consulta.Paciente.ID_Paciente = DbReader.GetInt32(DbReader.GetOrdinal("ID_Paciente")); consulta.Paciente.Nome = DbReader.GetString(DbReader.GetOrdinal("NomePaciente")); consulta.Estado = new Estado(); consulta.Estado.ID_Estado = DbReader.GetInt32(DbReader.GetOrdinal("ID_Estado")); consulta.Secretaria = new Secretaria(); consulta.Secretaria.ID_Secretaria = DbReader.GetInt32(DbReader.GetOrdinal("ID_Secretaria")); retorno.Add(consulta); #endregion } //Fechando leitor DbReader.Close(); //Liberando memoria scm.Dispose(); //Fechar conexao this.fecharConexao(); } catch (FaultException e) { throw new FaultException("Erro ao conectar e listar" + e); } return(retorno); }