150 lines
5.8 KiB
Java
150 lines
5.8 KiB
Java
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.");
|
|
}
|
|
}
|
|
}
|