diff --git a/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/program/notification/DefaultProgramNotificationService.java b/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/program/notification/DefaultProgramNotificationService.java index c0096e9cb405..00625655eba8 100644 --- a/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/program/notification/DefaultProgramNotificationService.java +++ b/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/program/notification/DefaultProgramNotificationService.java @@ -499,6 +499,7 @@ private Set resolveDhisMessageRecipients( orgUnitInHierarchy.addAll(orgUnit.getAncestors()); return userGroupMembers.stream() + .filter(User::isEnabled) .filter(r -> orgUnitInHierarchy.contains(r.getOrganisationUnit())) .collect(Collectors.toSet()); @@ -507,6 +508,7 @@ private Set resolveDhisMessageRecipients( OrganisationUnit parentOrgUnit = orgUnit.getParent(); return userGroupMembers.stream() + .filter(User::isEnabled) .filter(u -> u.getOrganisationUnit().equals(parentOrgUnit)) .collect(Collectors.toSet()); } @@ -516,6 +518,9 @@ private Set resolveDhisMessageRecipients( userGroupMembers.addAll(orgUnit.getUsers()); } + // filter out all users that are disabled + userGroupMembers.removeIf(User::isDisabled); + return userGroupMembers; } diff --git a/dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/program/notification/ProgramNotificationServiceTest.java b/dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/program/notification/ProgramNotificationServiceTest.java index e39818c9de93..4413329826d2 100644 --- a/dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/program/notification/ProgramNotificationServiceTest.java +++ b/dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/program/notification/ProgramNotificationServiceTest.java @@ -142,6 +142,8 @@ class ProgramNotificationServiceTest extends DhisConvenienceTest { private User userLvlTwoLeftLeft; + private User userLvlTwoLeftLeftDisabled; + private User userLvlTwoLeftRight; private User userLvlOneLeft; @@ -607,6 +609,7 @@ void testSendToHierarchy() { assertTrue(users.contains(userLvlOneLeft)); assertTrue(users.contains(userRoot)); + assertFalse(users.contains(userLvlTwoLeftLeftDisabled)); assertFalse(users.contains(userLvlTwoLeftRight)); assertFalse(users.contains(userLvlOneRight)); } @@ -734,10 +737,15 @@ private void setUpInstances() { userB = makeUser("V"); userB.setPhoneNumber(USERB_PHONE_NUMBER); userB.getOrganisationUnits().add(lvlTwoLeftLeft); + userB.getOrganisationUnits().add(lvlOneLeft); userGroup = createUserGroup('G', Sets.newHashSet(userA, userB)); // User based on hierarchy + userLvlTwoLeftLeftDisabled = makeUser("D"); + userLvlTwoLeftLeftDisabled.setDisabled(true); + userLvlTwoLeftLeftDisabled.getOrganisationUnits().add(lvlTwoLeftLeft); + lvlTwoLeftLeft.getUsers().add(userLvlTwoLeftLeftDisabled); userLvlTwoLeftLeft = makeUser("K"); userLvlTwoLeftLeft.getOrganisationUnits().add(lvlTwoLeftLeft);