Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 86 additions & 2 deletions src/persistance/AccesData.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,12 @@
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import javax.persistence.StoredProcedureQuery;

import metier.FicheFrais;
import metier.Region;
import metier.Role;
Expand Down Expand Up @@ -157,6 +162,85 @@ public static Boolean deleteVisiteur(String utilisateurId) {

return success;
}
}


public static List<Object[]> getStatsFFMontRegion(String month, int region) {
StoredProcedureQuery query = s.createStoredProcedureQuery("get_stats_ffmont_region");
query.registerStoredProcedureParameter("mois", String.class, javax.persistence.ParameterMode.IN);
query.registerStoredProcedureParameter("region", Integer.class, javax.persistence.ParameterMode.IN);
query.setParameter("mois", month);
query.setParameter("region", region);
query.execute();
return query.getResultList();
}

public static List<Object[]> getStatsHFMontRegion(String month, int region) {
StoredProcedureQuery query = s.createStoredProcedureQuery("get_stats_hfmont_region");
query.registerStoredProcedureParameter("mois", String.class, javax.persistence.ParameterMode.IN);
query.registerStoredProcedureParameter("region", Integer.class, javax.persistence.ParameterMode.IN);
query.setParameter("mois", month);
query.setParameter("region", region);
query.execute();
return query.getResultList();
}

public static List<Object[]> getStatsHfRegion(String month, int region) {
StoredProcedureQuery query = s.createStoredProcedureQuery("get_stats_hf_region");
query.registerStoredProcedureParameter("mois", String.class, javax.persistence.ParameterMode.IN);
query.registerStoredProcedureParameter("region", Integer.class, javax.persistence.ParameterMode.IN);
query.setParameter("mois", month);
query.setParameter("region", region);
query.execute();
return query.getResultList();
}

public static List<Object[]> getCombinedStats(String month, int region) {
List<Object[]> statsFF = getStatsFFMontRegion(month, region);
List<Object[]> statsHF = getStatsHFMontRegion(month, region);
List<Object[]> statsHfRegion = getStatsHfRegion(month, region);



// Combine the results into a single list
List<Object[]> combinedStats = new ArrayList<>();
for (Object[] ff : statsFF) {
String idUtilisateur = (String) ff[0];
boolean foundHF = false;
boolean foundHfRegion = false;
double montantFraisHorsForfait = 0;
int nbFraisHorsForfait = 0;

for (Object[] hf : statsHF) {
if (hf[0].equals(idUtilisateur)) {
if (hf.length > 3) {
montantFraisHorsForfait = ((Number) hf[3]).doubleValue();
}
foundHF = true;
break;
}
}
for (Object[] hr : statsHfRegion) {
if (hr[0].equals(idUtilisateur)) {
if (hr.length > 3) {
nbFraisHorsForfait = ((Number) hr[3]).intValue();
}
foundHfRegion = true;
break;
}
}

Object[] combined = Arrays.copyOf(ff, ff.length + 2);
combined[4] = montantFraisHorsForfait;
combined[5] = nbFraisHorsForfait;
combinedStats.add(combined);
}

return combinedStats;
}

