Kenmegne
7 days ago 23a46b4be35277e06ec89f48730eeb694e686be8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
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());
    }
 
}