diff --git a/src/main/java/controller/SoumettreDemande.java b/src/main/java/controller/SoumettreDemande.java index 2fcd2f4..2a003c1 100644 --- a/src/main/java/controller/SoumettreDemande.java +++ b/src/main/java/controller/SoumettreDemande.java @@ -16,6 +16,7 @@ public class SoumettreDemande extends JFrame { private JTextField descriptionField; private JButton soumettreButton; private JButton retourButton; // Bouton retour + private JButton voirMotifButton; // Bouton pour voir motif de rejet private JTable demandesTable; private DefaultTableModel tableModel; private int utilisateurId; @@ -34,7 +35,8 @@ public class SoumettreDemande extends JFrame { JLabel descriptionLabel = new JLabel("Description de la demande :"); descriptionField = new JTextField(20); soumettreButton = new JButton("Soumettre"); - retourButton = new JButton("Retour à l'accueil"); // Création du bouton retour + retourButton = new JButton("Retour à l'accueil"); // Création du bouton retour + voirMotifButton = new JButton("Voir motif de refus"); // Tableau pour afficher les anciennes demandes tableModel = new DefaultTableModel(new String[]{"ID", "Description", "Statut", "Bénévole en charge"}, 0); @@ -55,6 +57,8 @@ public class SoumettreDemande extends JFrame { JPanel bottomPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); bottomPanel.add(retourButton); add(bottomPanel, BorderLayout.SOUTH); // Ajouter le panel du bouton retour en bas + bottomPanel.add(voirMotifButton); + add(bottomPanel, BorderLayout.SOUTH); // Charger les anciennes demandes loadAnciennesDemandes(); @@ -77,6 +81,14 @@ public class SoumettreDemande extends JFrame { dispose(); // Fermer la page actuelle } }); + + // ActionListener pour soumettre une demande + voirMotifButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + afficherMotifRefus(); + } + }); } // Méthode pour soumettre une demande @@ -103,6 +115,51 @@ public class SoumettreDemande extends JFrame { } } + // Méthode pour charger les anciennes demandes + private void afficherMotifRefus() { + int selectedRow = demandesTable.getSelectedRow(); + if (selectedRow == -1) { + JOptionPane.showMessageDialog(this, "Veuillez sélectionner une demande dont vous voulez afficher le motif de rejet."); + return; + } + + int demandeId = (int) tableModel.getValueAt(selectedRow, 0); + + try (Connection connection = DatabaseConnection.getConnection()) { + // Verifier si la demande est bien 'rejetée' d'abord + String checkSql = "SELECT description, motif_rejet, statut FROM demandes_aide WHERE id = ? "; + PreparedStatement checkStatement = connection.prepareStatement(checkSql); + checkStatement.setInt(1, demandeId); + ResultSet resultSet = checkStatement.executeQuery(); + + if (resultSet.next()) { + String currentStatus = resultSet.getString("statut"); + + if ("rejetée".equals(currentStatus)) { + // Affichage seulement si le statut est 'rejetée' + String desc = resultSet.getString("description"); + String motif = resultSet.getString("motif_rejet"); + + String message = + "Description de la demande:\n" + + desc + + "\n___________________________________________________\n" + + "Motif de rejet :\n" + + motif; + + JOptionPane.showMessageDialog(this, message); + } else { + // Statut n'est pas 'rejetée' + JOptionPane.showMessageDialog(this, "Motif non affiché car la demande n'est pas 'rejetée'. (Statut actuel : " + currentStatus + ")"); + } + loadAnciennesDemandes(); // Recharger les demandes après tentative/réssuite de l'affichage du motif + } + } catch (SQLException e) { + e.printStackTrace(); + JOptionPane.showMessageDialog(this, "Erreur lors de l'affichage du motif."); + } + } + // Méthode pour charger les anciennes demandes private void loadAnciennesDemandes() { try (Connection connection = DatabaseConnection.getConnection()) { @@ -112,7 +169,8 @@ public class SoumettreDemande extends JFrame { "LEFT JOIN utilisateur " + "ON demandes_aide.benevole_id = utilisateur.id " + "AND utilisateur.role = 'benevole' " + - "WHERE demandes_aide.utilisateur_id = ? ;"; + "WHERE demandes_aide.utilisateur_id = ? " + + "ORDER BY demandes_aide.statut ;"; PreparedStatement statement = connection.prepareStatement(sql); statement.setInt(1, utilisateurId); ResultSet resultSet = statement.executeQuery(); @@ -133,7 +191,7 @@ public class SoumettreDemande extends JFrame { } public static void main(String[] args) { - SoumettreDemande soumettreDemande = new SoumettreDemande(4); // Test avec un utilisateur par défaut + SoumettreDemande soumettreDemande = new SoumettreDemande(1); // Test avec un utilisateur par défaut soumettreDemande.setVisible(true); } } diff --git a/src/main/java/controller/Validateur.java b/src/main/java/controller/Validateur.java index 79c6dab..fde1a24 100644 --- a/src/main/java/controller/Validateur.java +++ b/src/main/java/controller/Validateur.java @@ -127,18 +127,24 @@ public class Validateur extends JFrame { } int demandeId = (int) tableModel.getValueAt(selectedRow, 0); + String motif_rejet = JOptionPane.showInputDialog(this, "Veuillez entrer un motif de rejet (500 caractères max):"); - try (Connection connection = DatabaseConnection.getConnection()) { - String sql = "UPDATE demandes_aide SET statut = 'rejetée' WHERE id = ?"; - PreparedStatement statement = connection.prepareStatement(sql); - statement.setInt(1, demandeId); - statement.executeUpdate(); + 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."); + 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."); } } }