Skip to content

Commit 03bd3cd

Browse files
authored
Merge pull request #2137 from objectcomputing/bugfix-2124/filter-terminated-from-suggestions
Filter terminated team members from suggestion results
2 parents 3258d32 + a24ee6e commit 03bd3cd

File tree

2 files changed

+52
-3
lines changed

2 files changed

+52
-3
lines changed

server/src/main/java/com/objectcomputing/checkins/services/feedback/suggestions/FeedbackSuggestionServiceImpl.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import io.micronaut.context.annotation.Property;
1010
import com.objectcomputing.checkins.exceptions.PermissionException;
1111
import jakarta.inject.Singleton;
12+
13+
import java.time.LocalDate;
1214
import java.util.LinkedList;
1315
import java.util.List;
1416
import java.util.Set;
@@ -47,11 +49,11 @@ public List<FeedbackSuggestionDTO> getSuggestionsByProfileId(UUID id) {
4749
}
4850

4951
List<FeedbackSuggestionDTO> suggestions = new LinkedList<>();
50-
if(suggestFor.getSupervisorid() != null && !suggestFor.getSupervisorid().equals(currentUser.getId())) {
52+
if(suggestFor.getSupervisorid() != null && !suggestFor.getSupervisorid().equals(currentUser.getId()) && isMemberActive(suggestFor.getSupervisorid())) {
5153
suggestions.add(new FeedbackSuggestionDTO("Supervisor of requestee", suggestFor.getSupervisorid()));
5254
}
5355

54-
if(suggestFor.getPdlId() != null && !suggestFor.getPdlId().equals(currentUser.getId())) {
56+
if(suggestFor.getPdlId() != null && !suggestFor.getPdlId().equals(currentUser.getId()) && isMemberActive(suggestFor.getPdlId())) {
5557
suggestions.add(new FeedbackSuggestionDTO("PDL of requestee", suggestFor.getPdlId()));
5658
}
5759

@@ -60,6 +62,7 @@ public List<FeedbackSuggestionDTO> getSuggestionsByProfileId(UUID id) {
6062
for(TeamMember currentMembership: teamMemberships){
6163
Set<TeamMember> teamMembers = teamMemberServices.findByFields(currentMembership.getTeamId(), null, null);
6264
Set<TeamMember> leads = teamMembers.stream().filter((member)-> member.isLead()).collect(Collectors.toSet());
65+
leads = filterTerminated(leads);
6366
for(TeamMember lead: leads) {
6467
if(suggestions.size() < maxSuggestions && !lead.getMemberId().equals(id) && !lead.getMemberId().equals(currentUserId)) {
6568
suggestions.add(new FeedbackSuggestionDTO("Team lead for requestee", lead.getMemberId()));
@@ -72,6 +75,7 @@ public List<FeedbackSuggestionDTO> getSuggestionsByProfileId(UUID id) {
7275
for(TeamMember currentMembership: teamMemberships){
7376
Set<TeamMember> teamMembers = teamMemberServices.findByFields(currentMembership.getTeamId(), null, null);
7477
teamMembers = teamMembers.stream().filter((member)-> !member.isLead()).collect(Collectors.toSet());
78+
teamMembers = filterTerminated(teamMembers);
7579
for(TeamMember teamMember: teamMembers) {
7680
if(suggestions.size() < maxSuggestions && !teamMember.getMemberId().equals(id) && !teamMember.getMemberId().equals(currentUserId)) {
7781
suggestions.add(new FeedbackSuggestionDTO("Team member for requestee", teamMember.getMemberId()));
@@ -80,6 +84,20 @@ public List<FeedbackSuggestionDTO> getSuggestionsByProfileId(UUID id) {
8084

8185
if(suggestions.size() >= maxSuggestions) break;
8286
}
87+
88+
return suggestions;
89+
}
90+
91+
private Set<TeamMember> filterTerminated(Set<TeamMember> suggestions) {
92+
suggestions = suggestions.stream().filter((TeamMember suggestion) -> {
93+
return isMemberActive(suggestion.getMemberId());
94+
}).collect(Collectors.toSet());
8395
return suggestions;
8496
}
97+
98+
private boolean isMemberActive(UUID memberId) {
99+
MemberProfile suggested = memberProfileServices.getById(memberId);
100+
LocalDate terminationDate = suggested.getTerminationDate();
101+
return !(terminationDate != null && terminationDate.isBefore(LocalDate.now().atStartOfDay().toLocalDate()));
102+
}
85103
}

server/src/test/java/com/objectcomputing/checkins/services/feedback/suggestions/FeedbackSuggestionsControllerTest.java

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,13 +151,44 @@ void testGetRecsIfTeamMember() {
151151

152152
assertNotNull(JSON.toString(response.getBody().get()));
153153
assertEquals(HttpStatus.OK, response.getStatus());
154-
assertEquals(response.getBody().get().size(), 3 );
154+
assertEquals( 3, response.getBody().get().size() );
155155
assertContentEqualsEntity(idealOne, response.getBody().get().get(0));
156156
assertContentEqualsEntity(idealTwo, response.getBody().get().get(1));
157157
assertContentEqualsEntity(idealThree, response.getBody().get().get(2));
158158

159159
}
160160

161+
@Test
162+
void testDoesNotIncludeTerminatedTeamMembers() {
163+
Team team = createDefaultTeam();
164+
MemberProfile pdlProfile = createADefaultMemberProfile();
165+
createAndAssignRole(RoleType.PDL, pdlProfile);
166+
MemberProfile supervisor = createADefaultSupervisor();
167+
createAndAssignRole(RoleType.ADMIN, supervisor);
168+
MemberProfile requestee = createAProfileWithSupervisorAndPDL(supervisor, pdlProfile);
169+
MemberProfile requesteeTeamLead = createAnUnrelatedUser();
170+
MemberProfile teamMemberofRequestee = createASecondDefaultMemberProfile();
171+
MemberProfile termedTeamMemberofRequestee = createAPastTerminatedMemberProfile();
172+
createLeadTeamMember(team, requesteeTeamLead);
173+
createDefaultTeamMember(team, requestee);
174+
createDefaultTeamMember(team, teamMemberofRequestee);
175+
createDefaultTeamMember(team, termedTeamMemberofRequestee);
161176

177+
final HttpRequest<?> request = HttpRequest.GET(String.format("/%s", requestee.getId()))
178+
.basicAuth(teamMemberofRequestee.getWorkEmail(), RoleType.Constants.MEMBER_ROLE);
179+
final HttpResponse<List<FeedbackSuggestionDTO>> response = client.toBlocking()
180+
.exchange(request, Argument.listOf(FeedbackSuggestionDTO.class));
181+
182+
183+
FeedbackSuggestionDTO idealOne = createFeedbackSuggestion(supervisorReason, supervisor.getId());
184+
FeedbackSuggestionDTO idealTwo = createFeedbackSuggestion(pdlReason, pdlProfile.getId());
185+
FeedbackSuggestionDTO idealThree = createFeedbackSuggestion(teamLeadReason, requesteeTeamLead.getId());
162186

187+
assertNotNull(JSON.toString(response.getBody().get()));
188+
assertEquals(HttpStatus.OK, response.getStatus());
189+
assertEquals( 3, response.getBody().get().size() );
190+
assertContentEqualsEntity(idealOne, response.getBody().get().get(0));
191+
assertContentEqualsEntity(idealTwo, response.getBody().get().get(1));
192+
assertContentEqualsEntity(idealThree, response.getBody().get().get(2));
193+
}
163194
}

0 commit comments

Comments
 (0)