package modele;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Participer {
	//attributs
	
	//constructeurs
	public Participer(){};
	
	
	//méthodes
	/**
	 * permet de saisir le role d'un membre lors d'un evenement
	 * @param pIdEvenement
	 * @param pIdMembre
	 * @param role
	 * @throws InstantiationException
	 * @throws IllegalAccessException
	 * @throws ClassNotFoundException
	 * @throws SQLException
	 */
	public void setRole(int pIdEvenement, int pIdMembre, int role ) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException
	{
		//connexion à la base
		Connection connexion = null;
		Class.forName("org.hsqldb.jdbcDriver" ).newInstance();
		connexion = DriverManager.getConnection("jdbc:hsqldb:file:bd", "sa",  "" );
		
		//insertion nouveau membres
		Statement  statement = connexion.createStatement() ;
		statement.executeUpdate("INSERT INTO participer (idEvenement, idMembre, role)"
				+ "VALUES ('"+ pIdEvenement +"', '"+ pIdMembre +"', '"+ role +"')" );
		
		//fermeture base 
		statement = connexion.createStatement();
		statement.executeQuery("SHUTDOWN");
		statement.close();
		
		connexion.close();
	}
	

	/**
	 * permet d'avoir le role d'un membre lors d'un evenement
	 * @param pIdEvenement
	 * @param pIdMembre
	 * @return
	 * @throws InstantiationException
	 * @throws IllegalAccessException
	 * @throws ClassNotFoundException
	 * @throws SQLException
	 */
	
	public int getRole(int pIdEvenement, int pIdMembre) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException
	{
		Statement statement;
		ResultSet resultat;
		//connexion à la base
		Connection connexion = null;
		Class.forName("org.hsqldb.jdbcDriver" ).newInstance();
		connexion = DriverManager.getConnection("jdbc:hsqldb:file:bd", "sa",  "" );
		
		//récupération infos dans la bases
	
		statement = connexion.createStatement();
		resultat = statement.executeQuery("SELECT role FROM evenements WHERE idEvenement = " +
		pIdEvenement + " AND idMembre = " + pIdMembre);
			
	
		//fermeture base 
		statement = connexion.createStatement();
		statement.executeQuery("SHUTDOWN");
		statement.close();
		
		return resultat.getInt("role");	
	}
	
	/**
	 * permet de se désincrire un membre d'un evenelement
	 * @param pIdEvenement
	 * @param pIdMembre
	 * @throws InstantiationException
	 * @throws IllegalAccessException
	 * @throws ClassNotFoundException
	 * @throws SQLException
	 */
	public void setAnnuler(int pIdEvenement, int pIdMembre) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException
	{
		Statement statement;
		
		//connexion à la base
		Connection connexion = null;
		Class.forName("org.hsqldb.jdbcDriver" ).newInstance();
		connexion = DriverManager.getConnection("jdbc:hsqldb:file:bd", "sa",  "" );
		
		//récupération infos dans la bases
	
		statement = connexion.createStatement();
		statement.executeUpdate("DROP * WHERE idEvenement = " +
		pIdEvenement + " AND idMembre = " + pIdMembre); 
			
	
		//fermeture base 
		statement = connexion.createStatement();
		statement.executeQuery("SHUTDOWN");
		statement.close();
		
	}
	
	public ResultSet getListeParticipants(int pIdEvenement) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException
	{
		Statement statement;
		ResultSet resultat;
		//connexion à la base
		Connection connexion = null;
		Class.forName("org.hsqldb.jdbcDriver" ).newInstance();
		connexion = DriverManager.getConnection("jdbc:hsqldb:file:bd", "sa",  "" );
		
		//récupération infos dans la bases
	
		statement = connexion.createStatement();
		resultat = statement.executeQuery("SELECT idMembre FROM evenements WHERE idEvenement = " +
		pIdEvenement );
			
	
		//fermeture base 
		statement = connexion.createStatement();
		statement.executeQuery("SHUTDOWN");
		statement.close();
		
		return resultat;
	}
	
	public ResultSet getListeParticipation (int pIdMembre) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException
	{
		Statement statement;
		ResultSet resultat;
		//connexion à la base
		Connection connexion = null;
		Class.forName("org.hsqldb.jdbcDriver" ).newInstance();
		connexion = DriverManager.getConnection("jdbc:hsqldb:file:bd", "sa",  "" );
		
		//récupération infos dans la bases
	
		statement = connexion.createStatement();
		resultat = statement.executeQuery("SELECT idEvenement FROM evenements WHERE idMembre = " +
				pIdMembre );
			
	
		//fermeture base 
		statement = connexion.createStatement();
		statement.executeQuery("SHUTDOWN");
		statement.close();
		
		return resultat;
	}

}
