add users storie 5 (done)

This commit is contained in:
Abderrahman El-Ouali 2024-10-12 17:51:34 +02:00
parent 8367db646d
commit 79a8f58fc2
8 changed files with 606 additions and 134 deletions

View file

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

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

View 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);
}
}

View 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);
}
}

View file

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

View file

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

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

View file

@ -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 {