package institucion;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
 
public class Matricula {
 
	private List<Docente>             docentes            = null;
	private List<Estudiante>          estudiantes         = null;
	private List<Materia>             materias            = null;
 
 
 
 
 
    	// MATRICULA DE DOCENTES //
 
 
    	docentes = new ArrayList<Docente>();
        System.
out.
println("Para finalizar el ingreso de docentes digite en el nombre XXXX");         Docente docente = new Docente(); 
        docente.leer();
 
 
        while(docente.getNombredocente().compareToIgnoreCase("XXXX")!=0) // Creacion infinita de Empleados hasta digitar XXXX //
            {
                docentes.add(docente);
                docente = new Docente();
                docente.leer();
            }
 
     // MATRICULA DE ESTUDIANTES //
 
        estudiantes = new ArrayList<Estudiante>();
 
        System.
out.
println("Para finalizar el ingreso de estudiantes digite en el nombre XXXX");         Estudiante estudiante = new Estudiante(); 
        estudiante.leer();
 
 
        while(estudiante.getNombre().compareToIgnoreCase("XXXX")!=0) // Creacion infinita de Empleados hasta digitar XXXX //
            {
                estudiantes.add(estudiante);
                estudiante = new Estudiante();
                estudiante.leer();
            }
 
     // MATRICULA DE MATERIAS //
 
        materias = new ArrayList<Materia>();
        System.
out.
println("Para finalizar el ingreso de materias digite en el nombre XXXX");         Materia materia = new Materia(); 
        materia.leer();
 
        for ( int i=0; i<docentes.size(); i++ )
        {
        	System.
out.
println(docentes.
get(i
).
getNombredocente());         }
 
        System.
out.
println("Digite el nombre del docente que dicta la materia");         String buscador1 
= lector.
readLine();  
        for ( int i=0; i<docentes.size(); i++ )
        {
        	if ( docentes.get(i).getNombredocente().equalsIgnoreCase(buscador1) )
 
        	{
        		materia.setNombredocente(docentes.get(i).getNombredocente());
        	}
        }
 
 
        while(materia.getNombremateria().compareToIgnoreCase("XXXX")!=0) // Creacion infinita de Empleados hasta digitar XXXX //
            {
                materias.add(materia);
                materia = new Materia();
                materia.leer();
 
                if ( materia.getNombremateria().compareToIgnoreCase("XXXX")!= 0){
 
                for ( int i=0; i<docentes.size(); i++ )
                {
                	System.
out.
println(docentes.
get(i
).
getNombredocente());                 }
 
                System.
out.
println("Digite el nombre del docente que dicta la materia");                 String buscador2 
= lector.
readLine();  
                for ( int i=0; i<docentes.size(); i++ )
                {
                	if ( docentes.get(i).getNombredocente().equalsIgnoreCase(buscador2) )
 
                	{
                		materia.setNombredocente(docentes.get(i).getNombredocente());
                	}
                }
 
            }
 
            }
 
      }
 
 
        System.
out.
println("Ingrese el nombre del estudiante");         String buscador1 
= lector.
readLine();  
 
 
        for (Estudiante estudiante : estudiantes)
        {
                if ( estudiante.getNombre().equals(buscador1) )
                {
                  System.
out.
println("Debe matricular minimo 1 materias o maximo 3");                   System.
out.
println("¿Cuantas materias va a matricular?");                   int n 
= Integer.
parseInt(lector.
readLine());                   if( n < 1 || n > 7 )
                  {System.
out.
println("Ingreso erroneo, porfavor ingrese nuevamente el numero de materias");}                   else{    
 
                        for ( Materia materia : materias ) // Impresion de cada docente las materias de que dicta - PRUEBA 1
                        {
                                System.
out.
println(materia.
getNombremateria());                         }
 
 
 
                  for ( int i=0; i<n; i++)
                  {       
                        System.
out.
println("De las materias descritas anteriormente digite la que quiere matricular");                         String buscador2 
= lector.
readLine();  
                    for ( Materia materia : materias ) // Impresion de cada docente las materias de que dicta - PRUEBA 2
                        {
                                if ( materia.getNombremateria().equalsIgnoreCase(buscador2) )
                                        {       
                                             estudiante.materiasdelestudiante.add(materia);
                                             materia.estudiantesdelamateria.add(estudiante);
                                        }
                                }
                        }
 }  
                  System.
out.
println("-----------------------");                                 System.
out.
println("Las materias que matriculo: "+estudiante.
getNombre());  
                          for ( int i=0; i<estudiante.materiasdelestudiante.size(); i++)
                          {
                                  System.
out.
println(estudiante.
materiasdelestudiante.
get(i
).
getNombremateria());                           }
 
                       }
 
                }
        }
 
 
     System.
