package controller; import database.DatabaseConnection; import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class Validateur extends JFrame { private JTable table; private DefaultTableModel tableModel; private JButton validerButton; private JButton rejeterButton; // Nouveau bouton pour rejeter private JButton retourButton; // Bouton pour retourner à la connexion private int utilisateurId; public Validateur(int utilisateurId) { this.utilisateurId = utilisateurId; setTitle("Page de validation des demandes"); setSize(600, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); // Tableau pour afficher les demandes tableModel = new DefaultTableModel(new String[]{"ID", "Description", "Statut"}, 0); table = new JTable(tableModel); JScrollPane scrollPane = new JScrollPane(table); // Boutons pour valider, rejeter et retourner validerButton = new JButton("Valider la demande"); rejeterButton = new JButton("Rejeter la demande"); // Ajout du bouton pour rejeter retourButton = new JButton("Retour à la connexion"); JPanel buttonPanel = new JPanel(); buttonPanel.add(validerButton); buttonPanel.add(rejeterButton); // Ajouter le bouton de rejet buttonPanel.add(retourButton); getContentPane().add(scrollPane, "Center"); getContentPane().add(buttonPanel, "South"); // Charger les demandes en attente loadDemandesEnAttente(); // ActionListener pour valider une demande validerButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { validerDemande(); } }); // ActionListener pour rejeter une demande rejeterButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { rejeterDemande(); } }); // ActionListener pour retourner à la page de connexion retourButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { LoginPage loginPage = new LoginPage(); loginPage.setVisible(true); dispose(); // Fermer la page validateur } }); } // Méthode pour charger les demandes en attente private void loadDemandesEnAttente() { try (Connection connection = DatabaseConnection.getConnection()) { String sql = "SELECT id, description, statut FROM demandes_aide WHERE statut = 'soumise'"; PreparedStatement statement = connection.prepareStatement(sql); ResultSet resultSet = statement.executeQuery(); tableModel.setRowCount(0); while (resultSet.next()) { int id = resultSet.getInt("id"); String description = resultSet.getString("description"); String statut = resultSet.getString("statut"); tableModel.addRow(new Object[]{id, description, statut}); } } catch (SQLException e) { e.printStackTrace(); } } // Méthode pour valider une demande private void validerDemande() { int selectedRow = table.getSelectedRow(); if (selectedRow == -1) { JOptionPane.showMessageDialog(this, "Veuillez sélectionner une demande à valider."); return; } int demandeId = (int) tableModel.getValueAt(selectedRow, 0); try (Connection connection = DatabaseConnection.getConnection()) { String sql = "UPDATE demandes_aide SET statut = 'acceptée' WHERE id = ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setInt(1, demandeId); statement.executeUpdate(); JOptionPane.showMessageDialog(this, "Demande validée avec succès."); loadDemandesEnAttente(); // Recharger les demandes } catch (SQLException e) { e.printStackTrace(); JOptionPane.showMessageDialog(this, "Erreur lors de la validation de la demande."); } } // Méthode pour rejeter une demande void rejeterDemande() { int selectedRow = table.getSelectedRow(); if (selectedRow == -1) { JOptionPane.showMessageDialog(this, "Veuillez sélectionner une demande à rejeter."); return; } int demandeId = (int) tableModel.getValueAt(selectedRow, 0); String motif_rejet = JOptionPane.showInputDialog(this, "Veuillez entrer un motif de rejet (500 caractères max):", "Motif de rejet", JOptionPane.PLAIN_MESSAGE); if (!motif_rejet.isEmpty()) { try (Connection connection = DatabaseConnection.getConnection()) { String sql = "UPDATE demandes_aide SET statut = 'rejetée', motif_rejet = ? WHERE id = ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setString(1, motif_rejet); statement.setInt(2, demandeId); statement.executeUpdate(); JOptionPane.showMessageDialog(this, "Demande rejetée avec succès."); loadDemandesEnAttente(); // Recharger les demandes } catch (SQLException e) { e.printStackTrace(); JOptionPane.showMessageDialog(this, "Erreur lors du rejet de la demande."); } } else { JOptionPane.showMessageDialog(this, "Le motif de rejet ne peut pas être vide."); } } }