From b8c658bc5fa1dbad8255efb698f72593823ecdb7 Mon Sep 17 00:00:00 2001 From: djuarezgf Date: Mon, 1 Jul 2024 12:54:42 +0200 Subject: [PATCH] Added: Delete Coder workspace job --- CHANGELOG.md | 1 + src/main/java/de/samply/coder/CoderJob.java | 16 ++++++++++++---- .../ProjectBridgeheadUserRepository.java | 9 ++++++++- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb3db14..463d136 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -138,3 +138,4 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - RStudio in Coder - Research environment project type - Upload file to Coder +- Delete Coder workspace job diff --git a/src/main/java/de/samply/coder/CoderJob.java b/src/main/java/de/samply/coder/CoderJob.java index 4c75d1a..809d923 100644 --- a/src/main/java/de/samply/coder/CoderJob.java +++ b/src/main/java/de/samply/coder/CoderJob.java @@ -12,6 +12,8 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import java.time.Instant; +import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -56,16 +58,22 @@ public void manageCoderActiveUsers() { } private List fetchActiveUsers() { - return projectBridgeheadUserRepository.getDistinctByProjectTypeAndQueryState(ProjectType.RESEARCH_ENVIRONMENT, QueryState.FINISHED, ProjectBridgeheadState.ACCEPTED); + return projectBridgeheadUserRepository.getDistinctInValidaProjectStateByProjectTypeAndQueryStateAndProjectBridgeheadState(ProjectType.RESEARCH_ENVIRONMENT, QueryState.FINISHED, ProjectBridgeheadState.ACCEPTED); } public void manageCoderInactiveUsers() { - //TODO + fetchInactiveUsers().stream().forEach(user -> { + Optional projectCoder = projectCoderRepository.findByProjectBridgeheadUserAndDeletedAtIsNull(user); + if (projectCoder.isPresent()) { + this.coderService.deleteWorkspace(user); + projectCoder.get().setDeletedAt(Instant.now()); + projectCoderRepository.save(projectCoder.get()); + } + }); } private List fetchInactiveUsers() { - //TODO - return null; + return projectBridgeheadUserRepository.getDistinctInInvalidProjectStateByProjectType(ProjectType.RESEARCH_ENVIRONMENT); } } diff --git a/src/main/java/de/samply/db/repository/ProjectBridgeheadUserRepository.java b/src/main/java/de/samply/db/repository/ProjectBridgeheadUserRepository.java index f571b7b..80658bd 100644 --- a/src/main/java/de/samply/db/repository/ProjectBridgeheadUserRepository.java +++ b/src/main/java/de/samply/db/repository/ProjectBridgeheadUserRepository.java @@ -58,6 +58,13 @@ public interface ProjectBridgeheadUserRepository extends JpaRepository getDistinctByProjectTypeAndQueryState(ProjectType projectType, QueryState queryState, ProjectBridgeheadState projectBridgeheadState); + List getDistinctInValidaProjectStateByProjectTypeAndQueryStateAndProjectBridgeheadState(ProjectType projectType, QueryState queryState, ProjectBridgeheadState projectBridgeheadState); + + @Query("SELECT DISTINCT pbu FROM ProjectBridgeheadUser pbu WHERE pbu.projectBridgehead.project.type = :projectType AND (" + + "(pbu.projectRole = 'DEVELOPER' AND pbu.projectBridgehead.project.state != 'DEVELOP') OR " + + "(pbu.projectRole = 'PILOT' AND pbu.projectBridgehead.project.state != 'PILOT') OR" + + "(pbu.projectRole = 'FINAL' AND pbu.projectBridgehead.project.state != 'FINAL'))") + List getDistinctInInvalidProjectStateByProjectType(ProjectType projectType); + }