diff --git a/src/main/java/controller/AjoutUtilisateur.java b/src/main/java/controller/AjoutUtilisateur.java index 9e7c162..55ea2af 100644 --- a/src/main/java/controller/AjoutUtilisateur.java +++ b/src/main/java/controller/AjoutUtilisateur.java @@ -12,9 +12,9 @@ import java.sql.SQLException; public class AjoutUtilisateur extends JFrame { private JTextField nomField; private JTextField emailField; - private JComboBox typeComboBox; + private JComboBox roleComboBox; private JButton ajouterButton; - private JButton retourButton; + private JButton retourButton; public AjoutUtilisateur() { setTitle("Ajouter un utilisateur"); @@ -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"); + retourButton = new JButton("Retour à l'accueil"); + // ActionListener pour ajouter un utilisateur ajouterButton.addActionListener(new ActionListener() { @Override 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() { @Override public void actionPerformed(ActionEvent e) { - MainMenu mainMenu = new MainMenu(); - mainMenu.setVisible(true); - dispose(); + LoginPage log = new LoginPage(); + log.setVisible(true); + dispose(); } }); @@ -61,15 +63,14 @@ 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))) + .addComponent(retourButton))) ); layout.setVerticalGroup( @@ -81,30 +82,30 @@ 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)) + .addComponent(retourButton)) ); } 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) { @@ -112,12 +113,6 @@ public class AjoutUtilisateur extends JFrame { JOptionPane.showMessageDialog(this, "Erreur lors de l'ajout de l'utilisateur."); } } - - - - - - public static void main(String[] args) { AjoutUtilisateur ajoutUtilisateur = new AjoutUtilisateur(); diff --git a/src/main/java/controller/BenevoleDemandesPage.java b/src/main/java/controller/BenevoleDemandesPage.java new file mode 100644 index 0000000..a38f068 --- /dev/null +++ b/src/main/java/controller/BenevoleDemandesPage.java @@ -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."); + } + } +} diff --git a/src/main/java/controller/CreateAccountPage.java b/src/main/java/controller/CreateAccountPage.java new file mode 100644 index 0000000..1a336af --- /dev/null +++ b/src/main/java/controller/CreateAccountPage.java @@ -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 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); + } +} diff --git a/src/main/java/controller/LoginPage.java b/src/main/java/controller/LoginPage.java new file mode 100644 index 0000000..03ea56e --- /dev/null +++ b/src/main/java/controller/LoginPage.java @@ -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); + } +} diff --git a/src/main/java/controller/MainMenu.java b/src/main/java/controller/MainMenu.java deleted file mode 100644 index 54f466f..0000000 --- a/src/main/java/controller/MainMenu.java +++ /dev/null @@ -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); - } -} diff --git a/src/main/java/controller/SoumettreDemande.java b/src/main/java/controller/SoumettreDemande.java index 2936901..ec2dea1 100644 --- a/src/main/java/controller/SoumettreDemande.java +++ b/src/main/java/controller/SoumettreDemande.java @@ -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); + } } diff --git a/src/main/java/controller/Validateur.java b/src/main/java/controller/Validateur.java new file mode 100644 index 0000000..79c6dab --- /dev/null +++ b/src/main/java/controller/Validateur.java @@ -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."); + } + } +} diff --git a/src/main/java/database/DatabaseConnection.java b/src/main/java/database/DatabaseConnection.java index d347aec..9b5340d 100644 --- a/src/main/java/database/DatabaseConnection.java +++ b/src/main/java/database/DatabaseConnection.java @@ -6,7 +6,7 @@ import java.sql.SQLException; public class DatabaseConnection { 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"; public static Connection getConnection() throws SQLException {