MenuCamp

mail@pastecode.io avatar
unknown
plain_text
7 months ago
22 kB
3
Indexable
Never
package es.uco.pw.display.main;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

import es.uco.pw.business.controller.GestorCamps;
import es.uco.pw.data.dto.CampDTO;
import es.uco.pw.data.dto.MonitorDTO;
import es.uco.pw.data.dto.ActivityDTO;
import es.uco.pw.enums.LevelEducation;
import es.uco.pw.enums.Timetable;

/**
 * Clase principal para gestionar asistentes.
 * @author Antonio Jiménez Jiménez
 * @author Carlos Marín Rodríguez
 * @author Gonzalo Márquez de Torres
 * @author José María Muñoz López
 * @since 05-11-2023
 * @version 1.0
 */
public class MenuCamp {
	
    @SuppressWarnings("resource")
    /**
     * Método principal para la gestión de campamentos.
     * @param args Argumentos de línea de comandos
     * @throws SQLException Excepción de SQL.
     * @throws ParseException Excepción de análisis de fecha.
     */
    public static void main(String[] args) throws SQLException, ParseException, FileNotFoundException, IOException {
        Scanner myObj = new Scanner(System.in);
        int idActivity;
        ActivityDTO activity = new ActivityDTO();
        MonitorDTO monitor = new MonitorDTO();
        CampDTO camp = new CampDTO();
        
        int codigoError, monitorID, opcion = 99;
        String nombre, apellido;
        int atencionEspecial;
        boolean atencion = false;

        while (opcion != 0) {
        	System.out.println("Indique una opcion");
			System.out.println("1.- Crear monitor");
			System.out.println("2.- Crear actividad");
			System.out.println("3.- Crear campamento");
			System.out.println("4.- Asignar monitores a actividad");
			System.out.println("5.- Asignar actividades a campamento");
			System.out.println("6.- Asignar monitor responsable a campamento");
			System.out.println("7.- Asignar monitor de atencion especial a campamento");
			System.out.println("0.- Guardar y salir al menu superior");
        	opcion = Integer.parseInt(myObj.nextLine());

        	switch (opcion) {
        		case 1: 
        			//Crea un monitor
        			System.out.println("Indique nombre del nuevo monitor");
        		    nombre = myObj.nextLine();

        		    System.out.println("Indique apellido del nuevo monitor");
        		    apellido = myObj.nextLine();

        		    System.out.println("Indique si es monitor de educación especial (1: No, 2: Sí)");
        		    atencionEspecial = Integer.parseInt(myObj.nextLine());
        		    if (atencionEspecial == 1) {atencion = false;}
        		    if (atencionEspecial == 2) {atencion = true;}
        			
        		    MonitorDTO newMonitor = new MonitorDTO(nombre, apellido, atencion);        			        			       			
        			codigoError = GestorCamps.gestionarOpcionMonitor(1, newMonitor);
        			
        			if(codigoError==1) {
        				System.out.println("El monitor se ha guardado correctamente.");
        			}
        			else if(codigoError==-1) {
        				System.out.println("El monitor no se ha guardado correctamente.");
        			}
        			else if(codigoError==-2) {
        				System.out.println("Ya hay un monitor registrado con el mismo nombre.");
        			}
        			else if(codigoError==0) {
        				System.out.println("No se puede establecer conexion con la base de datos.");
        			}
                    break;                   
                    
                case 2: 
                	// Crear actividad                	                	
            	    ActivityDTO actividad = new ActivityDTO();
                	
                	System.out.println("Indique nombre de la nueva actividad");
            	    nombre = myObj.nextLine();
            	    
            	    int levelEducation_ = 0;
            	    while(levelEducation_!=1 && levelEducation_!=2 && levelEducation_!=3){
            		    System.out.println("Indique en numeros el tipo de nivel educacional de la actividad:");
            		    System.out.println("1. INFANTIL");
            		    System.out.println("2. JUVENIL");
            		    System.out.println("3. ADOLESCENTE");
            		    levelEducation_ = Integer.parseInt(myObj.nextLine());
            	    }				 
            	    if(levelEducation_==1) {
            	    	actividad.setLevelEducation(1);
            	    	actividad.setLevelEducation2(LevelEducation.INFANTIL);
            	    }
            	    else if(levelEducation_==2) {
            	    	actividad.setLevelEducation(2);
            	    	actividad.setLevelEducation2(LevelEducation.JUVENIL);
            	    }
            	    else if(levelEducation_==3) {
            	    	actividad.setLevelEducation(3);
            	    	actividad.setLevelEducation2(LevelEducation.ADOLESCENTE);
            	    }
            	    
            	    int timetable_ = 0;
            	    while(timetable_!=1 && timetable_!=2){
            	    	System.out.println("Indique en números el tipo de horario de la actividad:");
            		    System.out.println("1. MAÑANA");
            		    System.out.println("2. TARDE");
            		    timetable_ = Integer.parseInt(myObj.nextLine());
            	    }
            	    
            	    if(timetable_==1) {
            	    	actividad.setTimetable(1);
            	    	actividad.setTimetable2(Timetable.MANANA);
            	    }
            	    else if(timetable_==2) {
            	    	actividad.setTimetable(2);
            	    	actividad.setTimetable2(Timetable.TARDE);
            	    }					  

            	    System.out.println("Indique el numero maximo de asistentes de la actividad:");
            	    int maximo = Integer.parseInt(myObj.nextLine());
            	    
            	    System.out.println("Indique el numero maximo de monitores necesarios en la actividad:");
            	    int monitores_asignados = Integer.parseInt(myObj.nextLine());
            	    
            	    ActivityDTO newActivity = new ActivityDTO(nombre, actividad.getLevelEducation(), actividad.getTimetable(), maximo, monitores_asignados);            	    
            	    codigoError = GestorCamps.gestionarOpcionActividad(2, newActivity);
        			
        			if(codigoError==1) {
        				System.out.println("La actividad se ha agregado correctamente.");
        			}
        			else if(codigoError==-1) {
        				System.out.println("La actividad no se ha guardado correctamente.");
        			}
        			else if(codigoError==-2) {
        				System.out.println("El nombre que ha introducido ya existe. Comprueba su valor.");
        			}
        			else if(codigoError==0) {
        				System.out.println("No se puede establecer conexion con la base de datos.");
        			}
                    break;
                	

                case 3:   
                	// Crear Campamento                	
                	SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");

                	System.out.println("Indique la fecha de inicio del nuevo campamento (dd/mm/aaaa)");
                	String fechaInicio = myObj.nextLine();
                	Date startDate = formato.parse(fechaInicio);

                	System.out.println("Indique la fecha de fin del nuevo campamento (dd/mm/aaaa)");
                	String fechaFin = myObj.nextLine();
                	Date endDate = formato.parse(fechaFin);

                	levelEducation_ = 0;
                	
                	while(levelEducation_!=1 && levelEducation_!=2 && levelEducation_!=3){
                		System.out.println("Indique en numeros el tipo de nivel educacional de la actividad:");
                		System.out.println("1. INFANTIL");
                		System.out.println("2. JUVENIL");
                		System.out.println("3. ADOLESCENTE");
                		levelEducation_ = Integer.parseInt(myObj.nextLine());
                	}
                	
                	System.out.println("Indique el número máximo de asistentes para el nuevo campamento");
                	int maxAsistents = Integer.parseInt(myObj.nextLine());
                	    
                	CampDTO newCamp = new CampDTO(startDate, endDate, levelEducation_, maxAsistents);                 	   
                	codigoError = GestorCamps.gestionarOpcionCampamentos(3, newCamp);
            			
                	if(codigoError==1) {
                		System.out.println("El campamento se ha agregado correctamente.");
                	}
                	else if(codigoError==-1) {
                		System.out.println("El campamento no se ha guardado correctamente.");
                	}	
                	else if(codigoError==0) {
                		System.out.println("No se puede establecer conexion con la base de datos.");
                	}
                	break;
            			
                case 4:
                	// Asociar un monitor a una actividad
                	System.out.println("Listando las actividades");
                	
                	activity = new ActivityDTO();
                	codigoError =GestorCamps.gestionarOpcionActividad(4, activity);
                	
                	if(codigoError==1) {
        				System.out.println("Las actividades se han listado correctamente.");
        			}
        			else if(codigoError==-1) {
        				System.out.println("Las actividades no se han listado correctamente.");
        			}
        			else if(codigoError==0) {
        				System.out.println("No se puede establecer conexion con la base de datos.");
        			}
            	    
                	System.out.println("Indique el id de la actividad a la que desea asociar un monitor:");
                	idActivity = Integer.parseInt(myObj.nextLine());
                	
                	System.out.println("Listando los monitores");
                	
                	MonitorDTO emptyMonitor = new MonitorDTO();
                	codigoError = GestorCamps.gestionarOpcionMonitor(4, emptyMonitor);
                	                	
        			if(codigoError==-1) {
        				System.out.println("Los monitores no se han listado correctamente.");
        			}                	
        			else if(codigoError==-2) {
        				System.out.println("El monitor ya está asignado a una actividad.");
        			}
        			else if(codigoError==0) {
        				System.out.println("No se puede establecer conexion con la base de datos.");
        			}
        			else if(codigoError==1) {
        				System.out.println("Los monitores se han listado correctamente.");
        			
	                	System.out.println("Indique el ID del monitor que desea asociar:");
	                	int monitorId = Integer.parseInt(myObj.nextLine());
	                	
	                	ActivityDTO assignActivity = new ActivityDTO(idActivity);
	                	MonitorDTO assignMonitor = new MonitorDTO(monitorId);
	                	codigoError = GestorCamps.asignarMonitorEnActividad(assignActivity, assignMonitor);
                	
	                	if(codigoError==1) {
	        				System.out.println("Monitor asociado a la actividad exitosamente.");
	        			}
	        			else if(codigoError==-1) {
	        				System.out.println("No se pudo asociar al monitor con la actividad.");
	        			}	
	        			else if(codigoError==-2) {
	        				System.out.println("El monitor ya está asignado a una actividad.");
	        			}
	        			else if(codigoError==-3) {
	        				System.out.println("No se pueden asignar mas monitores en la actividad.");
	        			}
	        			else if(codigoError==0) {
	        				System.out.println("No se puede establecer conexion con la base de datos.");
	        			}
        		}                	
                break;
                	
                case 5:
                	// Asignar actividades a campamento                	
                	System.out.println("Listando las actividades");                	
                	activity = new ActivityDTO();
                	codigoError = GestorCamps.gestionarOpcionActividad(4, activity);
                	                	
        			if(codigoError==-1) {
        				System.out.println("Las actividades no se han listado correctamente.");
        			}
        			else if(codigoError==0) {
        				System.out.println("No se puede establecer conexion con la base de datos.");
        			}
        			else if(codigoError==1) {
        				System.out.println("Las actividades se han listado correctamente.");
        			
	                	System.out.println("Indique el id de la actividad para asociar a un determinado campamento:");
	                	idActivity = Integer.parseInt(myObj.nextLine());
	                	
	                	System.out.println("Listando los campamentos");	                	
	                	CampDTO emptyCamp = new CampDTO();                	
	                	codigoError =GestorCamps.gestionarOpcionCampamentos(5, emptyCamp);
	                		                	
	        			if(codigoError==-1) {
	        				System.out.println("Los campamentos no se han listado correctamente.");
	        			}
	        			else if(codigoError==0) {
	        				System.out.println("No se puede establecer conexion con la base de datos.");
	        			}
	        			else if(codigoError==1) {
	        				System.out.println("Los campamentos se han listado correctamente.");
	        			
	                	
		                	System.out.println("Indique el ID del campamento al que se desea asociar:");
		                	int idCamp = Integer.parseInt(myObj.nextLine());
		                	
		                	System.out.println("Indique el tipo de nivel educacional de la actividad:");
		         		    System.out.println("1. INFANTIL");
		         		    System.out.println("2. JUVENIL");
		         		    System.out.println("3. ADOLESCENTE");
		         		    int levelEducation = Integer.parseInt(myObj.nextLine());
		         		    
		                	activity = new ActivityDTO(idActivity, levelEducation);
		                	camp = new CampDTO(idCamp);
		                	codigoError = GestorCamps.asignarActividadEnCampamento(activity, camp);
		                	
		                	if(codigoError==1) {
		                		 System.out.println("Actividad asociada al campamento exitosamente.");
		         			}
		         			else if(codigoError==-1) {
		         				System.out.println("El ID de la actividad no es correcto. Comprueba los datos introducidos y prueba de nuevo.");
		         			}
		         			else if(codigoError==-2) {
		         				System.out.println("El ID del campamento no es correcto. Comprueba los datos introducidos y prueba de nuevo.");
		         			}
		         			else if(codigoError==-3) {
		         				System.out.println("La actividad ya ha sido asignada a otro campamento.");
		         			}
		         			else if(codigoError==-4) {
		         				System.out.println("La actividad no ha podido ser asociada al campamento indicado.");
		         			}	
		         			else if(codigoError==0) {
		         				System.out.println("No se puede establecer conexion con la base de datos.");
		         			}
	        			}
        			}
                break;
                	
                case 6:
                	// Asignar monitor responsable a campamento.
                	System.out.println("Listando los monitores");                 	
                 	monitor = new MonitorDTO();
                 	codigoError = GestorCamps.gestionarOpcionMonitor(4, monitor);
                 	                 	
         			if(codigoError==-1) {
         				System.out.println("Los monitores no se han listado correctamente.");
         			}
         			else if(codigoError==0) {
         				System.out.println("No se puede establecer conexion con la base de datos.");
         			}
         			else if(codigoError==1) {
         				System.out.println("Los monitores se han listado correctamente.");

         				System.out.println("Indique el ID del monitor responsable que desea asociar:");
         				monitorID = Integer.parseInt(myObj.nextLine());
         				monitor = new MonitorDTO(monitorID);
         				         				
         				System.out.println("Listando los campamentos");
                	
	                	camp = new CampDTO();                	
	                	codigoError =GestorCamps.gestionarOpcionCampamentos(5, camp);
	                	                	
	        			if(codigoError==-1) {
	        				System.out.println("Los campamentos no se han listado correctamente.");
	        			}
	        			else if(codigoError==0) {
	        				System.out.println("No se puede establecer conexion con la base de datos.");
	        			}
	        			else if(codigoError==1) {
	        				System.out.println("Los campamentos se han listado correctamente.");
	        				                	
		        			System.out.println("Indique el id del campamento al que desea asociar un monitor:"); 
		        			int idCamp = Integer.parseInt(myObj.nextLine());
		        			camp = new CampDTO(idCamp);
		                	 		                       
		                	codigoError = GestorCamps.asignarMonitorEnCampamento(camp, monitor);
		                	 
		                	if(codigoError==1) {
		         				System.out.println("Monitor responsable asociado a campamento exitosamente");
		         			}
		         			else if(codigoError==-1) {
		         				System.out.println("El ID del monitor no es correcto. Comprueba los datos introducidos y prueba de nuevo.");
		         			}
		         			else if(codigoError==-2) {
		         				System.out.println("El ID del campamento no es correcto. Comprueba los datos introducidos y prueba de nuevo.");
		         			}
		         			else if(codigoError==-3) {
		         				System.out.println("El monitor ya ha sido asignado como responsable de otro campamento.");
		         			}
		         			else if(codigoError==-4) {
		         				System.out.println("El monitor no ha podido ser asociado al campamento indicado.");
		         			}		         			
		         			else if(codigoError==0) {
		         				System.out.println("No se puede establecer conexion con la base de datos.");
		         			}
	         			}	        			
        			}
                	break;
                 	
                case 7:
                	// Asignar monitor de atencion especial a campamento                	
                	System.out.println("Listando los monitores");                 	
                 	monitor = new MonitorDTO();
                 	codigoError = GestorCamps.gestionarOpcionMonitor(4, monitor);
                 	                 	
         			if(codigoError==-1) {
         				System.out.println("Los monitores no se han listado correctamente.");
         			}
         			else if(codigoError==0) {
         				System.out.println("No se puede establecer conexion con la base de datos.");
         			}
         			else if(codigoError==1) {
         				System.out.println("Los monitores se han listado correctamente.");
         			                	 
         				System.out.println("Indique el ID del monitor de atencion especial que desea asociar:");
         				monitorID = Integer.parseInt(myObj.nextLine());
         				
	                	System.out.println("Listando los campamentos");	                 	
	                 	camp = new CampDTO();
	                 	
	                 	codigoError = GestorCamps.gestionarOpcionCampamentos(5, camp);
	                 		                 	
	         			if(codigoError==-1) {
	         				System.out.println("Los campamentos no se han listado correctamente.");
	         			}
	         			else if(codigoError==0) {
	         				System.out.println("No se puede establecer conexion con la base de datos.");
	         			}
	         			if(codigoError==1) {
	         				System.out.println("Los campamentos se han listado correctamente.");
	         				                 	
	         				System.out.println("Indique el id del campamento a el que desea asociar un monitor:"); 
	         				int idCamp = Integer.parseInt(myObj.nextLine());		                	
	         				camp = new CampDTO(idCamp);
	         				monitor = new MonitorDTO(monitorID);
		                   
		                	codigoError = GestorCamps.asignarMonitorEspecialEnCampamento(camp, monitor);
		                	 
		                	if(codigoError==1) {
		         				System.out.println("Monitor especial asociado a campamento exitosamente");
		         			}
		         			else if(codigoError==-1) {
		         				System.out.println("El ID del monitor no es correcto. Comprueba los datos introducidos y prueba de nuevo.");
		         			}
		         			else if(codigoError==-2) {
		         				System.out.println("El monitor no es un educador especial. Prueba a asignar otro.");
		         			}
		         			else if(codigoError==-3) {
		         				System.out.println("No es necesario introducir un monitor especial en ese campamento.");
		         			}
		         			else if(codigoError==-4) {
		         				System.out.println("El monitor especial no ha podido ser asociado al campamento indicado.");
		         			}
		         			else if(codigoError==-5) {
		         				System.out.println("El monitor especial ya ha sido asignado.");
		         			}
		         			else if(codigoError==0) {
		         				System.out.println("No se puede establecer conexion con la base de datos.");
		         			}
	         			}
        			}
                    break;                              
        	}
        }
    }
}