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.docentesdelamateria.add(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.docentesdelamateria.add(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.getCodigomateria());
                                             materia.estudiantesdelamateria.add(estudiante.getCodigoestudiante());
                                        }
                                }
                        }
 }  
                  System.out.println("-----------------------");
                                System.out.println("Las materias que matriculo: "+estudiante.getNombre());
                         
                     for ( Materia materia : materias )           
                          for ( int i=0; i<estudiante.materiasdelestudiante.size(); i++)
                          {
                              if ( materia.getCodigomateria().equalsIgnoreCase(estudiante.materiasdelestudiante.get(i)))
                                  {System.out.println(materia.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().equalsIgnoreCase(buscador1))
    	 {
    		 
    		 for ( Materia materia : materias ) 
    		 {
    			 for ( int i=0; i<materia.docentesdelamateria.size(); i++)
    			 {
    				 if ( materia.docentesdelamateria.get(i).equalsIgnoreCase(buscador1))
    				 {
    					 System.out.println("CODIGO: " +materia.getCodigomateria() +materia.getNombremateria());
    				 }
    			 }   
    		 }
    		 
    		 System.out.println("Ingrese el codigo de la Materia a la que va a ingresar notas: ");
    	     String buscador2 = lector.readLine();
    	     
    	     for ( Materia materia : materias )
    	    	 
    	     {
    	    	 for ( int i=0; i<materia.docentesdelamateria.size(); i++ )
    	    		 {
    	    			 if ( materia.docentesdelamateria.get(i).equalsIgnoreCase(buscador1) && materia.getCodigomateria().equalsIgnoreCase(buscador2))
    	    			 {
    	    				 System.out.println("Los estudiantes de la materia son: ");
    	    	    		 
    	    				 for ( int k=0; k<materia.estudiantesdelamateria.size(); k++)
    	    				 {
    	    					 for ( Estudiante estudiante : estudiantes )
    	    						 {
    	    						    if ( estudiante.getCodigoestudiante().equalsIgnoreCase(materia.estudiantesdelamateria.get(k)) )
    	    						    		{
    	    						    	      System.out.println("CODIGO         NOMBRE" +estudiante.getCodigoestudiante() +estudiante.getNombre());
    	    						    	      System.out.println(estudiante.getCodigoestudiante() +estudiante.getNombre());
    	    						    		}
    	    						 }
    	    				 }
    	    				 
    	    	    		   	    	    		 
    	    	    		 System.out.println("Seleccione el codigo del estudiante que quiere ingresar las notas: ");
    	    	    		 String buscador3 = lector.readLine();
    	    	    		 
    	    	    		 for ( int k=0; k<=materia.notasdelosestudiantes.size(); k++)
    			    			 {
    	    	    			 
    	    	    			 if ( materia.notasdelosestudiantes.size()==0)
    	    	    			 {
    	    	    				 for ( Estudiante estudiante : estudiantes )
			        	    		 {
			        	    			 for ( int j=0; j<=estudiante.materiasdelestudiante.size(); i++)
			        	    			 {
			        	    				if ( estudiante.materiasdelestudiante.get(j).equalsIgnoreCase(buscador2) && estudiante.getCodigoestudiante().equalsIgnoreCase(buscador3) && materia.notasdelosestudiantes.size()==0 ) 
			        	    				{
			        	    					
			        	    					
			        	    					NotasEstudiante notasestudiante = new NotasEstudiante();
			                                    notasestudiante.crear_listas();
			                                    notasestudiante.setCodigoestudiante(estudiante.getCodigoestudiante());
			                                    
			                                    int opcion; 
			                                    
			                             
			                                    do{
			                                    	
			                                    	System.out.println("SIGUE DANDO VUELTAS!!!");
			                                    	System.out.println("1. Notas de Quices");
				                                    System.out.println("2. Notas de Trabajos");
				                                    System.out.println("3. Notas de Parciales");
				                                    System.out.println("8. Salir");
			                 
			                                        System.out.print("Digite la opcion: ");
			                                        opcion = Integer.parseInt(lector.readLine());
			                                        System.out.println();
			                 
			                                        switch(opcion){
			                                        
			                                        case 1: notasestudiante.notas_quices();break;
			                                        case 2: notasestudiante.notas_trabajos();break;
			                                        case 3: notasestudiante.notas_parciales();break;
			                                                               
			                                        case 8: opcion = 8;break;
			                                        default: break;
			                                        }
			                                        System.out.println();
			                                }while(opcion!=8);
			                                    
			                                    System.out.println("LOGRE SALIR!!!");
			                                    materia.notasdelosestudiantes.add(notasestudiante); 
			        	    				}
			        	    			 }
			        	    		 }
    	    	    			 }
    	    	    			 
    			    		if ( materia.notasdelosestudiantes.get(k).getCodigoestudiante().equalsIgnoreCase(buscador3) )
    			    			{

    			    			     System.out.println("Las notas de este estudiante ya fueron ingresadas, ¿Desea modificarlas? Y/N");
    			    					 String buscador4 = lector.readLine();
    			    					 if ( buscador4.equalsIgnoreCase("Y") )
    			    					   {
    			    						 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: materia.notasdelosestudiantes.get(i).notas_quices();break;
    			                                case 2: materia.notasdelosestudiantes.get(i).notas_trabajos();break;
    			                                case 3: materia.notasdelosestudiantes.get(i).notas_parciales();break;
    			                                case 4: opcion4 = 4;break;
    			                                default: break;
    			                                }
    			                                }while(opcion4!=4);
    			                                
    			                                opcion4 =0; 
    			    					    }
    			    				 
    			    			      }
    			    				 
    			    				 else {
    			    					 for ( Estudiante estudiante : estudiantes )
    			        	    		 {
    			        	    			 for ( int j=0; j<=estudiante.materiasdelestudiante.size(); i++)
    			        	    			 {
    			        	    				if ( estudiante.materiasdelestudiante.get(j).equalsIgnoreCase(buscador2) && estudiante.getCodigoestudiante().equalsIgnoreCase(buscador3) && materia.notasdelosestudiantes.size()!=1) 
    			        	    				{
    			        	    					
    			        	    					
    			        	    					NotasEstudiante notasestudiante = new NotasEstudiante();
    			                                    notasestudiante.crear_listas();
    			                                    notasestudiante.setCodigoestudiante(estudiante.getCodigoestudiante());
    			                                    
    			                                    int opcion4 =0; 
    			                                    
    			                                    do{
    			                                    
    			                                    System.out.println("AQUIIII ESTA EL PROBLEMAAAAAA");
    			                                    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;
    			                                    
    			                                    materia.notasdelosestudiantes.add(notasestudiante);
   
    			        	    				}
    			        	    			 }
    			        	    		 }
    			    				 }
    		    			 }
    	    			 }
    	    		 }
  		 
    	    	 }
	 }
    	 }
     }
 
}