//Método que recebe por parâmetro professor, sua respectiva disciplina e período, para se insetir na lista de arestas. public void adicionarAresta(Professor profes, Disciplina disc, Periodo per) { //Fazendo a instanciação e a inserção na lista de Arestas. Aresta aresta = new Aresta(profes, disc, per); arestas.Add(aresta); }
//Método responsável por realizar a verificação em caso de conflito de duas ou mais ocorrencias de um professor ministrando aulas no mesmo período. public void VerificarArestas() { Aresta aresta = new Aresta(); foreach (var item in arestas.ToList()) //Percorrendo cada elemento presente na lista Aresta { //Se existir mais de duas arestas com o mesmo periodo, ele será retirado da lista de Arestas //e colocado em outra lista denominada arestasRemovidas, para ser mostrado ao final do processo o conflito. if (arestas.Where(a => a.Periodo.Periodos == item.Periodo.Periodos).Count() > 2) { arestasRemovidas.Add(item); arestas.Remove(item); } } //Percorre a lista de arestas foreach (var item in arestas.ToList()) { //Se existem professores com mais de duas disciplinas na arestas, ele será removido e será adicionado na lista de arestasRemovidas. if (arestas.Where(a => a.Professor.Nome == item.Professor.Nome).Count() > 2) { arestasRemovidas.Add(item); arestas.Remove(item); //Percorre todos os elementos contidos na lista de professor foreach (var prof in professor.ToList()) { //Verifica na lista de professores se existe um professor que tenha o grau um, se sim, ele adiciona na lista de arestas if (arestas.Where(a => a.Professor.Nome == prof.Nome).Count() == 1) { aresta = new Aresta(prof, item.Disciplina, item.Periodo); arestas.Add(aresta); break; } //Se não, não será executado nada. } } } //Realizando a ordenção por período arestasRemovidas = arestasRemovidas.OrderBy(a => a.Periodo.Periodos).ToList(); }