package client.control.membre;

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

import javax.swing.JOptionPane;

import reseau.DataNotFoundException;
import reseau.IDatabaseOperationsProxyFacade;
import reseau.OptimEISTIServerProxyFacade;
import reseau.UnauthorizedOperationException;
import client.Application;
import client.model.user.Utilisateur;
import client.view.admin.PanelAdmin;
import client.view.admin.gestionUser.PanelModifierUser;

/**<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 modifier les membres
 *
 * @author Dream Team - ING2
 */
public class EcouteurModifierMembre implements ActionListener {

	//Variables permettant de définir les ActionCommand
    public static final String VALIDER = "VALIDER";

    public EcouteurModifierMembre() {}

    /**<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) {
        if(e.getActionCommand().equals(VALIDER)){

            if ((PanelModifierUser.getInstance().getLogin().getText().length() > 0) &&
                    (PanelModifierUser.getInstance().getPassword().getText().length() > 0)){
            	
            	//On crée un utilisateur qui va être celui modifié
            	Utilisateur newUser = new Utilisateur();
            	String login = PanelAdmin.getInstance().getPmu().getLogin().getText();
            	String password = PanelAdmin.getInstance().getPmu().getPassword().getText();
            	int idUser = PanelAdmin.getInstance().getPmu().getUserModifier().getIdPersonne();
            	
                //Affecter les modifs
            	newUser.setIdPersonne(idUser);
            	newUser.setLogin(login);
            	newUser.setPassword(password);
                
                try{
                	
            		//On recupère le réseau
            		IDatabaseOperationsProxyFacade dao = OptimEISTIServerProxyFacade.getInstance();
            		
            		//On crée le groupe modifié
            		newUser = dao.updateUser(Application.idSelect, idUser, newUser);
            		
            		//On ajoute le groupe dans le cache
            		Application.getInstance().addUser(newUser.getIdPersonne(), newUser);
            		
                } catch (UnauthorizedOperationException ex) {
                    
            		JOptionPane.showMessageDialog(null,
                        ex.getLocalizedMessage(),
                        "Impossible de modifier un groupe : interdit pour vous !",
                        JOptionPane.ERROR_MESSAGE);
            	} catch (DataNotFoundException ed) {
            		JOptionPane.showMessageDialog(null,
                            ed.getLocalizedMessage(),
                            "Impossible de modifier un groupe : groupe non trouvé",
                            JOptionPane.ERROR_MESSAGE);
				}
            }
        }
    }
}
