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-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/log/ApiUserActionLogDAOImpl.java |  156 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 156 insertions(+), 0 deletions(-)

diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/log/ApiUserActionLogDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/log/ApiUserActionLogDAOImpl.java
new file mode 100644
index 0000000..9f61584
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/log/ApiUserActionLogDAOImpl.java
@@ -0,0 +1,156 @@
+/*
+ * 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.dao.impl.log;
+
+import com.megatim.fdxconsultation.dao.ifaces.log.ApiUserActionLogDAO;
+import com.megatim.fdxconsultation.dao.impl.log.util.QueryExtendsWithApiUserActionSummarySearch;
+import com.megatim.fdxconsultation.model.dto.log.UserActionStatData;
+import com.megatim.fdxconsultation.model.dto.log.UserActionStatDto;
+import com.megatim.fdxconsultation.model.log.ApiUserActionLog;
+import com.megatim.fdxconsultation.model.log.dtos.ApiUserActionSummarySearch;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+import javax.persistence.TypedQuery;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class ApiUserActionLogDAOImpl implements ApiUserActionLogDAO {
+
+    @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+    protected EntityManager em;
+
+    @Override
+    public EntityManager getEntityManager() {
+        return em;
+    }
+
+    @Override
+    public Class<ApiUserActionLog> getManagedEntityClass() {
+        return (ApiUserActionLog.class);
+    }
+
+    @Override
+    public ApiUserActionLog getById(Long id) {
+
+        Query query = em.createQuery("SELECT u FROM ApiUserActionLog u  WHERE u.id = :id");
+        query.setParameter("id", id);
+
+        Optional<ApiUserActionLog> optionalLog = query.getResultList().stream().findFirst();
+        return optionalLog.isPresent() ? optionalLog.get() : null;
+    }
+
+    @Override
+    public List<UserActionStatDto> getByStatut(ApiUserActionSummarySearch apiUserActionSummarySearch) {
+
+        String selectQueryString = "SELECT u.status, COALESCE(COUNT(u.status), 0) FROM ApiUserActionLog u";
+        String whereQueryString = "";
+        String groupQueryString = "GROUP BY u.status";
+        List<Object[]> liste = new QueryExtendsWithApiUserActionSummarySearch(apiUserActionSummarySearch, em, selectQueryString, whereQueryString, groupQueryString).query().getResultList();
+
+        List<UserActionStatDto> scalarResults = new ArrayList<>();
+        liste.stream().forEach(tab -> {
+            UserActionStatDto scalar = new UserActionStatDto();
+            scalar.setLibelle(tab[0].toString());
+            scalar.setValue(Long.valueOf(tab[1].toString()));
+            scalarResults.add(scalar);
+        });
+        return scalarResults;
+    }
+
+    @Override
+    public List<UserActionStatData> getByStatutAndUserName(ApiUserActionSummarySearch apiUserActionSummarySearch) {
+
+        String selectQueryString = "SELECT u.userName, u.status, COALESCE(COUNT(u.status), 0) FROM ApiUserActionLog u";
+        String whereQueryString = "WHERE u.userName IS NOT NULL AND u.status IS NOT NULL";
+        String groupQueryString = "GROUP BY u.userName, u.status";
+        List<Object[]> liste = new QueryExtendsWithApiUserActionSummarySearch(apiUserActionSummarySearch, em, selectQueryString, whereQueryString, groupQueryString).query().getResultList();
+
+        Map<String, List<UserActionStatDto>> userNameToUserActionStatDto = new HashMap<>();
+
+        liste.stream().filter(tab -> tab[0] != null && tab[1] != null).forEach(tab -> {
+
+            String key = tab[0].toString();
+
+            final UserActionStatDto d = new UserActionStatDto();
+            d.setLibelle(tab[1].toString());
+            d.setValue(Long.valueOf(tab[2].toString()));
+
+            if (!userNameToUserActionStatDto.containsKey(key)) {
+
+                List<UserActionStatDto> data = new ArrayList<>();
+                data.add(d);
+                userNameToUserActionStatDto.put(key, data);
+
+            } else {
+
+                List<UserActionStatDto> data = userNameToUserActionStatDto.get(key);
+                data.add(d);
+
+                userNameToUserActionStatDto.put(key, data);
+
+            }
+        });
+
+        return userNameToUserActionStatDto.entrySet().stream().map(e -> {
+            final UserActionStatData actionStatData = new UserActionStatData();
+            actionStatData.setLibelle(e.getKey());
+            actionStatData.setData(e.getValue());
+            return actionStatData;
+        }).collect(Collectors.toList());
+    }
+
+    @Override
+    public List<UserActionStatData> getByStatutAndPath(ApiUserActionSummarySearch apiUserActionSummarySearch) {
+
+        String selectQueryString = "SELECT u.relativePath, u.status, COUNT(u.status) FROM ApiUserActionLog u";
+        String whereQueryString = "";
+        String groupQueryString = "GROUP BY u.relativePath, u.status";
+        List<Object[]> liste = new QueryExtendsWithApiUserActionSummarySearch(apiUserActionSummarySearch, em, selectQueryString, whereQueryString, groupQueryString).query().getResultList();
+
+        Map<String, List<UserActionStatDto>> userNameToUserActionStatDto = new HashMap<>();
+
+        liste.stream().forEach(tab -> {
+
+            String key = tab[0].toString();
+
+            UserActionStatDto d = new UserActionStatDto();
+            d.setLibelle(tab[1].toString());
+            d.setValue(Long.valueOf(tab[2].toString()));
+
+            if (!userNameToUserActionStatDto.containsKey(key)) {
+
+                List<UserActionStatDto> data = new ArrayList<>();
+                data.add(d);
+                userNameToUserActionStatDto.put(key, data);
+
+            } else {
+
+                List<UserActionStatDto> data = userNameToUserActionStatDto.get(key);
+                data.add(d);
+
+                userNameToUserActionStatDto.put(key, data);
+
+            }
+        });
+
+        return userNameToUserActionStatDto.entrySet().stream().map(e -> {
+            UserActionStatData actionStatData = new UserActionStatData();
+            actionStatData.setLibelle(e.getKey());
+            actionStatData.setData(e.getValue());
+            return actionStatData;
+        }).collect(Collectors.toList());
+    }
+}

--
Gitblit v1.10.0