package model;

import java.util.ArrayList;
import java.util.Date;

public class Rendu {
	private Date dateRendu;
	private float score;
	private Eleve eleve;
	private Session session;
	private ArrayList<Reponse> reponsesChoisies;
	
	public Rendu(Eleve eleve, Session session, ArrayList<Reponse> reponsesChoisies) {
		this.dateRendu = new Date();
		this.eleve = eleve;
		this.session = session;
		this.reponsesChoisies = reponsesChoisies;
		this.setScore();
	}
	
	public Rendu(Date dateRendu, Eleve eleve, Session session, ArrayList<Reponse> reponsesChoisies) {
		this.dateRendu = dateRendu;
		this.eleve = eleve;
		this.session = session;
		this.reponsesChoisies = reponsesChoisies;
		this.setScore();
	}
	/**
	 * Getter élève
	 * @return Elève du rendu
	 */
	public Eleve getEleve() {
		return eleve;
	}
	/**
	 * Setter élève
	 * @param eleve Elève de rendu
	 */
	public void setEleve(Eleve eleve) {
		this.eleve = eleve;
	}
	/**
	 * Getter session
	 * @return Session du rendu
	 */
	public Session getSession() {
		return session;
	}
	/**
	 * Setter session
	 * @param session Session du rendu
	 */
	public void setSession(Session session) {
		this.session = session;
	}
	/**
	 * Getter date du rendu
	 * @return Date du rendu
	 */
	public Date getDateRendu() {
		return dateRendu;
	}
	/**
	 * Getter score
	 * @return Score du rendu
	 */
	public float getScore() {
		return score;
	}
	/**
	 * Setter score (calculé à partir des réponses choisies)
	 */
	public void setScore() {
		int count_reponsesJustes = 0;
		int i;
		if (this.reponsesChoisies.isEmpty()) {
			this.score = 0f;
		} else {
			for (i = 0 ; i < this.reponsesChoisies.size() ; i++) {
				if (this.reponsesChoisies.get(i).isVraie()) {
					count_reponsesJustes++;
				}
			}
			this.score = ((float) count_reponsesJustes / (float) this.session.getQcm().countReponsesVraies()) * 20f;
		}
	}
	/**
	 * Getter réponses choisies
	 * @return Liste de réponses choisies par l'élève lors de la session
	 */
	public ArrayList<Reponse> getReponsesChoisies() {
		return reponsesChoisies;
	}
	/**
	 * Setter réponses choisies
	 * @param reponsesChoisies Liste de réponses choisies par l'élève lors de la session
	 */
	public void setReponsesChoisies(ArrayList<Reponse> reponsesChoisies) {
		this.reponsesChoisies = reponsesChoisies;
	}
}
