package client.control.membre;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

import client.Application;
import client.ApplicationHelper;
import client.model.LienUserGroupRole;
import client.model.user.Droits;
import client.model.user.Role;
import client.view.PanelGenerale;
import client.view.accueil.PanelAccueil;
import client.view.admin.PanelAdmin;
import client.view.member.PanelMembre;

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

    public EcouteurRejoindreGroupe() {}

    /**<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) {

        //On recupère le panel du membre
        PanelMembre pm = (PanelMembre) PanelGenerale.getInstance().getVueOnglet().getSelectedComponent();

        //On récupère le nom de l'utilisateur et du groupe
        String nomUser = Application.getInstance().getUser(Application.idSelect).getLogin();
        String nomGroup = pm.getAccueil().getPanMembre().getGroupJoinBox().getSelectedItem().toString();

        //On récupère les id
        int idUser = Application.idSelect;
        int idGroup = Application.getInstance().getIdGroupe(pm.getAccueil().getNomGroupe());
        int idGroupARejoindre = Application.getInstance().getIdGroupe(nomGroup);
        int idRole = Role.IDMEMBRE;
        
        //On test si ce role possède le droit de rejoindre le groupe
        if (ApplicationHelper.ARoleCanInGroup(idUser, idGroup, Droits.REJOINDRE_GROUPE)) {

            //On ajoute le membre au groupe
            Application.getInstance().getArrayLinkOfUserGroupRole().add(new LienUserGroupRole(idUser, idGroupARejoindre, idRole));

            //On MAJ les activités récentes
            Application.getInstance().getGroupe(idGroupARejoindre).addActivity(nomUser+" a rejoint le groupe "+nomGroup);
            
            Application.getInstance().getUser(idUser).addActivity(nomUser+" a rejoint le groupe "+nomGroup);
            PanelAccueil.getInstance().getListOfActivite().setListData(Application.getInstance().getUser(idUser).displayActivities());
            PanelAccueil.getInstance().updateUI();
            
            Application.getInstance().sortByIdUserArrayLink();

        } else {
            JOptionPane.showMessageDialog(PanelAdmin.getInstance(), "Vous n'avez pas les droits pour rejoindre un groupe", "Erreur", JOptionPane.ERROR_MESSAGE);
        }

    }
}