out.
println("Ingrese el nombre del docente");      String buscador1 
= lector.
readLine();  
 
     for ( Docente docente : docentes ) 
     {
 
 
             if ( docente.getNombredocente().equals(buscador1) )
         {
             System.
out.
println("Ingrese el nombre de la materia");              String buscador2 
= lector.
readLine();  
                     for ( int i=0; i<materias.size(); i++ )// Añadir materia a la lista de materias del estudiante - PRUEBA 1
                     {
                             if ( materias.get(i).getNombredocente().equalsIgnoreCase(buscador1) && materias.get(i).getNombremateria().equalsIgnoreCase(buscador2))
                             {       
 
                                     System.
out.
println("El tamaño de la lista estudiantes de la materia es:" +materias.
get(i
).
estudiantesdelamateria.
size());                                      System.
out.
println("Los estudiantes son:");                                      for ( int j=0; j<materias.get(i).estudiantesdelamateria.size(); j++)
                                     {
 
                                             System.
out.
println(materias.
get(i
).
estudiantesdelamateria.
get(j
).
getNombre());                                      }
 
                                     System.
out.
println("Seleccione el estudiante al que quiere ingresar notas");                                      String buscador3 
= lector.
readLine();  
                                     for ( int j=0; j<materias.get(i).estudiantesdelamateria.size(); j++)
                                     {    	 
                                        if ( materias.get(i).estudiantesdelamateria.get(j).getNombre().equalsIgnoreCase(buscador3))
 
                                        {
 
                                            NotasEstudiante notasestudiante = new NotasEstudiante();
                                            notasestudiante.crear_listas();
                                            notasestudiante.setCodigoestudiante(materias.get(i).estudiantesdelamateria.get(j).getCodigoestudiante());
 
 
 
                                                int opcion4 =0; 
 
                                                do{
 
                                                System.
out.
println("1. Notas de Quices");                                                 System.
out.
println("2. Notas de Trabajos");                                                 System.
out.
println("3. Notas de Parciales");                                                 System.
out.
println("4. Salir");  
                                                System.
out.
print("Digite la opcion: ");                                                 opcion4 
= Integer.
parseInt(lector.
readLine()); 
                                                switch(opcion4){
 
                                                case 1: notasestudiante.notas_quices();break;
                                                case 2: notasestudiante.notas_trabajos();break;
                                                case 3: notasestudiante.notas_parciales();break;
                                                case 4: opcion4 = 4;break;
                                                default: break;
                                                }
                                                }while(opcion4!=4);
 
                                                opcion4 =0; 
 
                                                System.
out.
println("Estoy dentro 1");                                                 for ( int k=0; k<materias.get(i).estudiantesdelamateria.get(j).materiasdelestudiante.size(); k++ )
                                                {
                                                    if ( materias.get(i).estudiantesdelamateria.get(j).materiasdelestudiante.get(k).getNombremateria().equalsIgnoreCase(buscador2) )
                                                 {
                                                    	notasestudiante.setCreditos(materias.get(i).estudiantesdelamateria.get(j).materiasdelestudiante.get(k).getCreditos());
                                                    	materias.get(i).estudiantesdelamateria.get(j).materiasdelestudiante.get(k).notasdelamateriaporestudiante.add(notasestudiante);    	
                                                 }
                                                }   
                                            }  
                                     }   
                              }    
                        }
    }
  }  
}  
 
}