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;
   
    BufferedReader lector = new BufferedReader(new InputStreamReader(System.in)); // Crear lector //
   

 public void matriculardatos() throws IOException{
        
               
    	// 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());
                	}
                }
                
            }
        
            }
        
      }
    
 public void matricular_materias() throws IOException{
        
        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());
                          }
                          
                       }
                           
                }
        }
 
 public void notas_docente() throws IOException{
	    
     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());
                                                System.out.println();
                                      
                                                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);    	
                                                 }
                                                }   
                                            }  
                                     }   
                              }    
                        }
    }
  }  
}  
   
}
