package fr.iutfbleau.papillon;

import java.util.ArrayList;
import java.util.List;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

/**
 * La classe <code>BtnSupprimer</code> représente un bouton permettant
 * de supprimer un ou plusieurs rappels dans l’application <b>Papillon</b>.
 * <p>
 * Lorsqu’un utilisateur clique sur ce bouton, une boîte de confirmation
 * s’affiche afin de valider la suppression. Si l’utilisateur confirme,
 * les rappels sélectionnés sont supprimés de la liste.
 * </p>
 *
 * @version 1.0
 * @author Seri-khane YOLOU, Aylane SEHL, Jenson VAL
 */
public class BtnSupprimer extends JButton implements ActionListener{
    
    /**
     * Gestionnaire des rappels permettant d’effectuer la suppression.
     */
    private GestionRappel ges;

    /**
     * Référence vers la fenêtre principale de l’application.
     * Elle permet de gérer la visibilité des fenêtres lors de la suppression d’un rappel.
     */
    private Main main;

    /**
     * Construit un bouton "Supprimer" associé à la fenêtre principale.
     * <p>
     * Ce bouton est configuré avec une taille fixe et un écouteur d’action
     * pour réagir aux clics de l’utilisateur.
     * </p>
     *
     * @param main la fenêtre principale de l’application <b>Papillon</b>
     */
    public BtnSupprimer(Main main){
        super("Supprimer");
        this.main = main;
        setPreferredSize(new Dimension(120,25));
        addActionListener(this);
        
        setFocusPainted(false);
    }

    /**
     * Gère l’action effectuée lors d’un clic sur le bouton.
     * <p>
     * Si aucun rappel n’est sélectionné, un message d’avertissement est affiché.
     * Sinon, une boîte de dialogue de confirmation s’ouvre avant de procéder
     * à la suppression des rappels choisis.
     * </p>
     *
     * @param e l’événement d’action déclenché par un clic
     */
    @Override
    public void actionPerformed(ActionEvent e){
   
    if(e.getSource()==this){
            
            ges = new GestionRappel();
            int count = 0;
            List<PanelRappel> listRpl = new ArrayList<>();
            PanelRappel pr;

            listRpl = main.getPanelRpl();
            for(int i = 0; i<listRpl.size();i++){
                pr = listRpl.get(i);
                if(pr.getSelection()==true){
                    count++;
                }
            }
            if(count==0){
                JOptionPane.showMessageDialog(main, "Sélectionnez les rappels que vous souhaiter supprimer !");
            }else{
                          int choix = JOptionPane.showConfirmDialog(
    main,
    "Êtes-vous sûr de vouloir supprimer ce(s) rappel(s) ?",
    "Confirmation",
    JOptionPane.YES_NO_OPTION,
    JOptionPane.WARNING_MESSAGE
);      

            if (choix == JOptionPane.YES_OPTION) {
                for(int i = 0; i<listRpl.size();i++){
                pr = listRpl.get(i);
                if(pr.getSelection()==true){
                    try{
                    ges.supprimerParId(pr.getId());
                    } catch (Exception ex) {
                        ex.printStackTrace(); // affiche l'erreur dans le terminal
                    }
                }
            }
                    JOptionPane.showMessageDialog(main, "Les rappels on bien étaient supprimé.");
                    new Main().setVisible(true);
                    main.dispose();
        }
               
            }
        }
    }
}