From 23a46b4be35277e06ec89f48730eeb694e686be8 Mon Sep 17 00:00:00 2001
From: Kenmegne <stephanie.kenmegne@gmail.com>
Date: Thu, 18 Jun 2026 15:40:06 +0000
Subject: [PATCH] add fdx-commons and fdx-consultation

---
 fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/AdministrationCronBean.java |  157 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 157 insertions(+), 0 deletions(-)

diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/AdministrationCronBean.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/AdministrationCronBean.java
new file mode 100644
index 0000000..6729b5d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/AdministrationCronBean.java
@@ -0,0 +1,157 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconsultation.service.impl.sockets;
+
+/**
+ *
+ * @author Lenovo P53
+ */
+import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer;
+import com.megatim.fdxcommons.model.enumeration.EtatOperation;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxconsultation.core.ifaces.administration.RoleManager;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.AdministrationNumberDto;
+import com.megatim.fdxconsultation.model.dto.InformationGeneraleDto;
+import com.megatim.fdxconsultation.model.dto.UserDto;
+import com.megatim.fdxconsultation.model.message.systeme.ApplicationData;
+import com.megatim.fdxconsultation.model.message.systeme.UserSesionApplication;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import javax.annotation.PostConstruct;
+import javax.ejb.LocalBean;
+import javax.ejb.Schedule;
+import javax.ejb.Singleton;
+import javax.ejb.Startup;
+import javax.inject.Inject;
+import javax.websocket.Session;
+
+@Singleton
+@Startup
+@LocalBean
+public class AdministrationCronBean {
+
+    @Inject
+    private UserManager userManager;
+
+    @Inject
+    private RoleManager roleManager;
+
+    @PostConstruct
+    public void init() {
+
+    }
+
+//    @Schedule(second = "*/1", minute = "*", hour = "*", persistent = false)
+    public void refreshDatas() {
+
+        //Variables
+        ApplicationData message = new ApplicationData();
+        InformationGeneraleDto informationGeneraleDto = null;
+        AdministrationNumberDto administrationNumberDto = null;
+        Iterator<String> iterateur = null;
+        String idSession = null;
+        Session session = null;
+        User utilisateur = null;
+        User utilisateurBD = null;
+
+        try {
+
+            //On crée une instance de l'iterateur
+            iterateur = UserSesionApplication.getInstance().getUsers().keySet().iterator();
+
+            //On construit l'objet AdministrationNumberDto
+            administrationNumberDto = new AdministrationNumberDto();
+            administrationNumberDto.setUtilisateursEnAttenteValidation(countUsers(EtatOperation.ATTENTE_VALIDATION));
+            administrationNumberDto.setRolesEnAttenteValidation(countRoles(EtatOperation.ATTENTE_VALIDATION));
+
+            //On construit l'objet InformationGeneraleDto
+            informationGeneraleDto = new InformationGeneraleDto();
+
+            //On parcourt la liste des sessions
+            while (iterateur.hasNext()) {
+
+                //On recupère l'id de la session
+                idSession = iterateur.next();
+
+                //On filtre par type
+                if (UserSesionApplication.getInstance().getUsers() != null && UserSesionApplication.getInstance().getUsers().get(idSession) != null
+                        && (UserSesionApplication.getInstance().getUsers().get(idSession).getType() != null
+                        && UserSesionApplication.getInstance().getUsers().get(idSession).getType().equalsIgnoreCase(AppCommonContext.CODE_WEB_SOCKET_PATH_APPLICATION_MESSAGE))) {
+
+                    //On recupère la session
+                    session = UserSesionApplication.getInstance().getUsers().get(idSession).getSession();
+
+                    //On recupère l'utilisateur associé à cette session
+                    utilisateur = UserSesionApplication.getInstance().getUsers().get(idSession).getUtilisateur();
+                    utilisateurBD = userManager.findById(utilisateur.getId());
+
+                    //Si non null
+                    if (utilisateurBD != null) {
+
+                        //On set la clé de la session
+                        informationGeneraleDto.setSessionKeyUser(utilisateurBD.getCleSession());
+
+                    }
+
+                    //On hydrate le message
+                    message.setInformationGeneraleDto(informationGeneraleDto);
+                    message.setAdministrationNumberDto(administrationNumberDto);
+                    message.setUtlisateursConnectes(obtenirListeUtilisateursConnectes());
+
+                    //On envoie le message
+                    UserSesionApplication.getInstance().send(session, message);
+
+                }
+
+            }
+
+        } catch (Exception ex) {
+
+            //On affiche les erreurs
+            ex.printStackTrace();
+
+        }
+
+    }
+
+    /**
+     * Methode permettant de recuperer la liste des utilisateurs connectés
+     *
+     * @return
+     */
+    private List<UserDto> obtenirListeUtilisateursConnectes() {
+        List<UserDto> liste = new ArrayList<UserDto>();
+        String idSession = null;
+        Iterator<String> iterateur = null;
+        UserDto userDto = null;
+        iterateur = UserSesionApplication.getInstance().getUsers().keySet().iterator();
+        while (iterateur.hasNext()) {
+            idSession = iterateur.next();
+            userDto = new UserDto();
+            userDto.setUserName(UserSesionApplication.getInstance().getUsers().get(idSession).getUtilisateur().getUserName());
+            liste.add(userDto);
+        }
+        return liste;
+    }
+
+    private long countUsers(EtatOperation etatOperation) {
+        RestrictionsContainer requeteur = RestrictionsContainer.newInstance();
+        requeteur.addEq("typeOperation", TypeOperation.AJOUTER);
+        requeteur.addEq("etatOperation", etatOperation);
+        return userManager.count(requeteur.getPredicats());
+    }
+
+    private long countRoles(EtatOperation etatOperation) {
+        RestrictionsContainer requeteur = RestrictionsContainer.newInstance();
+        requeteur.addEq("typeOperation", TypeOperation.AJOUTER);
+        requeteur.addEq("etatOperation", etatOperation);
+        return roleManager.count(requeteur.getPredicats());
+    }
+
+}

--
Gitblit v1.10.0