package model;

import java.util.ArrayList;

public class QCM {
	private String libelle;
	private boolean prive;
	private Enseignant createur;
	private ArrayList<Question> questions;
	
	/**
	 * Type désignant un questionnaire à choix multiples
	 * @param libelle Titre du QCM
	 * @param prive Vrai si QCM privé, faux sinon
	 * @param createur L'enseignant créateur du QCM
	 * @param questions Les questions du QCM
	 */
	public QCM(String libelle, boolean prive, Enseignant createur, ArrayList<Question> questions) {
		this.libelle = libelle;
		this.prive = prive;
		this.createur = createur;
		this.questions = questions;
	}
	/**
	 * Getter libellé d'un QCM
	 * @return Libellé d'un QCM
	 */
	public String getLibelle() {
		return libelle;
	}
	/**
	 * Setter libellé d'un QCM
	 * @param libelle Libellé d'un QCM
	 */
	public void setLibelle(String libelle) {
		this.libelle = libelle;
	}
	/**
	 * Getter caractère privé d'un QCM
	 * @return Vrai si privé, faux sinon
	 */
	public boolean isPrive() {
		return prive;
	}
	/**
	 * Setter caractère privé d'un QCM
	 * @param prive Caractère privé d'un QCM
	 */
	public void setPrive(boolean prive) {
		this.prive = prive;
	}
	/**
	 * Getter créateur d'un QCM
	 * @return Enseignant créateur d'un QCM
	 */
	public Enseignant getCreateur() {
		return createur;
	}
	/**
	 * Setter créateur d'un QCM
	 * @param createur Enseignant créateur d'un QCM
	 */
	public void setCreateur(Enseignant createur) {
		this.createur = createur;
	}
	public ArrayList<Question> getQuestions() {
		return questions;
	}
	public void setQuestions(ArrayList<Question> questions) {
		this.questions = questions;
	}
	/**
	 * Compte le nombre de réponses vraies dans un QCM
	 * @return le nombre de bonnes réponses dans le QCM
	 */
	public int countReponsesVraies() {
		int i;
		int j;
		int count = 0;
		for (i = 0 ; i < this.questions.size(); i++) {
			for (j = 0 ; j < this.questions.get(i).getReponses().size() ; j++) {
				if (this.questions.get(i).getReponses().get(j).isVraie()) {
					count++;
				}
			}
		}
		return count;
	}
	/**
	 * Trouve une réponse dans un QCM
	 * @param str Libellé de la réponse
	 * @return Instance de la réponse dans le QCM
	 */
	public Reponse getReponse(int id) {
		int i = 0;
		while (i < this.questions.size()) {
			int j = 0;
			while (j < this.questions.get(i).getReponses().size()) {
				if (this.questions.get(i).getReponses().get(j).getId() == id) {
					return this.questions.get(i).getReponses().get(j);
				}
				j++;
			}
			i++;
		}
		return null;
	}
}
