Exemple #1
0
        //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);
        }
Exemple #2
0
        //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();
        }