Configure Maven repository for unionflow-server-api dependency

This commit is contained in:
dahoud
2025-12-10 01:12:54 +00:00
commit 2910809949
1173 changed files with 435718 additions and 0 deletions

View File

@@ -0,0 +1,399 @@
package dev.lions.unionflow.client.view;
import dev.lions.unionflow.client.dto.AssociationDTO;
import dev.lions.unionflow.client.service.AssociationService;
import jakarta.enterprise.context.SessionScoped;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import jakarta.annotation.PostConstruct;
import org.eclipse.microprofile.rest.client.inject.RestClient;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
import java.util.logging.Logger;
@Named("utilisateursBean")
@SessionScoped
public class UtilisateursBean implements Serializable {
private static final long serialVersionUID = 1L;
private static final Logger LOGGER = Logger.getLogger(UtilisateursBean.class.getName());
@Inject
@RestClient
private AssociationService associationService;
private List<Utilisateur> tousLesUtilisateurs;
private List<Utilisateur> utilisateursFiltres;
private List<Utilisateur> utilisateursSelectionnes;
private List<Organisation> organisationsDisponibles;
private Utilisateur utilisateurSelectionne;
private NouvelUtilisateur nouvelUtilisateur;
private Filtres filtres;
private StatistiquesUtilisateurs statistiques;
@PostConstruct
public void init() {
initializeFiltres();
initializeOrganisations();
initializeUtilisateurs();
initializeStatistiques();
initializeNouvelUtilisateur();
appliquerFiltres();
}
private void initializeFiltres() {
filtres = new Filtres();
utilisateursSelectionnes = new ArrayList<>();
}
private void initializeStatistiques() {
statistiques = new StatistiquesUtilisateurs();
// Les statistiques seront calculées depuis l'API backend quand elle sera disponible
statistiques.setTotalUtilisateurs(tousLesUtilisateurs != null ? tousLesUtilisateurs.size() : 0);
statistiques.setUtilisateursConnectes(0);
statistiques.setAdministrateurs(0);
statistiques.setUtilisateursDesactives(0);
}
private void initializeOrganisations() {
organisationsDisponibles = new ArrayList<>();
try {
List<AssociationDTO> associations = associationService.listerToutes(0, 1000);
for (AssociationDTO assoc : associations) {
Organisation org = new Organisation();
org.setId(assoc.getId());
org.setNom(assoc.getNom());
organisationsDisponibles.add(org);
}
} catch (Exception e) {
LOGGER.severe("Erreur lors du chargement des organisations: " + e.getMessage());
}
}
private void initializeUtilisateurs() {
tousLesUtilisateurs = new ArrayList<>();
// Les utilisateurs seront chargés depuis l'API backend quand elle sera disponible
// Pour l'instant, retourner une liste vide
LOGGER.info("Initialisation des utilisateurs - API backend non disponible");
}
private void initializeNouvelUtilisateur() {
nouvelUtilisateur = new NouvelUtilisateur();
nouvelUtilisateur.setRole("USER");
nouvelUtilisateur.setEnvoyerEmail(true);
}
private void appliquerFiltres() {
utilisateursFiltres = tousLesUtilisateurs.stream()
.filter(this::appliquerFiltre)
.collect(Collectors.toList());
}
private boolean appliquerFiltre(Utilisateur utilisateur) {
if (filtres.getRecherche() != null && !filtres.getRecherche().trim().isEmpty()) {
String recherche = filtres.getRecherche().toLowerCase();
if (!utilisateur.getNomComplet().toLowerCase().contains(recherche) &&
!utilisateur.getEmail().toLowerCase().contains(recherche)) {
return false;
}
}
if (filtres.getRole() != null && !filtres.getRole().trim().isEmpty()) {
if (!utilisateur.getRole().equals(filtres.getRole())) {
return false;
}
}
if (filtres.getStatut() != null && !filtres.getStatut().trim().isEmpty()) {
if (!utilisateur.getStatut().equals(filtres.getStatut())) {
return false;
}
}
if (filtres.getOrganisation() != null && !filtres.getOrganisation().toString().trim().isEmpty()) {
if (!utilisateur.getOrganisationId().equals(filtres.getOrganisation())) {
return false;
}
}
return true;
}
// Actions
public void rechercher() {
appliquerFiltres();
}
public void reinitialiserFiltres() {
filtres = new Filtres();
appliquerFiltres();
}
public void creerUtilisateur() {
// À implémenter quand l'API backend sera disponible
LOGGER.info("Création d'utilisateur - API backend non disponible");
initializeNouvelUtilisateur();
}
public void activerUtilisateur(Utilisateur utilisateur) {
// À implémenter quand l'API backend sera disponible
LOGGER.info("Activation d'utilisateur - API backend non disponible");
appliquerFiltres();
}
public void desactiverUtilisateur(Utilisateur utilisateur) {
// À implémenter quand l'API backend sera disponible
LOGGER.info("Désactivation d'utilisateur - API backend non disponible");
appliquerFiltres();
}
public void exporterUtilisateurs() {
// À implémenter quand l'API backend sera disponible
LOGGER.info("Export d'utilisateurs - API backend non disponible");
}
// Getters et Setters
public List<Utilisateur> getTousLesUtilisateurs() { return tousLesUtilisateurs; }
public void setTousLesUtilisateurs(List<Utilisateur> tousLesUtilisateurs) { this.tousLesUtilisateurs = tousLesUtilisateurs; }
public List<Utilisateur> getUtilisateursFiltres() { return utilisateursFiltres; }
public void setUtilisateursFiltres(List<Utilisateur> utilisateursFiltres) { this.utilisateursFiltres = utilisateursFiltres; }
public List<Utilisateur> getUtilisateursSelectionnes() { return utilisateursSelectionnes; }
public void setUtilisateursSelectionnes(List<Utilisateur> utilisateursSelectionnes) { this.utilisateursSelectionnes = utilisateursSelectionnes; }
public List<Organisation> getOrganisationsDisponibles() { return organisationsDisponibles; }
public void setOrganisationsDisponibles(List<Organisation> organisationsDisponibles) { this.organisationsDisponibles = organisationsDisponibles; }
public Utilisateur getUtilisateurSelectionne() { return utilisateurSelectionne; }
public void setUtilisateurSelectionne(Utilisateur utilisateurSelectionne) { this.utilisateurSelectionne = utilisateurSelectionne; }
public NouvelUtilisateur getNouvelUtilisateur() { return nouvelUtilisateur; }
public void setNouvelUtilisateur(NouvelUtilisateur nouvelUtilisateur) { this.nouvelUtilisateur = nouvelUtilisateur; }
public Filtres getFiltres() { return filtres; }
public void setFiltres(Filtres filtres) { this.filtres = filtres; }
public StatistiquesUtilisateurs getStatistiques() { return statistiques; }
public void setStatistiques(StatistiquesUtilisateurs statistiques) { this.statistiques = statistiques; }
// Classes internes
public static class Utilisateur {
private UUID id;
private String nom;
private String prenom;
private String email;
private String telephone;
private String role;
private String statut;
private UUID organisationId;
private LocalDateTime dateCreation;
private LocalDateTime derniereConnexion;
// Getters et setters
public UUID getId() { return id; }
public void setId(UUID id) { this.id = id; }
public String getNom() { return nom; }
public void setNom(String nom) { this.nom = nom; }
public String getPrenom() { return prenom; }
public void setPrenom(String prenom) { this.prenom = prenom; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
public String getTelephone() { return telephone; }
public void setTelephone(String telephone) { this.telephone = telephone; }
public String getRole() { return role; }
public void setRole(String role) { this.role = role; }
public String getStatut() { return statut; }
public void setStatut(String statut) { this.statut = statut; }
public UUID getOrganisationId() { return organisationId; }
public void setOrganisationId(UUID organisationId) { this.organisationId = organisationId; }
public LocalDateTime getDateCreation() { return dateCreation; }
public void setDateCreation(LocalDateTime dateCreation) { this.dateCreation = dateCreation; }
public LocalDateTime getDerniereConnexion() { return derniereConnexion; }
public void setDerniereConnexion(LocalDateTime derniereConnexion) { this.derniereConnexion = derniereConnexion; }
// Propriétés dérivées
public String getNomComplet() {
return prenom + " " + nom;
}
public String getRoleLibelle() {
return switch (role) {
case "USER" -> "Utilisateur";
case "GESTIONNAIRE" -> "Gestionnaire";
case "ADMIN" -> "Administrateur";
case "SUPER_ADMIN" -> "Super Admin";
default -> role;
};
}
public String getRoleSeverity() {
return switch (role) {
case "USER" -> "info";
case "GESTIONNAIRE" -> "primary";
case "ADMIN" -> "warning";
case "SUPER_ADMIN" -> "danger";
default -> "secondary";
};
}
public String getStatutLibelle() {
return switch (statut) {
case "ACTIF" -> "Actif";
case "INACTIF" -> "Inactif";
case "SUSPENDU" -> "Suspendu";
case "ATTENTE" -> "En attente";
default -> statut;
};
}
public String getStatutSeverity() {
return switch (statut) {
case "ACTIF" -> "success";
case "INACTIF" -> "secondary";
case "SUSPENDU" -> "danger";
case "ATTENTE" -> "warning";
default -> "secondary";
};
}
public String getOrganisationNom() {
// Simulation - en réalité, on ferait un lookup dans la base
if (organisationId == null) return "Non définie";
String orgIdStr = organisationId.toString();
if (orgIdStr.contains("000000000100")) return "Direction Générale";
if (orgIdStr.contains("000000000200")) return "Services Financiers";
if (orgIdStr.contains("000000000300")) return "Ressources Humaines";
if (orgIdStr.contains("000000000400")) return "Communication";
return "Non définie";
}
public String getDateCreationFormatee() {
if (dateCreation == null) return "";
return dateCreation.format(DateTimeFormatter.ofPattern("dd/MM/yyyy"));
}
public String getDerniereConnexionFormatee() {
if (derniereConnexion == null) return "Jamais";
return derniereConnexion.format(DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm"));
}
public String getDerniereConnexionRelative() {
if (derniereConnexion == null) return "Jamais connecté";
long jours = ChronoUnit.DAYS.between(derniereConnexion, LocalDateTime.now());
if (jours == 0) return "Aujourd'hui";
if (jours == 1) return "Hier";
if (jours < 7) return "Il y a " + jours + " jours";
if (jours < 30) return "Il y a " + (jours / 7) + " semaine(s)";
return "Il y a " + (jours / 30) + " mois";
}
}
public static class NouvelUtilisateur {
private String nom;
private String prenom;
private String email;
private String telephone;
private String role;
private UUID organisationId;
private String motDePasse;
private boolean envoyerEmail;
// Getters et setters
public String getNom() { return nom; }
public void setNom(String nom) { this.nom = nom; }
public String getPrenom() { return prenom; }
public void setPrenom(String prenom) { this.prenom = prenom; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
public String getTelephone() { return telephone; }
public void setTelephone(String telephone) { this.telephone = telephone; }
public String getRole() { return role; }
public void setRole(String role) { this.role = role; }
public UUID getOrganisationId() { return organisationId; }
public void setOrganisationId(UUID organisationId) { this.organisationId = organisationId; }
public String getMotDePasse() { return motDePasse; }
public void setMotDePasse(String motDePasse) { this.motDePasse = motDePasse; }
public boolean isEnvoyerEmail() { return envoyerEmail; }
public void setEnvoyerEmail(boolean envoyerEmail) { this.envoyerEmail = envoyerEmail; }
}
public static class Filtres {
private String recherche;
private String role;
private String statut;
private String connexion;
private UUID organisation;
// Getters et setters
public String getRecherche() { return recherche; }
public void setRecherche(String recherche) { this.recherche = recherche; }
public String getRole() { return role; }
public void setRole(String role) { this.role = role; }
public String getStatut() { return statut; }
public void setStatut(String statut) { this.statut = statut; }
public String getConnexion() { return connexion; }
public void setConnexion(String connexion) { this.connexion = connexion; }
public UUID getOrganisation() { return organisation; }
public void setOrganisation(UUID organisation) { this.organisation = organisation; }
}
public static class StatistiquesUtilisateurs {
private int totalUtilisateurs;
private int utilisateursConnectes;
private int administrateurs;
private int utilisateursDesactives;
// Getters et setters
public int getTotalUtilisateurs() { return totalUtilisateurs; }
public void setTotalUtilisateurs(int totalUtilisateurs) { this.totalUtilisateurs = totalUtilisateurs; }
public int getUtilisateursConnectes() { return utilisateursConnectes; }
public void setUtilisateursConnectes(int utilisateursConnectes) { this.utilisateursConnectes = utilisateursConnectes; }
public int getAdministrateurs() { return administrateurs; }
public void setAdministrateurs(int administrateurs) { this.administrateurs = administrateurs; }
public int getUtilisateursDesactives() { return utilisateursDesactives; }
public void setUtilisateursDesactives(int utilisateursDesactives) { this.utilisateursDesactives = utilisateursDesactives; }
}
public static class Organisation {
private UUID id;
private String nom;
// Getters et setters
public UUID getId() { return id; }
public void setId(UUID id) { this.id = id; }
public String getNom() { return nom; }
public void setNom(String nom) { this.nom = nom; }
}
}