public static List<FicheFrais> retrieveFicheFraisByRegion(int regionId) {
String hql = "SELECT ff FROM FicheFrais ff JOIN Utilisateur u ON ff.id.idVisiteur = u.idUtilisateur WHERE u.region.idRegion = :regionId";
Query<FicheFrais> query = s.createQuery(hql, FicheFrais.class);
query.setParameter("regionId", regionId);
return query.list();
}
}
6 changes: 5 additions & 1 deletion src/vue/Menu.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ private void initialize(Utilisateur util) {
JPanel panelBoutons = new JPanel();
JButton btnGestionVisiteurs = new JButton("Gérer les visiteurs");
JButton btnConsulterFicheVisiteurs = new JButton("Consulter les fiches des visiteurs");
JButton btnConsulterFicheFrais = new JButton("Consulter les FicheFrais");
JButton btnConsulterStats = new JButton("Consulter les statistiques");
btnDeconnexion = new JButton("Déconnexion");
if (util.getRole().getIdRole().equals("s")) {
Expand All @@ -40,7 +41,10 @@ private void initialize(Utilisateur util) {

if (util.getRole().getIdRole().equals("r")) {
panelBoutons.add(btnConsulterStats);
btnConsulterStats.addActionListener(e -> new fichefrais());
panelBoutons.add(btnConsulterFicheFrais);
btnConsulterFicheFrais.addActionListener(e -> new fichefrais());
btnConsulterStats.addActionListener(e -> new stats());


}

Expand Down
90 changes: 60 additions & 30 deletions src/vue/fichefrais.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,16 @@
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.text.SimpleDateFormat;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
Expand All @@ -31,9 +33,7 @@

import metier.FicheFrais;
import metier.Region;
import metier.Utilisateur;
import persistance.AccesData;
import javax.swing.JComboBox;

public class fichefrais {
private JFrame frame;
Expand All @@ -46,10 +46,13 @@ public class fichefrais {
private JMenuBar menuBar;
private List<Region> regions;
private List<String> mois;


private SimpleDateFormat dateFormatter;
private JComboBox<String> comboBox1;
private JComboBox<String> comboBox2;
private DefaultTableModel tableModel;

public fichefrais() {
dateFormatter = new SimpleDateFormat("yyyy-MM-dd");
// Création de la fenêtre
frame = new JFrame("Fenêtre Visiteurs");
frame.setSize(1000, 700);
Expand All @@ -61,19 +64,15 @@ public fichefrais() {
JPanel comboBoxPanel = new JPanel();
comboBoxPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));


regions = AccesData.getLesRegions();
String[] regionNames = regions.stream().map(Region::getLibelleRegion).toArray(String[]::new);

mois = AccesData.getLesMois();


// Création des JComboBox

JComboBox<String> comboBox1 = new JComboBox<>(regionNames);
List<String> moisList = AccesData.getLesMois();
String[] moisArray = moisList.toArray(new String[0]);

String[] comboBoxItems2 = {"Item 2-1", "Item 2-2", "Item 2-3"};
JComboBox<String> comboBox2 = new JComboBox<>(comboBoxItems2);
// Création des JComboBox
comboBox1 = new JComboBox<>(regionNames);
comboBox2 = new JComboBox<>(moisArray);

// Ajout des JComboBox au panneau
comboBoxPanel.add(comboBox1);
Expand All @@ -83,20 +82,10 @@ public fichefrais() {
frame.getContentPane().add(comboBoxPanel, BorderLayout.NORTH);

// Création du modèle de table avec des colonnes
String[] columnNames = {"idVisiteur ", "mois ", "montantValide", "dateModif", "idEtat "};
DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);

List<FicheFrais> ff = AccesData.getLesFicheFrais();
for (FicheFrais f : ff) {
Object[] rowData = {
f.getId(),
f.getDateModif(),
f.getEtat(),
f.getMontantValide(),
f.getNbJustificatif(),
};
tableModel.addRow(rowData);
}
String[] columnNames = {"idVisiteur", "mois", "nbJustificatifs", "montantValide", "dateModif", "idEtat"};
tableModel = new DefaultTableModel(columnNames, 0);

updateTableModel();

table = new JTable(tableModel);
table.setFillsViewportHeight(true);
Expand Down Expand Up @@ -133,10 +122,51 @@ public void actionPerformed(ActionEvent e) {
}
});

// Ajouter des écouteurs d'événements aux JComboBox
comboBox1.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
updateTableModel();
}
}
});

comboBox2.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
updateTableModel();
}
}
});

// Affichage de la fenêtre
frame.setVisible(true);
}

private void updateTableModel() {
tableModel.setRowCount(0);
String selectedRegion = (String) comboBox1.getSelectedItem();
String selectedMois = (String) comboBox2.getSelectedItem();
Region region = regions.stream().filter(r -> r.getLibelleRegion().equals(selectedRegion)).findFirst().orElse(null);

if (region != null) {
List<FicheFrais> ff = AccesData.retrieveFicheFraisByRegion(region.getIdRegion());
for (FicheFrais f : ff) {
if (selectedMois == null || selectedMois.equals(f.getId().getMois())) {
Object[] rowData = {
f.getId().getIdVisiteur(),
f.getId().getMois(),
f.getNbJustificatif(),
f.getMontantValide(),
dateFormatter.format(f.getDateModif()),
f.getEtat().getLibelleEtat(),
};
tableModel.addRow(rowData);
}
}
}
}

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
Expand All @@ -148,4 +178,4 @@ public void run() {
}
});
}
}
}
Loading