diff --git a/src/main/java/com/olympus/hermione/controllers/dashboard/DashboardExecutionController.java b/src/main/java/com/olympus/hermione/controllers/dashboard/DashboardExecutionController.java index 11c3ff8..9189262 100644 --- a/src/main/java/com/olympus/hermione/controllers/dashboard/DashboardExecutionController.java +++ b/src/main/java/com/olympus/hermione/controllers/dashboard/DashboardExecutionController.java @@ -136,32 +136,43 @@ public class DashboardExecutionController { @GetMapping("/users-by-projects") public ResponseEntity> getUsersByProjects(@RequestParam String projectIdsArr) { - try { - - List ids = Arrays.asList(projectIdsArr.split(",")); - List objectIds = ids.stream() - .map(ObjectId::new) - .collect(Collectors.toList()); - - List users = dashboardUserRepository.findUsersByLstProjectsIn(objectIds); - return ResponseEntity.ok(users); - } catch (Exception e) { - // Log dell'errore - logger.error("Error fetching users by projects: ", e); - return ResponseEntity.internalServerError().body(null); + try { + + List ids = Arrays.asList(projectIdsArr.split(",")); + List objectIds = ids.stream() + .map(ObjectId::new) + .collect(Collectors.toList()); + + List users = dashboardUserRepository.findUsersByLstProjectsIn(objectIds); + return ResponseEntity.ok(users); + } catch (Exception e) { + logger.error("Error fetching users by projects: ", e); + return ResponseEntity.internalServerError().body(null); } } @GetMapping("/scenarios-filter") - public ResponseEntity> getScenarios(@RequestParam String selectedAccount) { - try { - List scenarios = dashboardScenariosRepository.findAllForAccount(selectedAccount); - return ResponseEntity.ok(scenarios); - } catch (Exception e) { - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); + public ResponseEntity> getScenarios(@RequestParam String selectedAccount, + @RequestParam String dateFrom, + @RequestParam String dateTo) { + + try { + + Date fromDate = new SimpleDateFormat("yyyy-MM-dd").parse(dateFrom); + Date toDate = new SimpleDateFormat("yyyy-MM-dd").parse(dateTo); + + + List scenarioIds = dashboardScenarioExecutionRepository.findDistinctScenarioIdsByDateAndAccount(fromDate, toDate, selectedAccount); + List scenarios = dashboardScenariosRepository.findAllById(scenarioIds); + return ResponseEntity.ok(scenarios); + } catch (Exception e) { + logger.error("Error getting scenarios: ", e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); } } + + @PostMapping("/dashboard-chat-stats") public ResponseEntity> getChatStats (@RequestBody DashboardChatInput filters) { try { diff --git a/src/main/java/com/olympus/hermione/repository/dashboard/DashboardScenarioExecutionRepository.java b/src/main/java/com/olympus/hermione/repository/dashboard/DashboardScenarioExecutionRepository.java index 51a32d9..33c4ebf 100644 --- a/src/main/java/com/olympus/hermione/repository/dashboard/DashboardScenarioExecutionRepository.java +++ b/src/main/java/com/olympus/hermione/repository/dashboard/DashboardScenarioExecutionRepository.java @@ -1,11 +1,8 @@ package com.olympus.hermione.repository.dashboard; import java.util.Date; -import java.util.HashMap; import java.util.List; - import org.bson.types.ObjectId; -import org.bson.Document; import org.springframework.data.mongodb.repository.Aggregation; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.mongodb.repository.Query; @@ -38,6 +35,14 @@ public interface DashboardScenarioExecutionRepository extends MongoRepository findUsersByLstProjectsIn(List projectIds); + @Aggregation(pipeline = { + "{ '$match': { 'startDate': { '$gte': ?0, '$lte': ?1 }, 'scenario.account': ?2, 'execSharedMap.user_input.selected_project': { '$in': ?3 } } }", + "{ '$group': { '_id': '$scenario._id' } }", + "{ '$project': { '_id': 0, 'scenarioId': '$_id' } }" + }) + List findDistinctScenarioIdsByDateAndAccount(Date dateFrom, Date dateTo, String account); + + @Aggregation(pipeline = { "{ '$match': { " + @@ -96,6 +101,4 @@ List execStatsByFilters( Date toDate); -} - - +} \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 337bd92..2f13669 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -62,11 +62,10 @@ spring.ai.vectorstore.chroma.client.key-token=BxZWXFXC4UMSxamf5xP5SioGIg3FPfP7 spring.ai.vectorstore.chroma.initialize-schema=true spring.ai.vectorstore.chroma.collection-name=olympus -spring.servlet.multipart.max-file-size=10MB -spring.servlet.multipart.max-request-size=10MB +spring.servlet.multipart.max-file-size=20MB +spring.servlet.multipart.max-request-size=20MB file.upload-dir=/mnt/hermione_storage/documents/file_input_scenarios/ -# file.upload-dir=C:\\mnt\\hermione_storage\\documents\\file_input_scenarios\\ generic-file-parser-module.url=http://generic-file-parser-module-service.olympus.svc.cluster.local:8080