Преглед изворни кода

StatsController working and dashboard hotfix

Mario Martínez Hernández пре 4 месеци
родитељ
комит
eb281d526b

+ 5 - 2
src/main/java/es/uv/saic/feign/StatsClient.java

@@ -1,12 +1,15 @@
 package es.uv.saic.feign;
 
 import java.util.HashMap;
+import java.util.List;
 
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 
+import es.uv.saic.web.StatsController.PendingEmail;
+
 @FeignClient(value = "stats-controller", url = "${saic.url.domain}")
 public interface StatsClient {
-    @GetMapping("/admin/stats")
-	public HashMap<String, Object> getStats();
+    @GetMapping("/admin/get/pendingEmails")
+	public List<PendingEmail> getPendingEmails();
 }

+ 1 - 1
src/main/java/es/uv/saic/web/DashboardController.java

@@ -50,7 +50,7 @@ public class DashboardController {
         HashMap<String, Object> response =
                 dbc.getOrganList(((Usuari) auth.getPrincipal()).getUsuari());
 
-        if (response != null && response.get("redirect") != null) {
+        if (response != null) {
             return response.get("organ").toString() == "0" ? "dashboard" : "redirect:/dashboard/" + response.get("organ").toString();
         }
 

+ 42 - 2
src/main/java/es/uv/saic/web/StatsController.java

@@ -25,6 +25,9 @@ public class StatsController {
 	
 	@Autowired
     private SessionRegistry sessionRegistry;
+
+	@Autowired
+    private EmailService emailService;
 	
 	@Autowired
     private StatsClient sc;
@@ -69,7 +72,7 @@ public class StatsController {
 	 * @param model The model to pass data to the view
 	 * @param auth The authentication object
 	 * @return The name of the view to render
-	 */
+	 *
 	@GetMapping("/admin/stats")
 	@Secured({"ROLE_ADMIN"})
 	public String getStats(Model model, Authentication auth) {
@@ -82,5 +85,42 @@ public class StatsController {
 
 		model.addAllAttributes(response);
 		return "adminStats";
-	}	
+	}*/
+	
+	@GetMapping("/admin/stats")
+	@Secured({"ROLE_ADMIN"})
+	public String getStats(Model model, Authentication auth) {
+		final List<Object> allPrincipals = sessionRegistry.getAllPrincipals();
+		List<ActiveSession> allLoggedUsers = new ArrayList<ActiveSession>();
+		int totalActiveSessions = 0;
+		int totalExpiredSessions = 0;
+		
+		for(Object principal : allPrincipals) {
+			final List<SessionInformation> allSessions = sessionRegistry.getAllSessions(principal, true);
+			for(final SessionInformation session : allSessions) {
+				final ActiveSession s = new ActiveSession();
+				if(session.isExpired()) {
+					totalExpiredSessions++;
+				}
+				else {
+					totalActiveSessions++;
+				}
+				Usuari x = ((Usuari)principal);
+				s.setId(Integer.toString(session.hashCode()));
+				s.setExpired(session.isExpired());
+				SimpleDateFormat sdt = new SimpleDateFormat("dd-mm-yyyy HH:mm:ss");
+				s.setLastRequest(sdt.format(session.getLastRequest()));
+				s.setUsername(x.getUsuari());
+				s.setFullName(x.getNom() + " " + x.getCognoms());
+				s.setNpi("");
+				allLoggedUsers.add(s);
+			}
+		}
+		
+		model.addAttribute("activeSessions", allLoggedUsers);
+		model.addAttribute("totalActiveSessions", totalActiveSessions);
+		model.addAttribute("totalExpiredSessions", totalExpiredSessions);
+		model.addAttribute("pendingEmails", sc.getPendingEmails());
+		return "adminStats";
+	}
 }

+ 5 - 5
src/main/resources/templates/procedures.html

@@ -59,7 +59,7 @@
 					</div>
 				</div>
 				<div id="uv-procedure-container">
-					<div class="uv-table-group-procedure" th:each="item,id : ${procedure_list}" th:attr="onclick='openProcedure('+${item.idInstancia}+')', data-id=${item.idInstancia}, data-alpha=${item.nomProces}, data-name=${item.titolCas}, data-date=${item.dataTascaActiva == null ? '0' : #dates.format(item.dataTascaActiva, 'yyyy-MM-dd')}" 
+					<div class="uv-table-group-procedure" th:each="item,id : ${procedure_list}" th:attr="onclick='openProcedure('+${item.idInstancia}+')', data-id=${item.idInstancia}, data-alpha=${item.nomProces}, data-name=${item.titolCas}, data-date=${item.dataTascaActiva}" 
 					th:classappend="${(item.tascaActivaExpired == true?'procedure-expired':'procedure-active')}">
 						<div class="uv-table-title procedure">
 							<input type="hidden" proc_val="id" th:value="${item.idInstancia}">
@@ -69,8 +69,8 @@
 							<input type="hidden" proc_val="center" th:value="${#locale.language} == 'es' ? ${item.centreCas}:${item.centreVal}">
 							<input type="hidden" proc_val="tit" th:value="${#locale.language} == 'es' ? ${item.titulacioCas}:${item.titulacioVal}">
 							<input type="hidden" proc_val="status" th:value="${item.estat}">
-							<input type="hidden" proc_val="datelim" th:value="${#dates.format(item.dataLimTascaActiva, 'dd-MM-yyyy')}">
-							<input type="hidden" proc_val="date" th:value="${#dates.format(item.dataTascaActiva, 'dd-MM-yyyy')}">
+							<input type="hidden" proc_val="datelim" th:value="${item.dataLimTascaActiva}">
+							<input type="hidden" proc_val="date" th:value="${item.dataTascaActiva}">
 							<input type="hidden" proc_val="t_active" th:value="${#locale.language} == 'es' ? ${item.nomTascaActivaCas}:${item.nomTascaActivaVal}">
 							<div class="row">
 								<div class="col-md-12">
@@ -93,9 +93,9 @@
 									<span>
 										<strong th:text="#{procedures.activeTask}"></strong>: <span th:text="${#locale.language} == 'es' ? ${item.nomTascaActivaCas}:${item.nomTascaActivaVal}"></span>
 										<br>
-										<span><strong th:text="#{procedures.dateInstance}"></strong>: <span th:text="${#dates.format(item.dataTascaActiva, 'dd-MM-yyyy')}"></span></span>
+										<span><strong th:text="#{procedures.dateInstance}"></strong>: <span th:text="${item.dataTascaActiva}"></span></span>
 										<br>
-										<span><strong th:text="#{procedures.dateLimit}"></strong>: <span th:text="${#dates.format(item.dataLimTascaActiva, 'dd-MM-yyyy')}"></span></span>
+										<span><strong th:text="#{procedures.dateLimit}"></strong>: <span th:text="${item.dataLimTascaActiva}"></span></span>
 									</span>
 								</div>
 								<div class="w-100"></div>