add users storie 5 (done)
This commit is contained in:
parent
8367db646d
commit
79a8f58fc2
8 changed files with 606 additions and 134 deletions
|
@ -12,9 +12,9 @@ import java.sql.SQLException;
|
||||||
public class AjoutUtilisateur extends JFrame {
|
public class AjoutUtilisateur extends JFrame {
|
||||||
private JTextField nomField;
|
private JTextField nomField;
|
||||||
private JTextField emailField;
|
private JTextField emailField;
|
||||||
private JComboBox<String> typeComboBox;
|
private JComboBox<String> roleComboBox;
|
||||||
private JButton ajouterButton;
|
private JButton ajouterButton;
|
||||||
private JButton retourButton;
|
private JButton retourButton;
|
||||||
|
|
||||||
public AjoutUtilisateur() {
|
public AjoutUtilisateur() {
|
||||||
setTitle("Ajouter un utilisateur");
|
setTitle("Ajouter un utilisateur");
|
||||||
|
@ -22,19 +22,19 @@ public class AjoutUtilisateur extends JFrame {
|
||||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
setLocationRelativeTo(null);
|
setLocationRelativeTo(null);
|
||||||
|
|
||||||
|
|
||||||
JLabel nomLabel = new JLabel("Nom :");
|
JLabel nomLabel = new JLabel("Nom :");
|
||||||
nomField = new JTextField();
|
nomField = new JTextField();
|
||||||
|
|
||||||
JLabel emailLabel = new JLabel("Email :");
|
JLabel emailLabel = new JLabel("Email :");
|
||||||
emailField = new JTextField();
|
emailField = new JTextField();
|
||||||
|
|
||||||
JLabel typeLabel = new JLabel("Type d'utilisateur :");
|
JLabel roleLabel = new JLabel("Type d'utilisateur :");
|
||||||
typeComboBox = new JComboBox<>(new String[]{"benevole", "personne_besoin", "validateur"});
|
roleComboBox = new JComboBox<>(new String[]{"personne_besoin", "validateur", "benevole"});
|
||||||
|
|
||||||
ajouterButton = new JButton("Ajouter");
|
ajouterButton = new JButton("Ajouter");
|
||||||
retourButton = new JButton("Retour à l'accueil");
|
retourButton = new JButton("Retour à l'accueil");
|
||||||
|
|
||||||
|
// ActionListener pour ajouter un utilisateur
|
||||||
ajouterButton.addActionListener(new ActionListener() {
|
ajouterButton.addActionListener(new ActionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
@ -42,12 +42,14 @@ public class AjoutUtilisateur extends JFrame {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Bouton de retour à la page d'accueil
|
||||||
|
retourButton = new JButton("Retour à l'accueil");
|
||||||
retourButton.addActionListener(new ActionListener() {
|
retourButton.addActionListener(new ActionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
MainMenu mainMenu = new MainMenu();
|
LoginPage log = new LoginPage();
|
||||||
mainMenu.setVisible(true);
|
log.setVisible(true);
|
||||||
dispose();
|
dispose();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -61,15 +63,14 @@ public class AjoutUtilisateur extends JFrame {
|
||||||
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)
|
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)
|
||||||
.addComponent(nomLabel)
|
.addComponent(nomLabel)
|
||||||
.addComponent(emailLabel)
|
.addComponent(emailLabel)
|
||||||
.addComponent(typeLabel))
|
.addComponent(roleLabel))
|
||||||
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
|
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
|
||||||
.addComponent(nomField)
|
.addComponent(nomField)
|
||||||
.addComponent(emailField)
|
.addComponent(emailField)
|
||||||
.addComponent(typeComboBox)
|
.addComponent(roleComboBox)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addComponent(ajouterButton)
|
.addComponent(ajouterButton)
|
||||||
.addGap(10, 10, 10)
|
.addComponent(retourButton)))
|
||||||
.addComponent(retourButton)))
|
|
||||||
);
|
);
|
||||||
|
|
||||||
layout.setVerticalGroup(
|
layout.setVerticalGroup(
|
||||||
|
@ -81,30 +82,30 @@ public class AjoutUtilisateur extends JFrame {
|
||||||
.addComponent(emailLabel)
|
.addComponent(emailLabel)
|
||||||
.addComponent(emailField))
|
.addComponent(emailField))
|
||||||
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
|
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(typeLabel)
|
.addComponent(roleLabel)
|
||||||
.addComponent(typeComboBox))
|
.addComponent(roleComboBox))
|
||||||
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
|
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(ajouterButton)
|
.addComponent(ajouterButton)
|
||||||
.addComponent(retourButton))
|
.addComponent(retourButton))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ajouterUtilisateur() {
|
private void ajouterUtilisateur() {
|
||||||
String nom = nomField.getText();
|
String nom = nomField.getText();
|
||||||
String email = emailField.getText();
|
String email = emailField.getText();
|
||||||
String typeUtilisateur = (String) typeComboBox.getSelectedItem();
|
String role = (String) roleComboBox.getSelectedItem();
|
||||||
|
|
||||||
if (nom.isEmpty() || email.isEmpty()) {
|
if (nom.isEmpty() || email.isEmpty() || role == null) {
|
||||||
JOptionPane.showMessageDialog(this, "Veuillez remplir tous les champs.");
|
JOptionPane.showMessageDialog(this, "Veuillez remplir tous les champs.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try (Connection connection = DatabaseConnection.getConnection()) {
|
try (Connection connection = DatabaseConnection.getConnection()) {
|
||||||
String sql = "INSERT INTO utilisateurs (nom, email, type_utilisateur) VALUES (?, ?, ?)";
|
String sql = "INSERT INTO utilisateurs (nom, email, role) VALUES (?, ?, ?)";
|
||||||
PreparedStatement statement = connection.prepareStatement(sql);
|
PreparedStatement statement = connection.prepareStatement(sql);
|
||||||
statement.setString(1, nom);
|
statement.setString(1, nom);
|
||||||
statement.setString(2, email);
|
statement.setString(2, email);
|
||||||
statement.setString(3, typeUtilisateur);
|
statement.setString(3, role);
|
||||||
statement.executeUpdate();
|
statement.executeUpdate();
|
||||||
JOptionPane.showMessageDialog(this, "Utilisateur ajouté avec succès !");
|
JOptionPane.showMessageDialog(this, "Utilisateur ajouté avec succès !");
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
|
@ -112,12 +113,6 @@ public class AjoutUtilisateur extends JFrame {
|
||||||
JOptionPane.showMessageDialog(this, "Erreur lors de l'ajout de l'utilisateur.");
|
JOptionPane.showMessageDialog(this, "Erreur lors de l'ajout de l'utilisateur.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
AjoutUtilisateur ajoutUtilisateur = new AjoutUtilisateur();
|
AjoutUtilisateur ajoutUtilisateur = new AjoutUtilisateur();
|
||||||
|
|
147
src/main/java/controller/BenevoleDemandesPage.java
Normal file
147
src/main/java/controller/BenevoleDemandesPage.java
Normal file
|
@ -0,0 +1,147 @@
|
||||||
|
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 BenevoleDemandesPage extends JFrame {
|
||||||
|
private JTable table;
|
||||||
|
private DefaultTableModel tableModel;
|
||||||
|
private JButton prendreDemandeButton;
|
||||||
|
private JButton finaliserDemandeButton;
|
||||||
|
private JButton retourButton;
|
||||||
|
private int utilisateurId; // Ajout de l'ID du bénévole
|
||||||
|
|
||||||
|
public BenevoleDemandesPage(int utilisateurId) { // Ajout du paramètre utilisateurId
|
||||||
|
this.utilisateurId = utilisateurId; // Stockage de l'ID du bénévole
|
||||||
|
setTitle("Demandes acceptées");
|
||||||
|
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
|
||||||
|
prendreDemandeButton = new JButton("Prendre la demande");
|
||||||
|
finaliserDemandeButton = new JButton("Finaliser la demande");
|
||||||
|
retourButton = new JButton("Retour à l'accueil");
|
||||||
|
|
||||||
|
// Panel des boutons
|
||||||
|
JPanel buttonPanel = new JPanel();
|
||||||
|
buttonPanel.add(prendreDemandeButton);
|
||||||
|
buttonPanel.add(finaliserDemandeButton);
|
||||||
|
buttonPanel.add(retourButton);
|
||||||
|
|
||||||
|
getContentPane().add(scrollPane, "Center");
|
||||||
|
getContentPane().add(buttonPanel, "South");
|
||||||
|
|
||||||
|
// ActionListener pour prendre une demande
|
||||||
|
prendreDemandeButton.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
prendreDemande();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 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
|
||||||
|
retourButton.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
LoginPage loginPage = new LoginPage();
|
||||||
|
loginPage.setVisible(true);
|
||||||
|
dispose(); // Fermer la page validateur
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Charger les demandes acceptées
|
||||||
|
loadDemandesAcceptees();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Méthode pour charger les demandes acceptées
|
||||||
|
private void loadDemandesAcceptees() {
|
||||||
|
try (Connection connection = DatabaseConnection.getConnection()) {
|
||||||
|
String sql = "SELECT id, description, statut FROM demandes_aide WHERE statut = 'acceptée'";
|
||||||
|
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 prendre une demande
|
||||||
|
private void prendreDemande() {
|
||||||
|
int selectedRow = table.getSelectedRow();
|
||||||
|
if (selectedRow == -1) {
|
||||||
|
JOptionPane.showMessageDialog(this, "Veuillez sélectionner une demande à prendre.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int demandeId = (int) tableModel.getValueAt(selectedRow, 0);
|
||||||
|
|
||||||
|
try (Connection connection = DatabaseConnection.getConnection()) {
|
||||||
|
String sql = "UPDATE demandes_aide SET statut = 'en cours', benevole_id = ? WHERE id = ?";
|
||||||
|
PreparedStatement statement = connection.prepareStatement(sql);
|
||||||
|
statement.setInt(1, utilisateurId); // ID du bénévole qui prend la demande
|
||||||
|
statement.setInt(2, demandeId);
|
||||||
|
statement.executeUpdate();
|
||||||
|
|
||||||
|
JOptionPane.showMessageDialog(this, "Demande prise avec succès.");
|
||||||
|
loadDemandesAcceptees(); // Recharger les demandes après la prise
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
JOptionPane.showMessageDialog(this, "Erreur lors de la prise de la demande.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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()) {
|
||||||
|
String sql = "UPDATE demandes_aide SET statut = 'finalisée' WHERE id = ?";
|
||||||
|
PreparedStatement statement = connection.prepareStatement(sql);
|
||||||
|
statement.setInt(1, demandeId);
|
||||||
|
statement.executeUpdate();
|
||||||
|
|
||||||
|
JOptionPane.showMessageDialog(this, "Demande finalisée avec succès.");
|
||||||
|
loadDemandesAcceptees(); // Recharger les demandes après la finalisation
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
JOptionPane.showMessageDialog(this, "Erreur lors de la finalisation de la demande.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
103
src/main/java/controller/CreateAccountPage.java
Normal file
103
src/main/java/controller/CreateAccountPage.java
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
package controller;
|
||||||
|
|
||||||
|
import database.DatabaseConnection;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
public class CreateAccountPage extends JFrame {
|
||||||
|
private JTextField nomField;
|
||||||
|
private JTextField emailField;
|
||||||
|
private JComboBox<String> roleComboBox;
|
||||||
|
private JButton createAccountButton;
|
||||||
|
private JButton retourLoginButton; // Nouveau bouton pour retourner à la connexion
|
||||||
|
|
||||||
|
public CreateAccountPage() {
|
||||||
|
setTitle("Créer un compte");
|
||||||
|
setSize(400, 300);
|
||||||
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
setLocationRelativeTo(null);
|
||||||
|
|
||||||
|
// Création des champs et boutons
|
||||||
|
JLabel nomLabel = new JLabel("Nom :");
|
||||||
|
nomField = new JTextField(20);
|
||||||
|
|
||||||
|
JLabel emailLabel = new JLabel("Email :");
|
||||||
|
emailField = new JTextField(20);
|
||||||
|
|
||||||
|
JLabel roleLabel = new JLabel("Rôle :");
|
||||||
|
String[] roles = {"benevole", "personne_besoin", "validateur"};
|
||||||
|
roleComboBox = new JComboBox<>(roles);
|
||||||
|
|
||||||
|
createAccountButton = new JButton("Créer un compte");
|
||||||
|
retourLoginButton = new JButton("Retour à la connexion"); // Nouveau bouton
|
||||||
|
|
||||||
|
JPanel panel = new JPanel();
|
||||||
|
panel.add(nomLabel);
|
||||||
|
panel.add(nomField);
|
||||||
|
panel.add(emailLabel);
|
||||||
|
panel.add(emailField);
|
||||||
|
panel.add(roleLabel);
|
||||||
|
panel.add(roleComboBox);
|
||||||
|
panel.add(createAccountButton);
|
||||||
|
panel.add(retourLoginButton); // Ajouter le bouton de retour
|
||||||
|
|
||||||
|
getContentPane().add(panel);
|
||||||
|
|
||||||
|
// ActionListener pour créer un compte
|
||||||
|
createAccountButton.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
createAccount();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ActionListener pour retourner à la connexion
|
||||||
|
retourLoginButton.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
LoginPage loginPage = new LoginPage();
|
||||||
|
loginPage.setVisible(true);
|
||||||
|
dispose(); // Fermer la page de création de compte
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Méthode pour créer un compte dans la base de données
|
||||||
|
private void createAccount() {
|
||||||
|
String nom = nomField.getText();
|
||||||
|
String email = emailField.getText();
|
||||||
|
String role = (String) roleComboBox.getSelectedItem();
|
||||||
|
|
||||||
|
if (nom.isEmpty() || email.isEmpty()) {
|
||||||
|
JOptionPane.showMessageDialog(this, "Veuillez remplir tous les champs.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try (Connection connection = DatabaseConnection.getConnection()) {
|
||||||
|
String sql = "INSERT INTO utilisateur (nom, email, role) VALUES (?, ?, ?)";
|
||||||
|
PreparedStatement statement = connection.prepareStatement(sql);
|
||||||
|
statement.setString(1, nom);
|
||||||
|
statement.setString(2, email);
|
||||||
|
statement.setString(3, role);
|
||||||
|
statement.executeUpdate();
|
||||||
|
|
||||||
|
JOptionPane.showMessageDialog(this, "Compte créé avec succès !");
|
||||||
|
dispose(); // Fermer la page de création de compte
|
||||||
|
LoginPage loginPage = new LoginPage(); // Retourner à la connexion après création
|
||||||
|
loginPage.setVisible(true);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
JOptionPane.showMessageDialog(this, "Erreur lors de la création du compte.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
CreateAccountPage createAccountPage = new CreateAccountPage();
|
||||||
|
createAccountPage.setVisible(true);
|
||||||
|
}
|
||||||
|
}
|
105
src/main/java/controller/LoginPage.java
Normal file
105
src/main/java/controller/LoginPage.java
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
package controller;
|
||||||
|
|
||||||
|
import database.DatabaseConnection;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
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 LoginPage extends JFrame {
|
||||||
|
private JTextField emailField;
|
||||||
|
private JButton loginButton;
|
||||||
|
private JButton createAccountButton;
|
||||||
|
|
||||||
|
public LoginPage() {
|
||||||
|
setTitle("Page de connexion");
|
||||||
|
setSize(400, 200);
|
||||||
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
setLocationRelativeTo(null);
|
||||||
|
|
||||||
|
// Création des champs et boutons
|
||||||
|
JLabel emailLabel = new JLabel("Email :");
|
||||||
|
emailField = new JTextField(20);
|
||||||
|
loginButton = new JButton("Se connecter");
|
||||||
|
createAccountButton = new JButton("Créer un compte");
|
||||||
|
|
||||||
|
JPanel panel = new JPanel();
|
||||||
|
panel.add(emailLabel);
|
||||||
|
panel.add(emailField);
|
||||||
|
panel.add(loginButton);
|
||||||
|
panel.add(createAccountButton);
|
||||||
|
|
||||||
|
getContentPane().add(panel);
|
||||||
|
|
||||||
|
// ActionListener pour se connecter
|
||||||
|
loginButton.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
loginUser();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ActionListener pour créer un compte
|
||||||
|
createAccountButton.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
CreateAccountPage createAccountPage = new CreateAccountPage();
|
||||||
|
createAccountPage.setVisible(true);
|
||||||
|
dispose(); // Fermer la page de login après ouverture de la page création de compte
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Méthode pour gérer la connexion de l'utilisateur
|
||||||
|
private void loginUser() {
|
||||||
|
String email = emailField.getText();
|
||||||
|
|
||||||
|
if (email.isEmpty()) {
|
||||||
|
JOptionPane.showMessageDialog(this, "Veuillez entrer votre email.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try (Connection connection = DatabaseConnection.getConnection()) {
|
||||||
|
String sql = "SELECT id, role FROM utilisateur WHERE email = ?";
|
||||||
|
PreparedStatement statement = connection.prepareStatement(sql);
|
||||||
|
statement.setString(1, email);
|
||||||
|
ResultSet resultSet = statement.executeQuery();
|
||||||
|
|
||||||
|
if (resultSet.next()) {
|
||||||
|
int utilisateurId = resultSet.getInt("id");
|
||||||
|
String role = resultSet.getString("role");
|
||||||
|
|
||||||
|
// Rediriger vers la bonne page selon le rôle
|
||||||
|
if (role.equalsIgnoreCase("benevole")) {
|
||||||
|
BenevoleDemandesPage benevoleDemandesPage = new BenevoleDemandesPage(utilisateurId);
|
||||||
|
benevoleDemandesPage.setVisible(true);
|
||||||
|
dispose();
|
||||||
|
} else if (role.equalsIgnoreCase("personne_besoin")) {
|
||||||
|
SoumettreDemande soumettreDemandePage = new SoumettreDemande(utilisateurId);
|
||||||
|
soumettreDemandePage.setVisible(true);
|
||||||
|
dispose();
|
||||||
|
} else if (role.equalsIgnoreCase("validateur")) {
|
||||||
|
Validateur validateurPage = new Validateur(utilisateurId);
|
||||||
|
validateurPage.setVisible(true);
|
||||||
|
dispose();
|
||||||
|
} else {
|
||||||
|
JOptionPane.showMessageDialog(this, "Rôle non reconnu.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
JOptionPane.showMessageDialog(this, "Email non trouvé. Veuillez créer un compte.");
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
JOptionPane.showMessageDialog(this, "Erreur lors de la connexion.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
LoginPage loginPage = new LoginPage();
|
||||||
|
loginPage.setVisible(true);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,56 +0,0 @@
|
||||||
package controller;
|
|
||||||
|
|
||||||
import javax.swing.*;
|
|
||||||
import java.awt.*;
|
|
||||||
import java.awt.event.ActionEvent;
|
|
||||||
import java.awt.event.ActionListener;
|
|
||||||
|
|
||||||
public class MainMenu extends JFrame {
|
|
||||||
private JButton ajouterUtilisateurButton;
|
|
||||||
private JButton soumettreDemandeButton;
|
|
||||||
|
|
||||||
public MainMenu() {
|
|
||||||
setTitle("Menu Principal");
|
|
||||||
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;
|
|
||||||
|
|
||||||
ajouterUtilisateurButton = new JButton("Ajouter un utilisateur");
|
|
||||||
gbc.gridx = 0;
|
|
||||||
gbc.gridy = 0;
|
|
||||||
add(ajouterUtilisateurButton, gbc);
|
|
||||||
|
|
||||||
soumettreDemandeButton = new JButton("Soumettre une demande d'aide");
|
|
||||||
gbc.gridx = 0;
|
|
||||||
gbc.gridy = 1;
|
|
||||||
add(soumettreDemandeButton, gbc);
|
|
||||||
|
|
||||||
ajouterUtilisateurButton.addActionListener(new ActionListener() {
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
AjoutUtilisateur ajoutUtilisateur = new AjoutUtilisateur();
|
|
||||||
ajoutUtilisateur.setVisible(true);
|
|
||||||
dispose();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
soumettreDemandeButton.addActionListener(new ActionListener() {
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
SoumettreDemande soumettreDemande = new SoumettreDemande();
|
|
||||||
soumettreDemande.setVisible(true);
|
|
||||||
dispose();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
MainMenu menu = new MainMenu();
|
|
||||||
menu.setVisible(true);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -3,65 +3,63 @@ package controller;
|
||||||
import database.DatabaseConnection;
|
import database.DatabaseConnection;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
import javax.swing.table.DefaultTableModel;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
|
||||||
public class SoumettreDemande extends JFrame {
|
public class SoumettreDemande extends JFrame {
|
||||||
private JTextField utilisateurIdField;
|
private JTextField descriptionField;
|
||||||
private JTextArea descriptionArea;
|
|
||||||
private JButton soumettreButton;
|
private JButton soumettreButton;
|
||||||
private JButton retourAccueilButton;
|
private JButton retourButton; // Bouton retour
|
||||||
|
private JTable demandesTable;
|
||||||
|
private DefaultTableModel tableModel;
|
||||||
|
private int utilisateurId;
|
||||||
|
|
||||||
public SoumettreDemande() {
|
public SoumettreDemande(int utilisateurId) {
|
||||||
|
this.utilisateurId = utilisateurId;
|
||||||
setTitle("Soumettre une demande d'aide");
|
setTitle("Soumettre une demande d'aide");
|
||||||
setSize(500, 400);
|
setSize(600, 400);
|
||||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
setLocationRelativeTo(null);
|
setLocationRelativeTo(null);
|
||||||
setLayout(new GridBagLayout());
|
|
||||||
|
|
||||||
GridBagConstraints gbc = new GridBagConstraints();
|
// Layout principal en BorderLayout pour mieux organiser les composants
|
||||||
gbc.insets = new Insets(10, 10, 10, 10);
|
setLayout(new BorderLayout());
|
||||||
gbc.fill = GridBagConstraints.HORIZONTAL;
|
|
||||||
|
|
||||||
JLabel utilisateurIdLabel = new JLabel("ID de l'utilisateur :");
|
|
||||||
gbc.gridx = 0;
|
|
||||||
gbc.gridy = 0;
|
|
||||||
add(utilisateurIdLabel, gbc);
|
|
||||||
|
|
||||||
utilisateurIdField = new JTextField();
|
|
||||||
gbc.gridx = 1;
|
|
||||||
gbc.gridy = 0;
|
|
||||||
gbc.gridwidth = 2;
|
|
||||||
add(utilisateurIdField, gbc);
|
|
||||||
|
|
||||||
JLabel descriptionLabel = new JLabel("Description de la tâche :");
|
|
||||||
gbc.gridx = 0;
|
|
||||||
gbc.gridy = 1;
|
|
||||||
add(descriptionLabel, gbc);
|
|
||||||
|
|
||||||
descriptionArea = new JTextArea(5, 20);
|
|
||||||
descriptionArea.setWrapStyleWord(true);
|
|
||||||
descriptionArea.setLineWrap(true);
|
|
||||||
JScrollPane scrollPane = new JScrollPane(descriptionArea);
|
|
||||||
gbc.gridx = 1;
|
|
||||||
gbc.gridy = 1;
|
|
||||||
gbc.gridwidth = 2;
|
|
||||||
add(scrollPane, gbc);
|
|
||||||
|
|
||||||
|
// Création des champs et boutons
|
||||||
|
JLabel descriptionLabel = new JLabel("Description de la demande :");
|
||||||
|
descriptionField = new JTextField(20);
|
||||||
soumettreButton = new JButton("Soumettre");
|
soumettreButton = new JButton("Soumettre");
|
||||||
gbc.gridx = 1;
|
retourButton = new JButton("Retour à l'accueil"); // Création du bouton retour
|
||||||
gbc.gridy = 2;
|
|
||||||
add(soumettreButton, gbc);
|
|
||||||
|
|
||||||
retourAccueilButton = new JButton("Retour à l'accueil");
|
// Tableau pour afficher les anciennes demandes
|
||||||
gbc.gridx = 1;
|
tableModel = new DefaultTableModel(new String[]{"ID", "Description", "Statut"}, 0);
|
||||||
gbc.gridy = 3;
|
demandesTable = new JTable(tableModel);
|
||||||
add(retourAccueilButton, gbc);
|
JScrollPane scrollPane = new JScrollPane(demandesTable);
|
||||||
|
|
||||||
|
// Panel pour les champs de saisie et boutons (haut de la fenêtre)
|
||||||
|
JPanel inputPanel = new JPanel(new GridLayout(3, 2));
|
||||||
|
inputPanel.add(descriptionLabel);
|
||||||
|
inputPanel.add(descriptionField);
|
||||||
|
inputPanel.add(soumettreButton);
|
||||||
|
|
||||||
|
// Ajouter les composants à la fenêtre
|
||||||
|
add(inputPanel, BorderLayout.NORTH); // Panel de saisie en haut
|
||||||
|
add(scrollPane, BorderLayout.CENTER); // Tableau au centre
|
||||||
|
|
||||||
|
// Panel pour le bouton retour en bas
|
||||||
|
JPanel bottomPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
|
||||||
|
bottomPanel.add(retourButton);
|
||||||
|
add(bottomPanel, BorderLayout.SOUTH); // Ajouter le panel du bouton retour en bas
|
||||||
|
|
||||||
|
// Charger les anciennes demandes
|
||||||
|
loadAnciennesDemandes();
|
||||||
|
|
||||||
|
// ActionListener pour soumettre une demande
|
||||||
soumettreButton.addActionListener(new ActionListener() {
|
soumettreButton.addActionListener(new ActionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
@ -69,29 +67,65 @@ public class SoumettreDemande extends JFrame {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
retourAccueilButton.addActionListener(new ActionListener() {
|
// ActionListener pour retourner à l'accueil
|
||||||
|
retourButton.addActionListener(new ActionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
MainMenu menu = new MainMenu();
|
// Retour à la page de connexion
|
||||||
menu.setVisible(true);
|
LoginPage loginPage = new LoginPage();
|
||||||
dispose();
|
loginPage.setVisible(true);
|
||||||
|
dispose(); // Fermer la page actuelle
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Méthode pour soumettre une demande
|
||||||
private void soumettreDemande() {
|
private void soumettreDemande() {
|
||||||
String utilisateurId = utilisateurIdField.getText();
|
String description = descriptionField.getText();
|
||||||
String description = descriptionArea.getText();
|
if (description.isEmpty()) {
|
||||||
|
JOptionPane.showMessageDialog(this, "Veuillez entrer une description.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try (Connection connection = DatabaseConnection.getConnection()) {
|
try (Connection connection = DatabaseConnection.getConnection()) {
|
||||||
String sql = "INSERT INTO demandes_aide (utilisateur_id, description, statut) VALUES (?, ?, 'en attente')";
|
String sql = "INSERT INTO demandes_aide (description, statut, utilisateur_id) VALUES (?, 'soumise', ?)";
|
||||||
PreparedStatement statement = connection.prepareStatement(sql);
|
PreparedStatement statement = connection.prepareStatement(sql);
|
||||||
statement.setInt(1, Integer.parseInt(utilisateurId));
|
statement.setString(1, description);
|
||||||
statement.setString(2, description);
|
statement.setInt(2, utilisateurId);
|
||||||
statement.executeUpdate();
|
statement.executeUpdate();
|
||||||
JOptionPane.showMessageDialog(this, "Demande soumise avec succès !");
|
|
||||||
|
JOptionPane.showMessageDialog(this, "Demande soumise avec succès.");
|
||||||
|
descriptionField.setText(""); // Réinitialiser le champ après soumission
|
||||||
|
loadAnciennesDemandes(); // Recharger la liste des demandes
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
JOptionPane.showMessageDialog(this, "Erreur lors de la soumission de la demande.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Méthode pour charger les anciennes demandes
|
||||||
|
private void loadAnciennesDemandes() {
|
||||||
|
try (Connection connection = DatabaseConnection.getConnection()) {
|
||||||
|
String sql = "SELECT id, description, statut FROM demandes_aide WHERE utilisateur_id = ?";
|
||||||
|
PreparedStatement statement = connection.prepareStatement(sql);
|
||||||
|
statement.setInt(1, utilisateurId);
|
||||||
|
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) {
|
} catch (SQLException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SoumettreDemande soumettreDemande = new SoumettreDemande(1); // Test avec un utilisateur par défaut
|
||||||
|
soumettreDemande.setVisible(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
144
src/main/java/controller/Validateur.java
Normal file
144
src/main/java/controller/Validateur.java
Normal file
|
@ -0,0 +1,144 @@
|
||||||
|
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
|
||||||
|
private 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);
|
||||||
|
|
||||||
|
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();
|
||||||
|
|
||||||
|
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.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,7 +6,7 @@ import java.sql.SQLException;
|
||||||
|
|
||||||
public class DatabaseConnection {
|
public class DatabaseConnection {
|
||||||
private static final String URL = "jdbc:mysql://srv-bdens.insa-toulouse.fr:3306/projet_gei_023";
|
private static final String URL = "jdbc:mysql://srv-bdens.insa-toulouse.fr:3306/projet_gei_023";
|
||||||
private static final String USER = "projet_gei_023";
|
private static final String USER = "projet_gei_023";
|
||||||
private static final String PASSWORD = "ohQu4ood";
|
private static final String PASSWORD = "ohQu4ood";
|
||||||
|
|
||||||
public static Connection getConnection() throws SQLException {
|
public static Connection getConnection() throws SQLException {
|
||||||
|
|
Loading…
Reference in a new issue