session lundi 14/10

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
This commit is contained in:
Sami-Koe Ferreira 2024-10-14 18:27:29 +02:00
parent 4881462c38
commit 4cb93d8546
4 changed files with 247 additions and 12 deletions

View file

@ -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<String> 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();
}
}
}

View file

@ -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.");
}
}
}

View file

@ -16,7 +16,7 @@ public class BenevoleDemandesPage extends JFrame {
private DefaultTableModel tableModel; private DefaultTableModel tableModel;
private JButton prendreDemandeButton; private JButton prendreDemandeButton;
private JButton finaliserDemandeButton; private JButton finaliserDemandeButton;
private JButton retourButton; private JButton retourBenevoleButton;
private int utilisateurId; // Ajout de l'ID du bénévole private int utilisateurId; // Ajout de l'ID du bénévole
public BenevoleDemandesPage(int utilisateurId) { // Ajout du paramètre utilisateurId 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 // Bouton pour prendre et finaliser des demandes
prendreDemandeButton = new JButton("Prendre la demande"); prendreDemandeButton = new JButton("Prendre la demande");
finaliserDemandeButton = new JButton("Finaliser 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 // Panel des boutons
JPanel buttonPanel = new JPanel(); JPanel buttonPanel = new JPanel();
buttonPanel.add(prendreDemandeButton); buttonPanel.add(prendreDemandeButton);
buttonPanel.add(finaliserDemandeButton); buttonPanel.add(finaliserDemandeButton);
buttonPanel.add(retourButton); buttonPanel.add(retourBenevoleButton);
getContentPane().add(scrollPane, "Center"); getContentPane().add(scrollPane, "Center");
getContentPane().add(buttonPanel, "South"); getContentPane().add(buttonPanel, "South");
@ -63,12 +63,12 @@ public class BenevoleDemandesPage extends JFrame {
// Bouton de retour à la page d'accueil // Bouton de retour à la page d'accueil
// ActionListener pour retourner à la page de connexion // ActionListener pour retourner à la page de connexion
retourButton.addActionListener(new ActionListener() { retourBenevoleButton.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
LoginPage loginPage = new LoginPage(); MenuBenevole menu = new MenuBenevole(utilisateurId);
loginPage.setVisible(true); menu.setVisible(true);
dispose(); // Fermer la page validateur dispose();
} }
}); });
@ -159,8 +159,5 @@ public class BenevoleDemandesPage extends JFrame {
e.printStackTrace(); e.printStackTrace();
JOptionPane.showMessageDialog(this, "Erreur lors de la finalisation de la demande."); JOptionPane.showMessageDialog(this, "Erreur lors de la finalisation de la demande.");
} }
} }
} }

View file

@ -75,8 +75,8 @@ public class LoginPage extends JFrame {
// Rediriger vers la bonne page selon le rôle // Rediriger vers la bonne page selon le rôle
if (role.equalsIgnoreCase("benevole")) { if (role.equalsIgnoreCase("benevole")) {
BenevoleDemandesPage benevoleDemandesPage = new BenevoleDemandesPage(utilisateurId); MenuBenevole menu = new MenuBenevole(utilisateurId);
benevoleDemandesPage.setVisible(true); menu.setVisible(true);
dispose(); dispose();
} else if (role.equalsIgnoreCase("personne_besoin")) { } else if (role.equalsIgnoreCase("personne_besoin")) {
SoumettreDemande soumettreDemandePage = new SoumettreDemande(utilisateurId); SoumettreDemande soumettreDemandePage = new SoumettreDemande(utilisateurId);