Ejemplo n.º 1
0
        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);
        }