From 46ec6547d47db1cbe917637f60ae884ecf7b9222 Mon Sep 17 00:00:00 2001 From: Piumal Rathnayake Date: Tue, 3 Aug 2021 07:47:12 +0530 Subject: [PATCH] Remove the mentees with multiple mentors before moving to 'ONGOING' state (#188) --- .../scholarx/repository/MenteeRepository.java | 16 ++++++++++++++++ .../scholarx/service/ProgramService.java | 9 +++++++++ 2 files changed, 25 insertions(+) diff --git a/src/main/java/org/sefglobal/scholarx/repository/MenteeRepository.java b/src/main/java/org/sefglobal/scholarx/repository/MenteeRepository.java index 5f5ded7b..3335377a 100644 --- a/src/main/java/org/sefglobal/scholarx/repository/MenteeRepository.java +++ b/src/main/java/org/sefglobal/scholarx/repository/MenteeRepository.java @@ -21,6 +21,8 @@ public interface MenteeRepository extends JpaRepository { List findAllByProgramIdAndProfileId(long programId, long profileId); + List findAllByProgramIdAndProfileIdAndState(long programId, long profileId, EnrolmentState state); + List findAllByProgramIdAndProfileIdAndStateIn(long programId, long profileId, List states); Optional findByProfileIdAndMentorId(long profileId, long mentorId); @@ -29,6 +31,8 @@ public interface MenteeRepository extends JpaRepository { List findAllByProgramId(long id); + List findAllByProgramIdAndState(long programId, EnrolmentState state); + @Modifying @Query( value = "DELETE " + @@ -52,4 +56,16 @@ public interface MenteeRepository extends JpaRepository { nativeQuery = true ) void removeAllByProgramIdAndProfileIdAndMentorIdNot(long programId, long profileId, long mentorId); + + @Modifying + @Query( + value = "UPDATE " + + "mentee " + + "SET state = 'REMOVED' " + + "WHERE profile_id = :profileId " + + "AND program_id = :programId ", + nativeQuery = true + ) + void removeAllByProgramIdAndProfileId(long programId, long profileId); + } diff --git a/src/main/java/org/sefglobal/scholarx/service/ProgramService.java b/src/main/java/org/sefglobal/scholarx/service/ProgramService.java index 1b2fdd9b..69c24f7b 100644 --- a/src/main/java/org/sefglobal/scholarx/service/ProgramService.java +++ b/src/main/java/org/sefglobal/scholarx/service/ProgramService.java @@ -152,6 +152,15 @@ public Program updateState(long id) throws ResourceNotFoundException { } ProgramState nextState = program.get().getState().next(); + if (ProgramState.ONGOING.equals(nextState)) { + List approvedMenteeList = menteeRepository.findAllByProgramIdAndState(id, EnrolmentState.APPROVED); + for (Mentee mentee : approvedMenteeList) { + long profileId = mentee.getProfile().getId(); + if (menteeRepository.findAllByProgramIdAndProfileIdAndState(id, profileId, EnrolmentState.APPROVED).size() != 1) { + menteeRepository.removeAllByProgramIdAndProfileId(id, profileId); + } + } + } program.get().setState(nextState); return programRepository.save(program.get()); }