Skip to content

Commit 9f17bd5

Browse files
authored
EPMRPP-114304 || Refactor project user unassignment logic (#2639)
1 parent 2369424 commit 9f17bd5

4 files changed

Lines changed: 23 additions & 7 deletions

File tree

src/main/java/com/epam/reportportal/base/core/organization/impl/OrganizationUsersHandlerImpl.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import com.epam.reportportal.api.model.UserProjectInfo;
4444
import com.epam.reportportal.base.core.organization.OrganizationUserService;
4545
import com.epam.reportportal.base.core.organization.OrganizationUsersHandler;
46+
import com.epam.reportportal.base.core.project.ProjectUserService;
4647
import com.epam.reportportal.base.infrastructure.persistence.commons.querygen.Queryable;
4748
import com.epam.reportportal.base.infrastructure.persistence.dao.ProjectRepository;
4849
import com.epam.reportportal.base.infrastructure.persistence.dao.ProjectUserRepository;
@@ -90,6 +91,7 @@ public class OrganizationUsersHandlerImpl implements OrganizationUsersHandler {
9091
private final UserRepository userRepository;
9192

9293
private final ProjectUserRepository projectUserRepository;
94+
private final ProjectUserService projectUserService;
9395
private final OrganizationUserRepository organizationUserRepository;
9496
private final OrganizationRepositoryCustom organizationRepositoryCustom;
9597
private final OrganizationUserService organizationUserService;
@@ -264,7 +266,7 @@ private void unassignUserProject(Long orgId, Long userId, List<Long> projectsId)
264266
.filter(projectId -> !projectsId.contains(projectId))
265267
.toList();
266268

267-
projectUserRepository.deleteByUserIdAndProjectIds(userId, projectIdsToUnassign);
269+
projectUserService.deleteByUserIdAndProjectIds(orgId, userId, projectIdsToUnassign);
268270
}
269271

270272
private void assignToProjects(List<UserProjectInfo> projects, User user, boolean isManager) {

src/main/java/com/epam/reportportal/base/core/project/ProjectUserService.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package com.epam.reportportal.base.core.project;
22

3+
import static com.epam.reportportal.base.util.SecurityContextUtils.getPrincipal;
4+
35
import com.epam.reportportal.base.core.events.domain.UnassignUserEvent;
46
import com.epam.reportportal.base.core.user.UserService;
57
import com.epam.reportportal.base.infrastructure.persistence.dao.ProjectUserRepository;
68
import com.epam.reportportal.base.model.activity.UserActivityResource;
79
import com.epam.reportportal.base.ws.converter.converters.UserConverter;
10+
import java.util.List;
811
import lombok.RequiredArgsConstructor;
912
import lombok.extern.slf4j.Slf4j;
1013
import org.springframework.context.ApplicationEventPublisher;
@@ -31,4 +34,15 @@ public void unassignUserFromProjectsByOrgId(long orgId, long userId) {
3134
});
3235
}
3336

37+
public void deleteByUserIdAndProjectIds(Long orgId, Long userId, List<Long> projectIdsToUnassign) {
38+
var unassignedUser = userService.findById(userId);
39+
projectUserRepository.deleteByUserIdAndProjectIds(userId, projectIdsToUnassign)
40+
.forEach(projectId -> {
41+
UserActivityResource userActivityResource =
42+
UserConverter.TO_ACTIVITY_RESOURCE.apply(unassignedUser, projectId);
43+
applicationEventPublisher.publishEvent(
44+
new UnassignUserEvent(userActivityResource, getPrincipal().getUserId(), getPrincipal().getUsername(),
45+
orgId));
46+
});
47+
}
3448
}

src/main/java/com/epam/reportportal/base/infrastructure/persistence/dao/ProjectUserRepository.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,9 @@ public interface ProjectUserRepository
7777
@Modifying
7878
@Query(value =
7979
"""
80-
DELETE FROM project_user WHERE user_id = :userId AND project_id IN :projectIds
80+
DELETE FROM project_user WHERE user_id = :userId AND project_id IN :projectIds RETURNING project_id;
8181
""", nativeQuery = true)
82-
void deleteByUserIdAndProjectIds(@Param("userId") Long userId, @Param("projectIds") List<Long> projectIds);
82+
List<Long> deleteByUserIdAndProjectIds(@Param("userId") Long userId, @Param("projectIds") List<Long> projectIds);
8383

8484
/**
8585
* Deletes all entries from the project_user table for the specified project ID with user IDs in the provided list.

src/main/java/com/epam/reportportal/base/util/email/MailServiceFactory.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -197,14 +197,14 @@ public EmailService getDefaultEmailService(boolean checkConnection) {
197197
.map(IntegrationType::getId)
198198
.collect(Collectors.toList());
199199

200-
Integration globalIntegration = integrationRepository.findAllGlobalInIntegrationTypeIds(
201-
integrationTypeIds).stream()
200+
Integration globalIntegration = integrationRepository.findAllGlobalInIntegrationTypeIds(integrationTypeIds)
201+
.stream()
202202
.filter(integration -> integration.isEnabled() && integration.getType().isEnabled())
203203
.findFirst()
204204
.orElseThrow(() -> emailConfigurationFail(null));
205205

206-
EmailService emailService = getEmailService(globalIntegration).orElseThrow(
207-
() -> emailConfigurationFail(null));
206+
EmailService emailService = getEmailService(globalIntegration)
207+
.orElseThrow(() -> emailConfigurationFail(null));
208208

209209
if (checkConnection) {
210210
checkConnection(emailService);

0 commit comments

Comments
 (0)