From 4cb93d854646e50f5ea98731e860d7a12d80462f Mon Sep 17 00:00:00 2001 From: Sami-Koe Ferreira Date: Mon, 14 Oct 2024 18:27:29 +0200 Subject: [PATCH] session lundi 14/10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit j'ai fait: - user stories 10 et 11 - j'ai commencé à ajouter un menu pour les bénévoles pour choisir si on veut voir les demandes acceptées ou en cours séparément - j'ai commencé à faire une page pour voir les demandes en cours, séparée de celle pour les demandes acceptées; mais pour le moment elle affiche toutes les demandes en cours indépendamment de qui les a prises - j'ai modifié la bdd sql pour ajouter 2 colonnes "motif_rejet" et "benevole_id", du coup la fonction prendreDemande() marche maintenant --- .../java/controller/AjoutUtilisateur.java | 108 +++++++++++++++ .../BenevoleDemandesEncoursPage.java | 130 ++++++++++++++++++ .../java/controller/BenevoleDemandesPage.java | 17 +-- src/main/java/controller/LoginPage.java | 4 +- 4 files changed, 247 insertions(+), 12 deletions(-) create mode 100644 src/main/java/controller/AjoutUtilisateur.java create mode 100644 src/main/java/controller/BenevoleDemandesEncoursPage.java diff --git a/src/main/java/controller/AjoutUtilisateur.java b/src/main/java/controller/AjoutUtilisateur.java new file mode 100644 index 0000000..60dde4f --- /dev/null +++ b/src/main/java/controller/AjoutUtilisateur.java @@ -0,0 +1,108 @@ +package controller; + +import database.DatabaseConnection; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; + +public class AjoutUtilisateur extends JFrame { + private JTextField nomField; + private JTextField emailField; + private JComboBox typeComboBox; + private JButton ajouterButton; + private JButton retourAccueilButton; + + public AjoutUtilisateur() { + setTitle("Ajouter un utilisateur"); + setSize(400, 300); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setLocationRelativeTo(null); + setLayout(new GridBagLayout()); + + GridBagConstraints gbc = new GridBagConstraints(); + gbc.insets = new Insets(10, 10, 10, 10); + gbc.fill = GridBagConstraints.HORIZONTAL; + + JLabel nomLabel = new JLabel("Nom :"); + gbc.gridx = 0; + gbc.gridy = 0; + add(nomLabel, gbc); + + nomField = new JTextField(); + gbc.gridx = 1; + gbc.gridy = 0; + gbc.gridwidth = 2; + add(nomField, gbc); + + JLabel emailLabel = new JLabel("Email :"); + gbc.gridx = 0; + gbc.gridy = 1; + add(emailLabel, gbc); + + emailField = new JTextField(); + gbc.gridx = 1; + gbc.gridy = 1; + gbc.gridwidth = 2; + add(emailField, gbc); + + JLabel typeLabel = new JLabel("Type d'utilisateur :"); + gbc.gridx = 0; + gbc.gridy = 2; + add(typeLabel, gbc); + + typeComboBox = new JComboBox<>(new String[]{"benevole", "personne_besoin", "validateur"}); + gbc.gridx = 1; + gbc.gridy = 2; + gbc.gridwidth = 2; + add(typeComboBox, gbc); + + ajouterButton = new JButton("Ajouter"); + gbc.gridx = 1; + gbc.gridy = 3; + add(ajouterButton, gbc); + + retourAccueilButton = new JButton("Retour à l'accueil"); + gbc.gridx = 1; + gbc.gridy = 4; + add(retourAccueilButton, gbc); + + ajouterButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + ajouterUtilisateur(); + } + }); + + retourAccueilButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + MainMenu menu = new MainMenu(); + menu.setVisible(true); + dispose(); + } + }); + } + + private void ajouterUtilisateur() { + String nom = nomField.getText(); + String email = emailField.getText(); + String typeUtilisateur = (String) typeComboBox.getSelectedItem(); + + try (Connection connection = DatabaseConnection.getConnection()) { + String sql = "INSERT INTO utilisateurs (nom, email, type_utilisateur) VALUES (?, ?, ?)"; + PreparedStatement statement = connection.prepareStatement(sql); + statement.setString(1, nom); + statement.setString(2, email); + statement.setString(3, typeUtilisateur); + statement.executeUpdate(); + JOptionPane.showMessageDialog(this, "Utilisateur ajouté avec succès !"); + } catch (SQLException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/controller/BenevoleDemandesEncoursPage.java b/src/main/java/controller/BenevoleDemandesEncoursPage.java new file mode 100644 index 0000000..561b3e9 --- /dev/null +++ b/src/main/java/controller/BenevoleDemandesEncoursPage.java @@ -0,0 +1,130 @@ +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 BenevoleDemandesEncoursPage extends JFrame { + private JTable table; + private DefaultTableModel tableModel; + private JButton finaliserDemandeButton; + private JButton retourBenevoleButton; + private int utilisateurId; // Ajout de l'ID du bénévole + + public BenevoleDemandesEncoursPage(int utilisateurId) { // Ajout du paramètre utilisateurId + this.utilisateurId = utilisateurId; // Stockage de l'ID du bénévole + setTitle("Demandes en cours"); + 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); + + // Bouton pour prendre et finaliser des demandes + finaliserDemandeButton = new JButton("Finaliser la demande"); + retourBenevoleButton = new JButton("Retour au menu bénévole"); + + // Panel des boutons + JPanel buttonPanel = new JPanel(); + buttonPanel.add(finaliserDemandeButton); + buttonPanel.add(retourBenevoleButton); + + getContentPane().add(scrollPane, "Center"); + getContentPane().add(buttonPanel, "South"); + + // ActionListener pour finaliser une demande + finaliserDemandeButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + finaliserDemande(); + } + }); + + // Bouton de retour à la page d'accueil + // ActionListener pour retourner à la page de connexion + retourBenevoleButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + MenuBenevole menu = new MenuBenevole(utilisateurId); + menu.setVisible(true); + dispose(); + } + }); + + // Charger les demandes acceptées + loadDemandesEnCours(); + } + + // Méthode pour charger les demandes acceptées + private void loadDemandesEnCours() { + try (Connection connection = DatabaseConnection.getConnection()) { + String sql = "SELECT id, description, statut FROM demandes_aide WHERE statut = 'en cours'"; + PreparedStatement statement = connection.prepareStatement(sql); + ResultSet resultSet = statement.executeQuery(); + + tableModel.setRowCount(0); // Réinitialiser le tableau + 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 finaliser une demande + private void finaliserDemande() { + int selectedRow = table.getSelectedRow(); + if (selectedRow == -1) { + JOptionPane.showMessageDialog(this, "Veuillez sélectionner une demande à finaliser."); + return; + } + + int demandeId = (int) tableModel.getValueAt(selectedRow, 0); + + try (Connection connection = DatabaseConnection.getConnection()) { + // Verifier si la demande est bien 'en cours' d'abord + String checkSql = "SELECT statut FROM demandes_aide WHERE id = ? AND benevole_id = ?"; + PreparedStatement checkStatement = connection.prepareStatement(checkSql); + checkStatement.setInt(1, demandeId); + checkStatement.setInt(2, utilisateurId); + ResultSet resultSet = checkStatement.executeQuery(); + + if (resultSet.next()) { + String currentStatus = resultSet.getString("statut"); + Integer benevole_id = resultSet.getInt("benevole_id"); + + if ("en cours".equals(currentStatus) && benevole_id.equals(utilisateurId)) { + // Mise à jour seulement si le statut est 'en cours' + String updateSql = "UPDATE demandes_aide SET statut = 'finalisée' WHERE id = ?"; + PreparedStatement updateStatement = connection.prepareStatement(updateSql); + updateStatement.setInt(1, demandeId); + updateStatement.executeUpdate(); + + JOptionPane.showMessageDialog(this, "Demande finalisée avec succès."); + } else { + // Statut n'est pas 'en cours' + JOptionPane.showMessageDialog(this, "Demande non finalisée car le statut n'est pas 'en cours'. (Statut actuel : " + currentStatus + ")"); + } + loadDemandesEnCours(); // Recharger les demandes après tentative/réssuite de finalisation + } + } catch (SQLException e) { + e.printStackTrace(); + JOptionPane.showMessageDialog(this, "Erreur lors de la finalisation de la demande."); + } + } +} + diff --git a/src/main/java/controller/BenevoleDemandesPage.java b/src/main/java/controller/BenevoleDemandesPage.java index ffabf7b..d6dc3d0 100644 --- a/src/main/java/controller/BenevoleDemandesPage.java +++ b/src/main/java/controller/BenevoleDemandesPage.java @@ -16,7 +16,7 @@ public class BenevoleDemandesPage extends JFrame { private DefaultTableModel tableModel; private JButton prendreDemandeButton; private JButton finaliserDemandeButton; - private JButton retourButton; + private JButton retourBenevoleButton; private int utilisateurId; // Ajout de l'ID du bénévole public BenevoleDemandesPage(int utilisateurId) { // Ajout du paramètre utilisateurId @@ -34,13 +34,13 @@ public class BenevoleDemandesPage extends JFrame { // Bouton pour prendre et finaliser des demandes prendreDemandeButton = new JButton("Prendre la demande"); finaliserDemandeButton = new JButton("Finaliser la demande"); - retourButton = new JButton("Retour à l'accueil"); + retourBenevoleButton = new JButton("Retour au menu bénévole"); // Panel des boutons JPanel buttonPanel = new JPanel(); buttonPanel.add(prendreDemandeButton); buttonPanel.add(finaliserDemandeButton); - buttonPanel.add(retourButton); + buttonPanel.add(retourBenevoleButton); getContentPane().add(scrollPane, "Center"); getContentPane().add(buttonPanel, "South"); @@ -63,12 +63,12 @@ public class BenevoleDemandesPage extends JFrame { // Bouton de retour à la page d'accueil // ActionListener pour retourner à la page de connexion - retourButton.addActionListener(new ActionListener() { + retourBenevoleButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - LoginPage loginPage = new LoginPage(); - loginPage.setVisible(true); - dispose(); // Fermer la page validateur + MenuBenevole menu = new MenuBenevole(utilisateurId); + menu.setVisible(true); + dispose(); } }); @@ -159,8 +159,5 @@ public class BenevoleDemandesPage extends JFrame { e.printStackTrace(); JOptionPane.showMessageDialog(this, "Erreur lors de la finalisation de la demande."); } - } - - } diff --git a/src/main/java/controller/LoginPage.java b/src/main/java/controller/LoginPage.java index 03ea56e..cf117ab 100644 --- a/src/main/java/controller/LoginPage.java +++ b/src/main/java/controller/LoginPage.java @@ -75,8 +75,8 @@ public class LoginPage extends JFrame { // Rediriger vers la bonne page selon le rôle if (role.equalsIgnoreCase("benevole")) { - BenevoleDemandesPage benevoleDemandesPage = new BenevoleDemandesPage(utilisateurId); - benevoleDemandesPage.setVisible(true); + MenuBenevole menu = new MenuBenevole(utilisateurId); + menu.setVisible(true); dispose(); } else if (role.equalsIgnoreCase("personne_besoin")) { SoumettreDemande soumettreDemandePage = new SoumettreDemande(utilisateurId);