package Interface;

import java.io.Serializable;
import java.util.Scanner;

import utilisateur.*;
import Databases.*;
import QCM.*;

public class Menu {
	private String answer;
	private Scanner sc = new Scanner(System.in);

	public Menu(QCMDatabase qcd, UserDatabase usd){
		
		System.out.println("~~~Welcome to GL2-TopProjet-V0.8~~~");
		
		do{
			
		System.out.println("Entrer id");
		String login=sc.nextLine();
		System.out.println("Entrer password");
		String password=sc.nextLine();
		
		TypeUser type = usd.getType(login);
		
		if (type == TypeUser.inexistant){
			System.out.println("Id Inexistant.");
		}
		else
		if (usd.getUser(login, type).getPass().equals(password)){
			if (type == TypeUser.admin)
				MenuAdmin((Administrateur) usd.getUser(login, type),usd);
			
			if (type == TypeUser.eleve)
				MenuEleve((Eleve) usd.getUser(login, type),qcd);
			
			if (type == TypeUser.prof)
				MenuProf((Professeur) usd.getUser(login, type),qcd);
		}
		sc.nextLine();
		
		} while (true);
		
	}
	
	
	void MenuAdmin(Administrateur a, UserDatabase usd){
		System.out.println("Bienvenue, "+a.getNom()+" "+a.getPrenom()+"!");
		boolean logout = false;
		
		do{
		System.out.println("Que voulez-vous faire?");
		System.out.println("1) Créer Utilisateur");
		System.out.println("2) Créer Promotion");
		System.out.println("3) Créer Module");
		System.out.println("4) Logout");
		
		switch(sc.nextInt()){
		case 1:
			a.CreerUser(usd);
			break;
			
		case 2:
			break;
			
		case 3:
			break;
			
		case 4:
			logout = true;
			usd.save("User.srl");
			System.out.println("Déloggé.");
			break;
			
		default:
		System.out.println("Choix incorrect.");
		}
		}
		while (!logout);
		
		
		
	}

	void MenuProf(Professeur p, QCMDatabase qcd){
		System.out.println("Bienvenue, "+p.getNom()+" "+p.getPrenom()+"!");
		boolean logout = false;
		
		do{
		System.out.println("Que voulez-vous faire?");
		System.out.println("1) Créer QCM");
		System.out.println("2) Modifier QCM");
		System.out.println("3) Créer Session");
		System.out.println("4) Consulter résultats session");
		System.out.println("5) Logout");
		
		switch(sc.nextInt()){
		case 1:
			qcd.addQCM(new QCM(qcd));
			break;
			
		case 2:
			QCM yolo = qcd.listQCM();
			if (yolo == null)
				break;
			
			yolo.modifierQCM();
			break;
			
		case 3:
			qcd.addSession(new SessionQCM(qcd));
			break;
			
		case 4:
			break;
			
		case 5:
			logout = true;
			qcd.save("QCM.srl");
			System.out.println("Déloggé.");
			break;
			
		default:
		System.out.println("Choix incorrect.");
		}
		}
		while (!logout);
	}
	
	void MenuEleve(Eleve e, QCMDatabase qcd){

		System.out.println("Bienvenue, "+e.getNom()+" "+e.getPrenom()+"!");
		boolean logout = false;
		
		do{
		System.out.println("Que voulez-vous faire?");
		System.out.println("1) Répondre à un QCM");
		System.out.println("2) Consulter résultats Session");
		System.out.println("3) Logout");
		
		switch(sc.nextInt()){
		case 1:
			SessionQCM chosen;
			chosen=qcd.listSession();
			if (chosen == null)
				break;
			
			if (chosen.isOuvert()) 
			{
				e.repondreSession(chosen);
				break;
			}
			else
				System.out.println("Cette session n'est plus ouverte!");
			break;
			
		case 2:
			break;
					
		case 3:
			logout = true;
			System.out.println("Déloggé.");
			break;
			
		default:
		System.out.println("Choix incorrect.");
		}
		}
		while (!logout);
		
	}
	
}
