package QCM;

import java.io.Serializable;
import java.util.*;


public class Question implements Comparable<Question>, Serializable {
	private Scanner sc;
	private String libelle=new String();
	private ArrayList<Reponse> rep = new ArrayList<>();
	private int ordre; //permet de trier les question en leur donnant un ordre
	//THIBAULT GIMENEEEEEEEEEEEEEEEEEEZ
	private Scanner sc2;

//getter et setter
public String getLibelle() {
	return libelle;
}
public void setLibelle(String libelle) {
	this.libelle = libelle;
}
public int getOrdre() {
	return ordre;
}
public void setOrdre(int ordre) {
	this.ordre = ordre;
}

//constructeur
public Question(String libelle, ArrayList<Reponse> rep, int ordre){
	this.libelle=libelle;
	this.rep=rep;
	this.ordre=ordre;
	}

public Question(){
		this.creerQuestion(0);
	}



//Creation de question
public Question creerQuestion(int ordre){
	sc = new Scanner(System.in);
	int i=0;//permet de conter le nombre de reponse vrai
	int j=0;//permet de donner un ordre au reponse
	
	System.out.println("Quel est le libellé de la question");
	String libelle=sc.nextLine();
	System.out.println("Saisir les réponses possible à la question (une seul reponse doit etre vrai");
	Reponse r1=new Reponse();	
	Reponse r2=new Reponse();
	Reponse r3=new Reponse();
	Reponse r4=new Reponse();
	
	System.out.println("Reponse1" );
	r1=r1.creerReponse(j);
	j++;
	System.out.println("Reponse2" );
	r2=r2.creerReponse(j);
	j++;
	System.out.println("Reponse3" );
	r3=r3.creerReponse(j);
	j++;
	System.out.println("Reponse4" );
	r4=r4.creerReponse(j);
	
	if (r1.isVrai()==true) i=i+1;
	if (r2.isVrai()==true) i=i+1;
	if (r3.isVrai()==true) i=i+1;
	if (r4.isVrai()==true) i=i+1;
	
	if(i==1) 
	{
		rep.add(r1);
		rep.add(r2);
		rep.add(r3);
		rep.add(r4);		
	}
	else {System.out.println("Une seul reponse doit etre vraie.Veuillez réécrire la question.");
		creerQuestion(ordre);
		}
	Collections.sort(rep);
	Question q=new Question(libelle, rep, ordre);
	
	return  q;
	}
	

//fonction afficher question
public void afficherQuestion(){
	int i=0;
	
	System.out.println("La question est :" +" "+ this.getLibelle() );
		for (Reponse c : this.rep){
			System.out.println(i+")"+" "+"Reponse"+i+" "+ ":" + c);
			i++;
	}
}

//fonction modifier question
public Question modifierQuestion(Question q){
		Reponse r= new Reponse();

	int sousmenu = 0;
	sc2 = new Scanner(System.in);
	
	while (sousmenu!=9){
	System.out.println("--Menu de modification--");
	q.afficherQuestion();
	System.out.println("Modifier libelle de la question : tapez 1");
	System.out.println("Modifier une réponse : tapez 2");
	System.out.println("quitter : tapez 9");
	sousmenu = sc2.nextInt();//Exepction à faire 
	sc2.nextLine();
	

	switch(sousmenu)
	{
case 1 :{

System.out.println("---Modifier libellé ---");

	System.out.println("Taper le nouveau libelle :");
	String newlibelle = sc2.nextLine();
	q.libelle=newlibelle;
	break;
	}

case 2 :{
int choix = 0;
	System.out.println("---Modification d'une réponse---");
	System.out.println("Mdifier la Reponse0 : tapez 1");
	System.out.println("Mdifier la Reponse1 : tapez 2");
	System.out.println("Mdifier la Reponse2 : tapez 3");
	System.out.println("Mdifier la Reponse3 : tapez 4");
	System.out.println("quitter : tapez 9");
	choix = sc2.nextInt();
	 sc2.nextLine();
	switch(choix)
	{
	case 1 :{
		r=r.creerReponse(choix);
		this.rep.add(choix, r);
		break;
		}
	
	case 2 :{
		r=r.creerReponse(choix);
		this.rep.add(choix, r);
		break;
			}
			
	case 3 :{
		r=r.creerReponse(choix);
		this.rep.add(choix, r);
		break;
			}
	case 4  :{
		r=r.creerReponse(choix);
		this.rep.add(choix, r);
		break;
			}
		}
	break;
	}
}
	

}
	return q;
		
}



//fonction pour rendre les question comparable
@Override
public int compareTo(Question other) {
	int b;
	b=other.ordre;
	int d;
	d=this.ordre;
	if (d<b) {return -1;}
	else if (d>b) {return 1;}
	else
	return 0;  
	}


//fonction supprimer question à faire

}
