99import com .itasocialacademy .oitassist .competition .exceptions .StageNotFoundException ;
1010import com .itasocialacademy .oitassist .core .enums .ErrorCode ;
1111import com .itasocialacademy .oitassist .core .exceptions .AuthorizationException ;
12+ import com .itasocialacademy .oitassist .participation .dao .dto .event .CompetitionValidatedDataEvent ;
1213import com .itasocialacademy .oitassist .participation .dao .dto .event .InvitationRequestEvent ;
1314import com .itasocialacademy .oitassist .participation .dao .dto .response .FailedInvitationResponse ;
1415import com .itasocialacademy .oitassist .participation .dao .dto .response .SucceededInvitationResponse ;
@@ -61,7 +62,7 @@ public class InvitationServiceImpl implements InvitationService {
6162 public CreateInvitationResponse sendEnrollmentRequest (CreateInvitationRequest request ) {
6263 Long competitionId = request .getCompetitionId ();
6364 Long stageId = request .getStageId ();
64- validateCompetitionAndStageInfo (competitionId , stageId );
65+ CompetitionValidatedDataEvent competitionData = validateCompetitionAndStageInfo (competitionId , stageId );
6566 List <Long > studentIds = validateNoDuplicatesOrThrow (request .getStudentIds ());
6667
6768 List <UserAuthDetails > foundUsers = userFacade .findByIds (studentIds );
@@ -105,7 +106,7 @@ public CreateInvitationResponse sendEnrollmentRequest(CreateInvitationRequest re
105106 .build ();
106107
107108 if (!succeeded .isEmpty ()) {
108- scheduleInvitationEmail (competitionId , stageId , succeeded );
109+ scheduleInvitationEmail (competitionData , succeeded );
109110 }
110111
111112 return response ;
@@ -174,7 +175,7 @@ private List<Long> validateNoDuplicatesOrThrow(List<Long> rawIds) {
174175 return rawIds ;
175176 }
176177
177- private void validateCompetitionAndStageInfo (Long competitionId , Long stageId ) {
178+ private CompetitionValidatedDataEvent validateCompetitionAndStageInfo (Long competitionId , Long stageId ) {
178179 CompetitionDetail competitionDetail = getCompetitionInfoOrThrow (competitionId );
179180 StageDetail stageDetail = getStageInfoOrThrow (stageId );
180181 if (competitionDetail .competitionStatus () != CompetitionStatus .ENROLLMENT ) {
@@ -183,6 +184,10 @@ private void validateCompetitionAndStageInfo(Long competitionId, Long stageId) {
183184 if (!stageDetail .competitionId ().equals (competitionId )) {
184185 throw new CompetitionHierarchyValidationException ("Specified stage does not belong to this competition" );
185186 }
187+ return CompetitionValidatedDataEvent .builder ()
188+ .competitionTitle (competitionDetail .title ())
189+ .stageTitle (stageDetail .title ())
190+ .build ();
186191 }
187192
188193 private Invitation getPendingInvitationOrThrow (Long applicationId ) {
@@ -237,12 +242,11 @@ private boolean isPendingInvitationConstraintViolation(DataIntegrityViolationExc
237242 }
238243
239244 private void scheduleInvitationEmail (
240- Long competitionId , Long stageId , List <SucceededInvitationResponse > succeeded ) {
241- String competitionTitle = getCompetitionInfoOrThrow (competitionId ).title ();
242- String stageTitle = getStageInfoOrThrow (stageId ).title ();
245+ CompetitionValidatedDataEvent competitionData ,
246+ List <SucceededInvitationResponse > succeeded ) {
243247 List <UserProfileDetails > users = getUserProfiles (succeeded );
244248 InvitationRequestEvent event = new InvitationRequestEvent (
245- competitionTitle , stageTitle , users );
249+ competitionData . competitionTitle (), competitionData . stageTitle () , users );
246250 sender .sendInvitationEmail (event );
247251 }
248252
0 commit comments