package QCM;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Serializable;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

import Databases.QCMDatabase;

public class SessionQCM implements Serializable{
private Date debut=new Date();
private Date fin=new Date();
private boolean ouverte;
private QCM session;
private String nom = new String();
private Scanner sc;

private int nbrep = 5;


//getter et setter
public Date getDebut() {
	return debut;
}
public void setDebut(Date debut) {
	this.debut = debut;
}
public Date getFin() {
	return fin;
}
public void setFin(Date fin) {
	this.fin = fin;
}

public QCM getQCM() {
	return session;
}
public void setQCM(QCM session) {
	this.session = session;
}
public String getNom() {
	return nom;
}
public void setNom(String nom) {
	this.nom = nom;
}

//constructeur
public SessionQCM(QCMDatabase qcd){
	this.creerSession(qcd);
}

public SessionQCM(String nom, Date debut, Date fin, QCM session){
	this.nom=nom;
	this.debut=debut;
	this.fin=fin;
	this.session=session;
}

//creer une session de qcm

@SuppressWarnings("deprecation")
public void creerSession(QCMDatabase qcd){
	sc = new Scanner(System.in);
	
	
	System.out.println("Saisir le QCM");
	session = qcd.listQCM();
	if (session == null){
		System.out.println("Pas de QCMs!");
		return;
	}
	
	
	//SISI COPYPASTE DE STACKOVERFLOW WHEEE
	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
	System.out.println("Quel est le nom de la session?");
	String nom=sc.nextLine();
	System.out.println("Quel est la date de début de la session? (dd/mm/yyyy)");
	DateFormat df = new SimpleDateFormat("dd/mm/yyyy");
	String dd = null;
	try {
		dd = br.readLine();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		System.out.println("Entrée érronée.");
	}
	
    Date debut = null;
	try {
		debut = df.parse(dd);
	} catch (ParseException e) {
		System.out.println("Entrée érronée.");
	}
	
	System.out.println("Quel est la date de fin de la session? (dd/mm/yyyy)");
	try {
		dd = br.readLine();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		System.out.println("Entrée érronnée.");
	}
	
    Date fin = null;
	try {
		fin = df.parse(dd);
	} catch (ParseException e) {
		System.out.println("Entrée érronnée.");
	}
	
	if (debut != null && fin!= null)
	qcd.addSession(new SessionQCM(nom,debut, fin, session));
}

// Cette session est-elle ouverte actuellement?
public boolean isOuvert(){
	Calendar c = Calendar.getInstance ();
	Date date = c.getTime ();
	boolean bool1 = (this.fin.compareTo(date)<=0);
	boolean bool2 = (this.debut.compareTo(date)>=0);
	
	return (bool1&&bool2);
}

//afficher session 
public void afficherSession(){
	System.out.println(this.nom);
	SimpleDateFormat  simpleFormat = new SimpleDateFormat("dd/MM/yyyy");
	System.out.print("Date de début : ");
	System.out.println(simpleFormat.format(this.debut));	
	SimpleDateFormat  simpleFormat1 = new SimpleDateFormat("dd/MM/yyyy");
	System.out.print("Date de fin : ");
	System.out.println(simpleFormat1.format(this.fin));	
	
}

}
