From 37bdfa2abb5931a959c05607e431075f12778647 Mon Sep 17 00:00:00 2001 From: Sowmiya Ravikumar Date: Wed, 17 Jun 2026 07:25:22 +0100 Subject: [PATCH 1/3] Adds meeting_link to Mentor APIs --- .../wcc/platform/domain/platform/mentorship/Mentor.java | 8 ++++++-- .../platform/domain/platform/mentorship/MentorDto.java | 7 ++++++- .../repository/postgres/component/MentorMapper.java | 1 + .../repository/postgres/constants/MentorConstants.java | 1 + .../postgres/mentorship/PostgresMentorRepository.java | 9 ++++++--- .../java/com/wcc/platform/service/MentorshipService.java | 3 +++ .../com/wcc/platform/domain/platform/MentorTest.java | 2 +- .../domain/platform/mentorship/MentorDtoTest.java | 2 +- .../com/wcc/platform/service/MentorshipServiceTest.java | 2 ++ .../mentorship/MentorshipServiceIntegrationTest.java | 1 + 10 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/wcc/platform/domain/platform/mentorship/Mentor.java b/src/main/java/com/wcc/platform/domain/platform/mentorship/Mentor.java index a1c5b4864..5008d2bb5 100644 --- a/src/main/java/com/wcc/platform/domain/platform/mentorship/Mentor.java +++ b/src/main/java/com/wcc/platform/domain/platform/mentorship/Mentor.java @@ -41,6 +41,7 @@ public class Mentor extends Member { private String calendlyLink; private Boolean acceptMale; private Boolean acceptPromotion; + private String meetingLink; /** Mentor Builder. */ @Builder(builderMethodName = "mentorBuilder") @@ -68,7 +69,8 @@ public Mentor( final Boolean isWomen, final String calendlyLink, final Boolean acceptMale, - final Boolean acceptPromotion) { + final Boolean acceptPromotion, + final String meetingLink) { super( id, fullName, @@ -95,6 +97,7 @@ public Mentor( this.calendlyLink = calendlyLink; this.acceptMale = acceptMale; this.acceptPromotion = acceptPromotion; + this.meetingLink = meetingLink; } /** Checks for empty or null and returns capitalized list of string. */ @@ -151,7 +154,8 @@ private MentorDtoBuilder buildFromMentor(final Mentor mentor) { .isWomen(mentor.getIsWomen()) .calendlyLink(mentor.getCalendlyLink()) .acceptMale(mentor.getAcceptMale()) - .acceptPromotion(mentor.getAcceptPromotion()); + .acceptPromotion(mentor.getAcceptPromotion()) + .meetingLink(mentor.getMeetingLink()); } /** Lombok builder hook to enforce normalization. */ diff --git a/src/main/java/com/wcc/platform/domain/platform/mentorship/MentorDto.java b/src/main/java/com/wcc/platform/domain/platform/mentorship/MentorDto.java index c134b025e..eeebcee95 100644 --- a/src/main/java/com/wcc/platform/domain/platform/mentorship/MentorDto.java +++ b/src/main/java/com/wcc/platform/domain/platform/mentorship/MentorDto.java @@ -51,6 +51,7 @@ public class MentorDto extends MemberDto { private Boolean acceptMale; private Boolean acceptPromotion; private Boolean isWomen; + private String meetingLink; /** Mentor Builder. */ @SuppressWarnings("PMD.ExcessiveParameterList") @@ -78,7 +79,8 @@ public MentorDto( final Boolean isWomen, final String calendlyLink, final Boolean acceptMale, - final Boolean acceptPromotion) { + final Boolean acceptPromotion, + final String meetingLink) { super( id, fullName, @@ -107,6 +109,7 @@ public MentorDto( this.acceptMale = acceptMale; this.acceptPromotion = acceptPromotion; this.isWomen = isWomen; + this.meetingLink = meetingLink; } /** @@ -140,6 +143,7 @@ public Mentor toMentor() { .calendlyLink(getCalendlyLink()) .acceptMale(getAcceptMale()) .acceptPromotion(getAcceptPromotion()) + .meetingLink(getMeetingLink()) .build(); } @@ -180,6 +184,7 @@ public Mentor merge(final Mentor mentor) { .calendlyLink(mergeString(this.getCalendlyLink(), mentor.getCalendlyLink())) .acceptMale(mergeNullable(this.getAcceptMale(), mentor.getAcceptMale())) .acceptPromotion(mergeNullable(this.getAcceptPromotion(), mentor.getAcceptPromotion())) + .meetingLink(mergeString(this.getMeetingLink(), mentor.getMeetingLink())) .build(); } diff --git a/src/main/java/com/wcc/platform/repository/postgres/component/MentorMapper.java b/src/main/java/com/wcc/platform/repository/postgres/component/MentorMapper.java index 4e65c88ca..61118d35f 100644 --- a/src/main/java/com/wcc/platform/repository/postgres/component/MentorMapper.java +++ b/src/main/java/com/wcc/platform/repository/postgres/component/MentorMapper.java @@ -63,6 +63,7 @@ public Mentor mapRowToMentor(final ResultSet rs) throws SQLException { .calendlyLink(rs.getString(COL_CALENDLY_LINK)) .acceptMale(rs.getBoolean(COL_ACCEPT_MALE)) .acceptPromotion(rs.getBoolean(COL_ACCEPT_PROMO)) + .meetingLink(rs.getString(COL_MEET_LINK)) .build(); } diff --git a/src/main/java/com/wcc/platform/repository/postgres/constants/MentorConstants.java b/src/main/java/com/wcc/platform/repository/postgres/constants/MentorConstants.java index eeb7d1752..4d75a242f 100644 --- a/src/main/java/com/wcc/platform/repository/postgres/constants/MentorConstants.java +++ b/src/main/java/com/wcc/platform/repository/postgres/constants/MentorConstants.java @@ -12,6 +12,7 @@ public final class MentorConstants { public static final String COL_CALENDLY_LINK = "calendly_link"; public static final String COL_ACCEPT_MALE = "accept_male_mentee"; public static final String COL_ACCEPT_PROMO = "accept_promote_social_media"; + public static final String COL_MEET_LINK = "meeting_link"; // MENTOR_MENTEE_SECTION table public static final String COLUMN_IDEAL_MENTEE = "ideal_mentee"; diff --git a/src/main/java/com/wcc/platform/repository/postgres/mentorship/PostgresMentorRepository.java b/src/main/java/com/wcc/platform/repository/postgres/mentorship/PostgresMentorRepository.java index 498c21dc4..0f3bee9a7 100644 --- a/src/main/java/com/wcc/platform/repository/postgres/mentorship/PostgresMentorRepository.java +++ b/src/main/java/com/wcc/platform/repository/postgres/mentorship/PostgresMentorRepository.java @@ -46,7 +46,8 @@ public class PostgresMentorRepository implements MentorRepository { + "is_available = ?, " + "calendly_link = ?, " + "accept_male_mentee = ?, " - + "accept_promote_social_media = ? " + + "accept_promote_social_media = ?, " + + "meeting_link = ? " + "WHERE mentor_id = ?"; private static final String SQL_SET_MENTOR_STATUS = "UPDATE mentors SET profile_status = ? WHERE mentor_id = ?"; @@ -55,7 +56,7 @@ public class PostgresMentorRepository implements MentorRepository { private static final String SQL_INSERT_MENTOR = "INSERT INTO mentors (mentor_id, profile_status, bio, years_experience, " + " spoken_languages, is_available, calendly_link, " - + " accept_male_mentee, accept_promote_social_media) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + " accept_male_mentee, accept_promote_social_media, meeting_link) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; private static final String SQL_GET_BY_ID = "SELECT * FROM mentors WHERE mentor_id = ?"; private static final String SQL_DELETE_BY_ID = "DELETE FROM mentors WHERE mentor_id = ?"; private static final String SQL_GET_BY_EMAIL = @@ -227,7 +228,8 @@ private void insertMentor(final Mentor mentor, final Long memberId) { true, mentor.getCalendlyLink(), mentor.getAcceptMale(), - mentor.getAcceptPromotion()); + mentor.getAcceptPromotion(), + mentor.getMeetingLink()); } /** @@ -251,6 +253,7 @@ private void updateMentorDetails(final Mentor mentor, final Long mentorId) { mentor.getCalendlyLink(), mentor.getAcceptMale(), mentor.getAcceptPromotion(), + mentor.getMeetingLink(), mentorId); } } diff --git a/src/main/java/com/wcc/platform/service/MentorshipService.java b/src/main/java/com/wcc/platform/service/MentorshipService.java index aa14cfef5..3ea95afea 100644 --- a/src/main/java/com/wcc/platform/service/MentorshipService.java +++ b/src/main/java/com/wcc/platform/service/MentorshipService.java @@ -86,6 +86,7 @@ public Mentor create(final Mentor mentor) { .calendlyLink(mentor.getCalendlyLink()) .acceptMale(mentor.getAcceptMale()) .acceptPromotion(mentor.getAcceptPromotion()) + .meetingLink(mentor.getMeetingLink()) .build(); return mentorRepository.create(mentorWithExistingId); @@ -204,6 +205,7 @@ private MentorDto enrichWithProfilePicture(final MentorDto dto) { .calendlyLink(dto.getCalendlyLink()) .acceptMale(dto.getAcceptMale()) .acceptPromotion(dto.getAcceptPromotion()) + .meetingLink(dto.getMeetingLink()) .build(); } @@ -238,6 +240,7 @@ private Mentor enrichMentorWithProfilePicture(final Mentor mentor) { .calendlyLink(mentor.getCalendlyLink()) .acceptMale(mentor.getAcceptMale()) .acceptPromotion(mentor.getAcceptPromotion()) + .meetingLink(mentor.getMeetingLink()) .build(); } diff --git a/src/test/java/com/wcc/platform/domain/platform/MentorTest.java b/src/test/java/com/wcc/platform/domain/platform/MentorTest.java index ba27c82b4..87eb6dba4 100644 --- a/src/test/java/com/wcc/platform/domain/platform/MentorTest.java +++ b/src/test/java/com/wcc/platform/domain/platform/MentorTest.java @@ -49,7 +49,7 @@ void testToString() { + "additional=additional, longTerm=LongTermMentorship[numMentee=1, hours=4], " + "adHoc=[MentorMonthAvailability[month=APRIL, hours=2]]], " + "feedbackSection=null, resources=null, calendlyLink=null, " - + "acceptMale=null, acceptPromotion=null)"; + + "acceptMale=null, acceptPromotion=null, meetingLink=null)"; assertEquals(expected, mentor.toString()); } diff --git a/src/test/java/com/wcc/platform/domain/platform/mentorship/MentorDtoTest.java b/src/test/java/com/wcc/platform/domain/platform/mentorship/MentorDtoTest.java index 2e2975fd4..9bc778ca4 100644 --- a/src/test/java/com/wcc/platform/domain/platform/mentorship/MentorDtoTest.java +++ b/src/test/java/com/wcc/platform/domain/platform/mentorship/MentorDtoTest.java @@ -100,7 +100,7 @@ void shouldReturnStringOfMentor() { + "skills=null, spokenLanguages=[English, Spanish], bio=bio info," + " menteeSection=null, feedbackSection=null, resources=null, " + "calendlyLink=null, acceptMale=null, acceptPromotion=null, " - + "isWomen=null)"; + + "isWomen=null, meetingLink=null)"; assertEquals(expected, mentor.toString()); } diff --git a/src/test/java/com/wcc/platform/service/MentorshipServiceTest.java b/src/test/java/com/wcc/platform/service/MentorshipServiceTest.java index b4d6f9394..cd330fc48 100644 --- a/src/test/java/com/wcc/platform/service/MentorshipServiceTest.java +++ b/src/test/java/com/wcc/platform/service/MentorshipServiceTest.java @@ -231,6 +231,7 @@ void shouldPreserveAllFieldsWhenMentorReRegistersWithExistingEmail() { when(mentor.getCalendlyLink()).thenReturn("https://calendly.com/myname"); when(mentor.getAcceptMale()).thenReturn(true); when(mentor.getAcceptPromotion()).thenReturn(false); + when(mentor.getMeetingLink()).thenReturn("https://google.com/meet/name"); Member existingMember = Member.builder().id(999L).email("existing@test.com").build(); when(memberRepository.findByEmail("existing@test.com")).thenReturn(Optional.of(existingMember)); @@ -253,6 +254,7 @@ void shouldPreserveAllFieldsWhenMentorReRegistersWithExistingEmail() { assertThat(captured.getAcceptPromotion()).isFalse(); assertThat(captured.getSkills()).isEqualTo(skills); assertThat(captured.getMenteeSection()).isEqualTo(menteeSection); + assertThat(captured.getMeetingLink()).isEqualTo("https://google.com/meet/name"); } @Test diff --git a/src/testInt/java/com/wcc/platform/service/mentorship/MentorshipServiceIntegrationTest.java b/src/testInt/java/com/wcc/platform/service/mentorship/MentorshipServiceIntegrationTest.java index 8a7831b70..ad6159707 100644 --- a/src/testInt/java/com/wcc/platform/service/mentorship/MentorshipServiceIntegrationTest.java +++ b/src/testInt/java/com/wcc/platform/service/mentorship/MentorshipServiceIntegrationTest.java @@ -225,6 +225,7 @@ void shouldReturnMentorsWithPronounsFromDatabase() { .calendlyLink(baseMentor.getCalendlyLink()) .acceptMale(baseMentor.getAcceptMale()) .acceptPromotion(baseMentor.getAcceptPromotion()) + .meetingLink(baseMentor.getMeetingLink()) .build(); memberRepository.deleteByEmail(mentor.getEmail()); From 0c54c2f7bd655e7058f65187cf30948af73eea51 Mon Sep 17 00:00:00 2001 From: Sowmiya Ravikumar Date: Wed, 17 Jun 2026 07:58:11 +0100 Subject: [PATCH 2/3] Adds Meeting Link to Email notification --- .../platform/repository/postgres/component/MentorMapper.java | 3 ++- .../wcc/platform/service/MentorshipNotificationService.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/wcc/platform/repository/postgres/component/MentorMapper.java b/src/main/java/com/wcc/platform/repository/postgres/component/MentorMapper.java index c11e668bf..12c141340 100644 --- a/src/main/java/com/wcc/platform/repository/postgres/component/MentorMapper.java +++ b/src/main/java/com/wcc/platform/repository/postgres/component/MentorMapper.java @@ -61,7 +61,8 @@ public Mentor mapRowToMentor(final ResultSet rs) throws SQLException { .bio(rs.getString(COLUMN_BIO)) .calendlyLink(rs.getString(COL_CALENDLY_LINK)) .acceptMale(rs.getBoolean(COL_ACCEPT_MALE)) - .acceptPromotion(rs.getBoolean(COL_ACCEPT_PROMO)); + .acceptPromotion(rs.getBoolean(COL_ACCEPT_PROMO)) + .meetingLink(rs.getString(COL_MEET_LINK)); return builder.build(); } diff --git a/src/main/java/com/wcc/platform/service/MentorshipNotificationService.java b/src/main/java/com/wcc/platform/service/MentorshipNotificationService.java index 0ac6eb529..0a8558195 100644 --- a/src/main/java/com/wcc/platform/service/MentorshipNotificationService.java +++ b/src/main/java/com/wcc/platform/service/MentorshipNotificationService.java @@ -136,7 +136,7 @@ public void sendPairingConfirmation( "mentor_email", mentor.getEmail(), "mentee_email", mentee.getEmail(), "mentor_calendly_link", Optional.ofNullable(mentor.getCalendlyLink()).orElse(""), - "meeting_link", "", + "meeting_link", Optional.ofNullable(mentor.getMeetingLink()).orElse(""), "month", month.getDisplayName(TextStyle.FULL, Locale.ENGLISH), "year", year), List.of(mentor.getEmail(), mentee.getEmail(), notificationConfig.getMentorshipEmail())); From e3acec061bb0c27df287554e0fd5f02cd1c90d2e Mon Sep 17 00:00:00 2001 From: Sowmiya Ravikumar Date: Wed, 17 Jun 2026 10:04:09 +0100 Subject: [PATCH 3/3] =?UTF-8?q?Fix=20issue=20breaking=20Mentor=20Creation?= =?UTF-8?q?=C3=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/wcc/platform/domain/platform/mentorship/Mentor.java | 6 ++++++ .../java/com/wcc/platform/service/MentorshipService.java | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/main/java/com/wcc/platform/domain/platform/mentorship/Mentor.java b/src/main/java/com/wcc/platform/domain/platform/mentorship/Mentor.java index b189dfd70..6a9d510b1 100644 --- a/src/main/java/com/wcc/platform/domain/platform/mentorship/Mentor.java +++ b/src/main/java/com/wcc/platform/domain/platform/mentorship/Mentor.java @@ -105,6 +105,12 @@ public Mentor( this.meetingLink = meetingLink; } + @Override + public void setMemberTypes(final List memberTypes) { + super.setMemberTypes(memberTypes); + this.memberTypes = memberTypes; + } + /** Checks for empty or null and returns a capitalized list of string. */ private static List normalizeLanguages(final List languages) { if (CollectionUtils.isEmpty(languages)) { diff --git a/src/main/java/com/wcc/platform/service/MentorshipService.java b/src/main/java/com/wcc/platform/service/MentorshipService.java index 5efcf7339..ef60de3bf 100644 --- a/src/main/java/com/wcc/platform/service/MentorshipService.java +++ b/src/main/java/com/wcc/platform/service/MentorshipService.java @@ -99,6 +99,7 @@ public Mentor create(final Mentor mentor) { .acceptMale(mentor.getAcceptMale()) .acceptPromotion(mentor.getAcceptPromotion()) .meetingLink(mentor.getMeetingLink()) + .memberTypes(mentor.getMemberTypes()) .build(); return mentorRepository.create(mentorWithExistingId); @@ -237,6 +238,7 @@ private Mentor enrichMentorWithProfilePicture(final Mentor mentor) { .slackDisplayName(mentor.getSlackDisplayName()) .country(mentor.getCountry()) .city(mentor.getCity()) + .memberTypes(mentor.getMemberTypes()) .companyName(mentor.getCompanyName()) .images(List.of(profilePicture.get())) .network(mentor.getNetwork())