List <Materia>[] DividirListaMaterias(List <Materia> materias, int idAlumno)
        {
            var materiasDisponibles   = new List <Materia>();
            var materiasNoDisponibles = new List <Materia>();
            var vectorListas          = new List <Materia> [2];

            foreach (var materia in materias)
            {
                var horariosValidos = HorariosDisponibles(materia.Horarios, idAlumno);

                if (InscripcionRepository.ValidarMateriaAprobada(materia.Id, idAlumno) ||
                    (!InscripcionRepository.ValidarCorrelativas(materia.Id, idAlumno)) ||
                    (InscripcionRepository.ValidarMateriaEnCurso(materia.Id, idAlumno)) ||
                    (horariosValidos.Count == 0))
                {
                    materiasNoDisponibles.Add(materia);
                }
                else
                {
                    materiasDisponibles.Add(materia);
                    materiasDisponibles.Last().Horarios = new List <Horario>(horariosValidos);
                }
            }

            vectorListas[Constantes.MateriasDisponibles]   = materiasDisponibles;
            vectorListas[Constantes.MateriasNoDisponibles] = materiasNoDisponibles;

            return(vectorListas);
        }
        bool ValidarMateria(int idMateria, Dias dia, Turnos turno, int idAlumno)
        {
            if (!InscripcionRepository.ValidarCorrelativas(idMateria, idAlumno))
            {
                return(false);
            }

            if (InscripcionRepository.ValidarMateriaAprobada(idMateria, idAlumno))
            {
                return(false);
            }

            if (InscripcionRepository.ValidarMateriaEnCurso(idMateria, idAlumno))
            {
                return(false);
            }

            if (!InscripcionRepository.ValidarHorarioLibre(idAlumno, dia, turno).Equals(Constantes.Default))
            {
                return(false);
            }

            return(true);
        }