コード例 #1
0
 private bool diaVazio(DAO.Dia dia)
 {
     foreach (var item in dia.horarios)
     {
         if (item.professor != null && item.disciplina != null)
         {
             return(false);
         }
     }
     return(true);
 }
コード例 #2
0
        private void crossoverTurma(DAO.Turma turmaResult, DAO.Turma turmaOther)
        {
            int ini = 0, fim = 6;

            if (diaVazio(turmaResult.getDia(DAO.DiaSemana.Domingo)) && diaVazio(turmaOther.getDia(DAO.DiaSemana.Domingo)))
            {
                ini = 1;
            }
            if (diaVazio(turmaResult.getDia(DAO.DiaSemana.Sabado)) && diaVazio(turmaOther.getDia(DAO.DiaSemana.Sabado)))
            {
                fim = 5;
            }

            int diaSemana1 = Sorteio.Random.Next(ini, fim);

            DAO.Dia diaResult = turmaResult.getDia((DAO.DiaSemana)diaSemana1);
            DAO.Dia diaOther  = turmaOther.getDia((DAO.DiaSemana)diaSemana1);

            int horario = Sorteio.Random.Next(0, diaResult.horarios.Count - 1);

            List <DAO.HorarioTurma> horariosTrocaEquivalente = new List <DAO.HorarioTurma>();

            foreach (DAO.Dia item in turmaResult.dias)
            {
                foreach (DAO.HorarioTurma horarioTurma in item.horarios)
                {
                    if ((horarioTurma.disciplina == null && diaOther.horarios[horario].disciplina == null) ||
                        (horarioTurma.disciplina != null && diaOther.horarios[horario].disciplina != null &&
                         horarioTurma.disciplina.id == diaOther.horarios[horario].disciplina.id))
                    {
                        if ((ini == 1 && horarioTurma.dia.diaSemana == DAO.DiaSemana.Sabado) || (fim == 5 && horarioTurma.dia.diaSemana == DAO.DiaSemana.Domingo))
                        {
                            continue;
                        }
                        horariosTrocaEquivalente.Add(horarioTurma);
                    }
                }
            }

            if (horariosTrocaEquivalente.Count == 0)
            {
                return;
            }

            int horarioTrocEquivalente = Sorteio.Random.Next(0, horariosTrocaEquivalente.Count - 1);

            horariosTrocaEquivalente[horarioTrocEquivalente].professor  = diaResult.horarios[horario].professor;
            horariosTrocaEquivalente[horarioTrocEquivalente].disciplina = diaResult.horarios[horario].disciplina;

            diaResult.horarios[horario].professor  = diaOther.horarios[horario].professor;
            diaResult.horarios[horario].disciplina = diaOther.horarios[horario].disciplina;
        }
コード例 #3
0
        public Horario(DAO.Professor professor, DAO.Turma turma)
        {
            this.turma    = turma;
            this.horarios = new List <DAO.HorarioTurma>();

            foreach (DAO.PreferenciaDiaTurno prefDiaTurno in professor.prefDiaTurno)
            {
                if (prefDiaTurno.valor == 0 || prefDiaTurno.turno.id != turma.turno.id)
                {
                    continue;
                }

                DAO.Dia dia = turma.getDia(prefDiaTurno.diaSemana);

                foreach (DAO.HorarioTurma horario in dia.horarios)
                {
                    if (horario.disciplina == null)
                    {
                        horarios.Add(horario);
                    }
                }
            }
        }