add users storie 5 (done)
This commit is contained in:
parent
8367db646d
commit
79a8f58fc2
8 changed files with 606 additions and 134 deletions
|
@ -12,7 +12,7 @@ import java.sql.SQLException;
|
|||
public class AjoutUtilisateur extends JFrame {
|
||||
private JTextField nomField;
|
||||
private JTextField emailField;
|
||||
private JComboBox<String> typeComboBox;
|
||||
private JComboBox<String> roleComboBox;
|
||||
private JButton ajouterButton;
|
||||
private JButton retourButton;
|
||||
|
||||
|
@ -22,19 +22,19 @@ public class AjoutUtilisateur extends JFrame {
|
|||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
setLocationRelativeTo(null);
|
||||
|
||||
|
||||
JLabel nomLabel = new JLabel("Nom :");
|
||||
nomField = new JTextField();
|
||||
|
||||
JLabel emailLabel = new JLabel("Email :");
|
||||
emailField = new JTextField();
|
||||
|
||||
JLabel typeLabel = new JLabel("Type d'utilisateur :");
|
||||
typeComboBox = new JComboBox<>(new String[]{"benevole", "personne_besoin", "validateur"});
|
||||
JLabel roleLabel = new JLabel("Type d'utilisateur :");
|
||||
roleComboBox = new JComboBox<>(new String[]{"personne_besoin", "validateur", "benevole"});
|
||||
|
||||
ajouterButton = new JButton("Ajouter");
|
||||
retourButton = new JButton("Retour à l'accueil");
|
||||
|
||||
// ActionListener pour ajouter un utilisateur
|
||||
ajouterButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
|
@ -42,11 +42,13 @@ public class AjoutUtilisateur extends JFrame {
|
|||
}
|
||||
});
|
||||
|
||||
// Bouton de retour à la page d'accueil
|
||||
retourButton = new JButton("Retour à l'accueil");
|
||||
retourButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
MainMenu mainMenu = new MainMenu();
|
||||
mainMenu.setVisible(true);
|
||||
LoginPage log = new LoginPage();
|
||||
log.setVisible(true);
|
||||
dispose();
|
||||
}
|
||||
});
|
||||
|
@ -61,14 +63,13 @@ public class AjoutUtilisateur extends JFrame {
|
|||
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)
|
||||
.addComponent(nomLabel)
|
||||
.addComponent(emailLabel)
|
||||
.addComponent(typeLabel))
|
||||
.addComponent(roleLabel))
|
||||
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
|
||||
.addComponent(nomField)
|
||||
.addComponent(emailField)
|
||||
.addComponent(typeComboBox)
|
||||
.addComponent(roleComboBox)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addComponent(ajouterButton)
|
||||
.addGap(10, 10, 10)
|
||||
.addComponent(retourButton)))
|
||||
);
|
||||
|
||||
|
@ -81,8 +82,8 @@ public class AjoutUtilisateur extends JFrame {
|
|||
.addComponent(emailLabel)
|
||||
.addComponent(emailField))
|
||||
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(typeLabel)
|
||||
.addComponent(typeComboBox))
|
||||
.addComponent(roleLabel)
|
||||
.addComponent(roleComboBox))
|
||||
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(ajouterButton)
|
||||
.addComponent(retourButton))
|
||||
|
@ -92,19 +93,19 @@ public class AjoutUtilisateur extends JFrame {
|
|||
private void ajouterUtilisateur() {
|
||||
String nom = nomField.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.");
|
||||
return;
|
||||
}
|
||||
|
||||
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);
|
||||
statement.setString(1, nom);
|
||||
statement.setString(2, email);
|
||||
statement.setString(3, typeUtilisateur);
|
||||
statement.setString(3, role);
|
||||
statement.executeUpdate();
|
||||
JOptionPane.showMessageDialog(this, "Utilisateur ajouté avec succès !");
|
||||
} catch (SQLException e) {
|
||||
|
@ -113,12 +114,6 @@ public class AjoutUtilisateur extends JFrame {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
AjoutUtilisateur ajoutUtilisateur = new AjoutUtilisateur();
|
||||
ajoutUtilisateur.setVisible(true);
|
||||
|
|
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 javax.swing.*;
|
||||
import javax.swing.table.DefaultTableModel;
|
||||
import java.awt.*;
|
||||
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 SoumettreDemande extends JFrame {
|
||||
private JTextField utilisateurIdField;
|
||||
private JTextArea descriptionArea;
|
||||
private JTextField descriptionField;
|
||||
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");
|
||||
setSize(500, 400);
|
||||
setSize(600, 400);
|
||||
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 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);
|
||||
// Layout principal en BorderLayout pour mieux organiser les composants
|
||||
setLayout(new BorderLayout());
|
||||
|
||||
// Création des champs et boutons
|
||||
JLabel descriptionLabel = new JLabel("Description de la demande :");
|
||||
descriptionField = new JTextField(20);
|
||||
soumettreButton = new JButton("Soumettre");
|
||||
gbc.gridx = 1;
|
||||
gbc.gridy = 2;
|
||||
add(soumettreButton, gbc);
|
||||
retourButton = new JButton("Retour à l'accueil"); // Création du bouton retour
|
||||
|
||||
retourAccueilButton = new JButton("Retour à l'accueil");
|
||||
gbc.gridx = 1;
|
||||
gbc.gridy = 3;
|
||||
add(retourAccueilButton, gbc);
|
||||
// Tableau pour afficher les anciennes demandes
|
||||
tableModel = new DefaultTableModel(new String[]{"ID", "Description", "Statut"}, 0);
|
||||
demandesTable = new JTable(tableModel);
|
||||
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() {
|
||||
@Override
|
||||
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
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
MainMenu menu = new MainMenu();
|
||||
menu.setVisible(true);
|
||||
dispose();
|
||||
// Retour à la page de connexion
|
||||
LoginPage loginPage = new LoginPage();
|
||||
loginPage.setVisible(true);
|
||||
dispose(); // Fermer la page actuelle
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Méthode pour soumettre une demande
|
||||
private void soumettreDemande() {
|
||||
String utilisateurId = utilisateurIdField.getText();
|
||||
String description = descriptionArea.getText();
|
||||
String description = descriptionField.getText();
|
||||
if (description.isEmpty()) {
|
||||
JOptionPane.showMessageDialog(this, "Veuillez entrer une description.");
|
||||
return;
|
||||
}
|
||||
|
||||
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);
|
||||
statement.setInt(1, Integer.parseInt(utilisateurId));
|
||||
statement.setString(2, description);
|
||||
statement.setString(1, description);
|
||||
statement.setInt(2, utilisateurId);
|
||||
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) {
|
||||
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.");
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue