This is an automated email from the ASF dual-hosted git repository.

bhliva pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git

commit f386f6bf41e0bd32d4fe5e20d913419f88b2639a
Author: Oleh Fuks <olegfuk...@gmail.com>
AuthorDate: Wed Nov 13 12:24:18 2019 +0200

    [DLAB-1266] Fixed issue with switching between project for user (not admin)
---
 .../java/com/epam/dlab/backendapi/dao/ProjectDAO.java     |  2 +-
 .../java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java | 15 +++++++++++----
 .../epam/dlab/backendapi/resources/ProjectResource.java   |  7 ++++---
 .../com/epam/dlab/backendapi/service/ProjectService.java  |  2 +-
 .../dlab/backendapi/service/impl/ProjectServiceImpl.java  |  4 ++--
 5 files changed, 19 insertions(+), 11 deletions(-)

diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java
index 95a954c..a9a89f5 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java
@@ -16,7 +16,7 @@ public interface ProjectDAO {
 
        List<ProjectDTO> 
getProjectsWithEndpointStatusNotIn(UserInstanceStatus... statuses);
 
-       List<ProjectDTO> getUserProjects(UserInfo userInfo);
+       List<ProjectDTO> getUserProjects(UserInfo userInfo, boolean active);
 
        void create(ProjectDTO projectDTO);
 
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java
index 4607155..a74a07b 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java
@@ -58,13 +58,11 @@ public class ProjectDAOImpl extends BaseDAO implements 
ProjectDAO {
        }
 
        @Override
-       public List<ProjectDTO> getUserProjects(UserInfo userInfo) {
+       public List<ProjectDTO> getUserProjects(UserInfo userInfo, boolean 
active) {
                final Set<String> groups = 
Stream.concat(userGroupDao.getUserGroups(userInfo.getName()).stream(),
                                userInfo.getRoles().stream())
                                .collect(Collectors.toSet());
-               final String groupsRegex = !groups.isEmpty() ? String.join("|", 
groups) + "|" + ANYUSER : ANYUSER;
-               return find(PROJECTS_COLLECTION, and(elemMatch(GROUPS, 
regexCaseInsensitive(groupsRegex)),
-                               eq(ENDPOINT_STATUS_FIELD, 
UserInstanceStatus.RUNNING.name())), ProjectDTO.class);
+               return find(PROJECTS_COLLECTION, userProjectCondition(groups, 
active), ProjectDTO.class);
        }
 
        @Override
@@ -135,6 +133,15 @@ public class ProjectDAOImpl extends BaseDAO implements 
ProjectDAO {
                return eq("name", name);
        }
 
+       private Bson userProjectCondition(Set<String> groups, boolean active) {
+               final String groupsRegex = !groups.isEmpty() ? String.join("|", 
groups) + "|" + ANYUSER : ANYUSER;
+               if (active) {
+                       return and(elemMatch(GROUPS, 
regexCaseInsensitive(groupsRegex)),
+                                       eq(ENDPOINT_STATUS_FIELD, 
UserInstanceStatus.RUNNING.name()));
+               }
+               return elemMatch(GROUPS, regexCaseInsensitive(groupsRegex));
+       }
+
        private Bson projectAndEndpointCondition(String projectName, String 
endpointName) {
                return and(eq("name", projectName), eq("endpoints.name", 
endpointName));
        }
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java
index c361b1b..e75a735 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java
@@ -191,12 +191,13 @@ public class ProjectResource {
                                        content = @Content(mediaType = 
MediaType.APPLICATION_JSON, schema =
                                        @Schema(implementation = 
ProjectDTO.class))),
        })
-       @Path("/me")
        @GET
+       @Path("/me")
        @Produces(MediaType.APPLICATION_JSON)
-       public Response getUserProjects(@Parameter(hidden = true) @Auth 
UserInfo userInfo) {
+       public Response getUserProjects(@Parameter(hidden = true) @Auth 
UserInfo userInfo,
+                                                                       
@QueryParam("active") @DefaultValue("false") boolean active) {
                return Response
-                               
.ok(projectService.getUserActiveProjects(userInfo))
+                               
.ok(projectService.getUserActiveProjects(userInfo, active))
                                .build();
        }
 
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java
index 1a94259..113cfa7 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java
@@ -12,7 +12,7 @@ public interface ProjectService {
 
        List<ProjectManagingDTO> getProjectsForManaging();
 
-       List<ProjectDTO> getUserActiveProjects(UserInfo userInfo);
+       List<ProjectDTO> getUserActiveProjects(UserInfo userInfo, boolean 
active);
 
        List<ProjectDTO> getProjectsWithStatus(ProjectDTO.Status status);
 
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
index 16663a4..13dd23c 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
@@ -90,8 +90,8 @@ public class ProjectServiceImpl implements ProjectService {
        }
 
        @Override
-       public List<ProjectDTO> getUserActiveProjects(UserInfo userInfo) {
-               return projectDAO.getUserProjects(userInfo);
+       public List<ProjectDTO> getUserActiveProjects(UserInfo userInfo, 
boolean active) {
+               return projectDAO.getUserProjects(userInfo, active);
        }
 
        @Override


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org
For additional commands, e-mail: commits-h...@dlab.apache.org

Reply via email to