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:
parent
4881462c38
commit
4cb93d8546
4 changed files with 247 additions and 12 deletions
108
src/main/java/controller/AjoutUtilisateur.java
Normal file
108
src/main/java/controller/AjoutUtilisateur.java
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
130
src/main/java/controller/BenevoleDemandesEncoursPage.java
Normal file
130
src/main/java/controller/BenevoleDemandesEncoursPage.java
Normal 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.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -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.");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue