package client.control.admin;

import client.Application;
import client.ApplicationHelper;
import client.model.user.Droits;
import client.model.user.Role;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import client.view.admin.PanelAdmin;
import javax.swing.JOptionPane;

import reseau.DataNotFoundException;
import reseau.IManagementOperationProxyFacade;
import reseau.OptimEISTIServerProxyFacade;
import reseau.UnauthorizedOperationException;

/**
 * <u><b>Explication générale de la classe :</b></u>
 * <P>
 * Cette classe permet de gérer l'évènement lié au bouton du groupe
 * 
 * @author Dream Team - ING2
 */
public class EcouteurGroupe implements ActionListener {

	public EcouteurGroupe() {
	}

	/**
	 * <u><i>Explication générale de la méthode :</i></u> <P> Cette méthode permet
	 * de gérer les évènements liés à la souris
	 * 
	 * @param e
	 *            Evènement souris
	 * 
	 */
	public void actionPerformed(ActionEvent e) {
		Role role = Application.getInstance().getUser(Application.idSelect)
				.getRolePersonne();

		System.out.println("role de l'user : " + role);

		// idRole du role en question
		int idRole = Application.getInstance().getIdRole(role);

		// On test si ce role possède le droit de suppression de membre
		if (ApplicationHelper.ARoleCan(idRole, Droits.MODIFIER_GROUPE)) {

			if (PanelAdmin.getInstance().getPanGroup().getGroupBox()
					.getSelectedIndex() != 0
					&& PanelAdmin.getInstance().getPanGroup().getGroupBox()
							.getSelectedIndex() != ApplicationHelper
							.GroupsOfUser(Application.idSelect).size() + 1) {

				PanelAdmin.getInstance().getPmg().setAncienGroupe(
						PanelAdmin.getInstance().getPanGroup().getGroupBox()
								.getSelectedItem().toString());

				// On met à jour les users du groupe
				// try{

				/*
				 * int idGroup =
				 * Application.getInstance().getIdGroupe(PanelAdmin
				 * .getInstance().getPmg().getAncienGroupe());
				 * IManagementOperationProxyFacade mop =
				 * OptimEISTIServerProxyFacade.getInstance();
				 * Application.getInstance
				 * ().updateArrayUser(mop.getUsers(Application.idSelect,
				 * idGroup));
				 */
				PanelAdmin.getInstance().getPmg().remplirUserBoxRespoGroupe();
				PanelAdmin.getInstance().getPmg().updateUI();
				/*
				 * } catch (UnauthorizedOperationException ex) {
				 * JOptionPane.showMessageDialog(null, ex.getLocalizedMessage(),
				 * "Impossible de mettre à jour : interdit pour vous !",
				 * JOptionPane.ERROR_MESSAGE); }catch (DataNotFoundException
				 * ed){ JOptionPane.showMessageDialog(null,
				 * ed.getLocalizedMessage(),
				 * "Impossible de mettre à jour : utilisateur non trouvé !",
				 * JOptionPane.ERROR_MESSAGE); }
				 */
			}
		} else {
			JOptionPane.showMessageDialog(PanelAdmin.getInstance(),
					"Vous n'avez pas les droits pour modifier un groupe",
					"Erreur", JOptionPane.ERROR_MESSAGE);
		}
	}
}
