public IList<Disciplina> GetDisciplinas(Guid calendarioId)
{
try
{
DbCommand cmdSelect = baseDados.GetSqlStringCommand(QueryMap.Default.Disciplinas);
Disciplina disciplina = null;
CalendariosDAO calendariodao = new CalendariosDAO();
CategoriaDisciplinaDAO catdisDAO = new CategoriaDisciplinaDAO();
IList<Disciplina> listaAux = new List<Disciplina>();
using (IDataReader leitor = baseDados.ExecuteReader(cmdSelect))
{
while (leitor.Read())
{
string nome = leitor.GetValue(leitor.GetOrdinal("NOME")).ToString();
string cod = leitor.GetValue(leitor.GetOrdinal("CODIGO")).ToString();
int cred = Convert.ToInt32(leitor.GetValue(leitor.GetOrdinal("CREDITOS")).ToString());
bool g2 = true;
List<CategoriaDisciplina> listCd = catdisDAO.GetCategoriaDisciplinas();
CategoriaDisciplina cd = null;
//Verifica se existe no banco uma Categoria "auxiliar" chamada 'CategoriaDisciplinaImportação'
//É esta que vai ser ligada às disciplinas importadas, para não haver conflito
//Se o banco estiver vazio por algum motivo, recria a tal categoria
foreach (CategoriaDisciplina cdis in listCd)
{
if (cdis.Descricao == "CategoriaDisciplinaImportação")
{
cd = cdis;
break;
}
}
if (cd == null)
{
cd = CategoriaDisciplina.NewCategoriaDisciplina("CategoriaDisciplinaImportação",
new Dictionary<CategoriaRecurso,double>());
catdisDAO.InsereCategoriaDisciplina(cd);
}
disciplina = Disciplina.GetDisciplina(cod, cred, nome, g2, calendariodao.GetCalendario(calendarioId),cd);
listaAux.Add(disciplina);
}
}
return listaAux;
}
catch (Exception ex)
{
throw new DataAccessException("Erro ao ler dados.", ex);
}
}