public bool AdicionarDisciplina(Disciplina disciplina) { if (disciplina == null) return false; if (!disciplina.Turmas.Any()) { qtdCreditos += disciplina.Creditos; especiais.Add(disciplina); return false; } var periodosDisponiveis = true; var adicionouPeriodo = false; foreach (var turma in disciplina.Turmas) { foreach (var periodo in turma.Periodos) { if (grade[(int)periodo.DiaSemana - 2, (int)periodo.Horario - 1] != null) { periodosDisponiveis = false; } } if (!periodosDisponiveis) { periodosDisponiveis = true; continue; } foreach (var periodo in turma.Periodos) { adicionouPeriodo = true; grade[(int)periodo.DiaSemana - 2, (int)periodo.Horario - 1] = new Celula() { Bloqueado = false, CodCred = disciplina.CodCred, Turma = turma.Numero }; disciplina.TurmaSelecionada = turma; } break; } if (!adicionouPeriodo) { return false; } qtdCreditos += disciplina.Creditos; normais.Add(disciplina); return true; }
public List<Disciplina> CarregaDisciplinasPendentes(out int creditosCursados) { var disciplinasPendentes = new List<Disciplina>(); creditosCursados = 0; var reader = new StreamReader(_filePath); while (!reader.EndOfStream) { var line = reader.ReadLine(); if (line.StartsWith("#")) { continue; } if (line.StartsWith("C")) { var disc = line.Split(';'); var ind = disc[1].Split('-'); creditosCursados += int.Parse(ind[1]); continue; } var columns = line.Split(';'); var disciplina = new Disciplina(); disciplina.Nivel = int.Parse(columns[0]); var cod = columns[1].Split('-'); disciplina.CodCred = cod[0]; disciplina.Creditos = int.Parse(cod[1]); disciplina.Nome = columns[2]; disciplina.CargaHoraria = int.Parse(columns[3]); if (!string.IsNullOrEmpty(columns[4])) { var dependencias = columns[4].Split(','); for (int i = 0; i < dependencias.Length; i++) { if (dependencias[i].StartsWith("CRED")) { disciplina.MinimoCreditosCursados = int.Parse(dependencias[i].Remove(0, 4)); } var discRequisito = disciplinasPendentes.FirstOrDefault(o => o.CodCred == dependencias[i]); if (discRequisito != null) { disciplina.Prerequisitos.Add(discRequisito); } } } if (!string.IsNullOrEmpty(columns[5])) { var turmas = columns[5].Split(','); for (int i = 0; i < turmas.Length; i++) { var t = turmas[i].Split('-'); var turma = new Turma(); turma.Numero = int.Parse(t[0]); turma.Periodos = Periodo.IdentificaPeriodos(t[1]); disciplina.Turmas.Add(turma); } } if (!disciplina.Turmas.Any()) { disciplina.Especial = true; } disciplinasPendentes.Add(disciplina); } return disciplinasPendentes; }