diff --git a/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildServicesImpl.java b/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildServicesImpl.java index 8b8e5a2b07..df78763244 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildServicesImpl.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildServicesImpl.java @@ -172,7 +172,7 @@ public GuildResponseDTO update(GuildUpdateDTO guildDTO) { Optional first = existingGuildMembers.stream().filter(existing -> existing.getMemberId().equals(updatedMember.getMemberId())).findFirst(); MemberProfile existingMember = memberProfileServices.getById(updatedMember.getMemberId()); if(first.isEmpty()) { - newMembers.add(fromMemberEntity(guildMemberServices.save(fromMemberDTO(updatedMember, newGuildEntity.getId())), existingMember)); + newMembers.add(fromMemberEntity(guildMemberServices.save(fromMemberDTO(updatedMember, newGuildEntity.getId()), false), existingMember)); addedMembers.add(existingMember); } else { newMembers.add(fromMemberEntity(guildMemberServices.update(fromMemberDTO(updatedMember, newGuildEntity.getId())), existingMember)); @@ -182,7 +182,7 @@ public GuildResponseDTO update(GuildUpdateDTO guildDTO) { //delete any removed members from guild existingGuildMembers.forEach(existingMember -> { if(!guildDTO.getGuildMembers().stream().filter(updatedTeamMember -> updatedTeamMember.getMemberId().equals(existingMember.getMemberId())).findFirst().isPresent()) { - guildMemberServices.delete(existingMember.getId()); + guildMemberServices.delete(existingMember.getId(), false); removedMembers.add(memberProfileServices.getById(existingMember.getMemberId())); } }); diff --git a/server/src/main/java/com/objectcomputing/checkins/services/guild/member/GuildMemberController.java b/server/src/main/java/com/objectcomputing/checkins/services/guild/member/GuildMemberController.java index d4f0d29ba6..49d7bc139d 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/guild/member/GuildMemberController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/guild/member/GuildMemberController.java @@ -37,8 +37,10 @@ public GuildMemberController(GuildMemberServices guildMemberServices) { @Post public HttpResponse createMembers(@Body @Valid GuildMemberCreateDTO guildMember, HttpRequest request) { - GuildMember newGuildMember = guildMemberServices.save(new GuildMember(guildMember.getGuildId(), - guildMember.getMemberId(), guildMember.getLead())); + GuildMember newGuildMember = guildMemberServices.save( + new GuildMember(guildMember.getGuildId(), guildMember.getMemberId(), guildMember.getLead()), + true + ); return HttpResponse .created(newGuildMember) .headers(headers -> headers.location( @@ -95,7 +97,7 @@ public Set findGuildMembers(@Nullable UUID guildid, */ @Delete("/{id}") public HttpResponse deleteGuildMember(@NotNull UUID id) { - guildMemberServices.delete(id); + guildMemberServices.delete(id, true); return HttpResponse .ok(); } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/guild/member/GuildMemberServices.java b/server/src/main/java/com/objectcomputing/checkins/services/guild/member/GuildMemberServices.java index 191bf7d84a..660224b3e2 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/guild/member/GuildMemberServices.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/guild/member/GuildMemberServices.java @@ -5,13 +5,13 @@ public interface GuildMemberServices { - GuildMember save(GuildMember guildMember); + GuildMember save(GuildMember guildMember, boolean sendEmail); GuildMember read(UUID id); GuildMember update(GuildMember guildMember); - void delete(UUID id); + void delete(UUID id, boolean sendEmail); Set findByFields(UUID guildid, UUID memberid, Boolean lead); } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/guild/member/GuildMemberServicesImpl.java b/server/src/main/java/com/objectcomputing/checkins/services/guild/member/GuildMemberServicesImpl.java index 37a1f4101a..a3fbb5e5d1 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/guild/member/GuildMemberServicesImpl.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/guild/member/GuildMemberServicesImpl.java @@ -57,7 +57,7 @@ public void setEmailSender(EmailSender emailSender) { this.emailSender = emailSender; } - public GuildMember save(@Valid @NotNull GuildMember guildMember) { + public GuildMember save(@Valid @NotNull GuildMember guildMember, boolean sendEmail) { final UUID guildId = guildMember.getGuildId(); final UUID memberId = guildMember.getMemberId(); Optional guild = guildRepo.findById(guildId); @@ -84,11 +84,13 @@ else if (!currentUserServices.isAdmin() && !guildMember.getMemberId().equals(cur throw new PermissionException(NOT_AUTHORIZED_MSG); } - emailSender - .sendEmail(null, null, "Membership changes have been made to the " + guild.get().getName() + " guild", - constructEmailContent(guildMember, true), - getGuildLeadsEmails(guildLeads, guildMember).toArray(new String[0]) - ); + if (sendEmail) { + emailSender + .sendEmail(null, null, "Membership changes have been made to the " + guild.get().getName() + " guild", + constructEmailContent(guildMember, true), + getGuildLeadsEmails(guildLeads, guildMember).toArray(new String[0]) + ); + } GuildMember guildMemberSaved = guildMemberRepo.save(guildMember); guildMemberHistoryRepository.save(buildGuildMemberHistory(guildId,memberId,"Added", LocalDateTime.now())); @@ -145,7 +147,7 @@ public Set findByFields(@Nullable UUID guildId, @Nullable UUID memb return guildMembers; } - public void delete(@NotNull UUID id) { + public void delete(@NotNull UUID id, boolean sendEmail) { MemberProfile currentUser = currentUserServices.getCurrentUser(); GuildMember guildMember = guildMemberRepo.findById(id).orElse(null); @@ -166,11 +168,13 @@ public void delete(@NotNull UUID id) { Guild guild = guildRepo.findById(guildMember.getGuildId()) .orElseThrow(() -> new NotFoundException("No Guild found with id " + guildMember.getGuildId())); - emailSender - .sendEmail(null, null, "Membership Changes have been made to the " + guild.getName() + " guild", - constructEmailContent(guildMember, false), - getGuildLeadsEmails(guildLeads, guildMember).toArray(new String[0]) - ); + if (sendEmail) { + emailSender + .sendEmail(null, null, "Membership Changes have been made to the " + guild.getName() + " guild", + constructEmailContent(guildMember, false), + getGuildLeadsEmails(guildLeads, guildMember).toArray(new String[0]) + ); + } guildMemberRepo.deleteById(id); guildMemberHistoryRepository.save(buildGuildMemberHistory(guildMember.getGuildId(),guildMember.getMemberId(),"Deleted", LocalDateTime.now())); diff --git a/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildControllerTest.java index c9e6ba7308..dd31663ddd 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildControllerTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildControllerTest.java @@ -98,11 +98,9 @@ void testEmailSentToGuildLeadWhenGuildMembersAdded() { final HttpRequest request = HttpRequest.PUT("/", requestBody).basicAuth(memberProfileOfAdmin.getWorkEmail(), ADMIN_ROLE); client.toBlocking().exchange(request, GuildResponseDTO.class); - assertEquals(2, emailSender.events.size()); + assertEquals(1, emailSender.events.size()); assertEquals( List.of( - // Email to the Guild lead - List.of("SEND_EMAIL", "null", "null", "Membership changes have been made to the Ninja guild", "

Bill Charles has joined the Ninja guild.

Click here to view the changes in the Check-Ins app.", memberProfile.getWorkEmail() + "," + memberProfile2.getWorkEmail()), // Email to both the Guild leads List.of("SEND_EMAIL", "null", "null", "Membership Changes have been made to the Ninja guild", "

Changes have been made to the Ninja guild.

The following members have been added:

  • Bill Charles
Click here to view the changes in the Check-Ins app.", memberProfile.getWorkEmail() + "," + memberProfile2.getWorkEmail()) ), @@ -132,9 +130,8 @@ void testEmailSentToGuildLeadWhenGuildMembersRemoved() { final HttpRequest request = HttpRequest.PUT("/", requestBody).basicAuth(memberProfileOfAdmin.getWorkEmail(), ADMIN_ROLE); client.toBlocking().exchange(request, GuildResponseDTO.class); - assertEquals(2, emailSender.events.size()); + assertEquals(1, emailSender.events.size()); assertEquals(List.of( - List.of("SEND_EMAIL", "null", "null", "Membership Changes have been made to the Ninja guild", "

Bill Charles has left the Ninja guild.

Click here to view the changes in the Check-Ins app.", memberProfile.getWorkEmail()), List.of("SEND_EMAIL", "null", "null", "Membership Changes have been made to the Ninja guild", "

Changes have been made to the Ninja guild.

The following members have been removed:

  • Bill Charles
Click here to view the changes in the Check-Ins app.", memberProfile.getWorkEmail()) ), emailSender.events @@ -488,7 +485,7 @@ void deleteGuildByAdmin() { createDefaultGuildMember(guildEntity, memberProfileOfAdmin); final MutableHttpRequest request = HttpRequest.DELETE(String.format("/%s", guildEntity.getId())).basicAuth(memberProfileOfAdmin.getWorkEmail(), ADMIN_ROLE); - final HttpResponse response = client.toBlocking().exchange(request); + final HttpResponse response = client.toBlocking().exchange(request); assertEquals(HttpStatus.OK, response.getStatus()); } @@ -504,7 +501,7 @@ void deleteGuildByGuildLead() { // createDefaultGuildMember(guild, memberProfileOfGuildMember); final MutableHttpRequest request = HttpRequest.DELETE(String.format("/%s", guildEntity.getId())).basicAuth(memberProfileofGuildLeadEntity.getWorkEmail(), MEMBER_ROLE); - final HttpResponse response = client.toBlocking().exchange(request); + final HttpResponse response = client.toBlocking().exchange(request); assertEquals(HttpStatus.OK, response.getStatus()); }