11package grep .neogulcoder .domain .timevote .service ;
22
3- import static grep .neogulcoder .domain .timevote .exception .code .TimeVoteErrorCode .*;
4-
3+ import static grep .neogulcoder .domain .timevote .exception .code .TimeVoteErrorCode .FORBIDDEN_TIME_VOTE_CREATE ;
4+ import static grep .neogulcoder .domain .timevote .exception .code .TimeVoteErrorCode .INVALID_TIME_VOTE_PERIOD ;
5+ import static grep .neogulcoder .domain .timevote .exception .code .TimeVoteErrorCode .STUDY_MEMBER_NOT_FOUND ;
6+ import static grep .neogulcoder .domain .timevote .exception .code .TimeVoteErrorCode .STUDY_NOT_FOUND ;
7+ import static grep .neogulcoder .domain .timevote .exception .code .TimeVoteErrorCode .TIME_VOTE_INVALID_DATE_RANGE ;
8+ import static grep .neogulcoder .domain .timevote .exception .code .TimeVoteErrorCode .TIME_VOTE_PERIOD_START_DATE_IN_PAST ;
9+
10+ import grep .neogulcoder .domain .alram .service .AlarmService ;
11+ import grep .neogulcoder .domain .alram .type .AlarmType ;
12+ import grep .neogulcoder .domain .alram .type .DomainType ;
513import grep .neogulcoder .domain .study .Study ;
614import grep .neogulcoder .domain .study .StudyMember ;
715import grep .neogulcoder .domain .study .enums .StudyMemberRole ;
1422import grep .neogulcoder .domain .timevote .repository .TimeVoteRepository ;
1523import grep .neogulcoder .domain .timevote .repository .TimeVoteStatRepository ;
1624import grep .neogulcoder .global .exception .business .BusinessException ;
25+ import grep .neogulcoder .global .provider .finder .MessageFinder ;
1726import java .time .LocalDateTime ;
1827import java .time .LocalTime ;
1928import java .time .temporal .ChronoUnit ;
29+ import java .util .ArrayList ;
30+ import java .util .List ;
2031import lombok .RequiredArgsConstructor ;
2132import org .springframework .stereotype .Service ;
2233import org .springframework .transaction .annotation .Transactional ;
@@ -31,6 +42,8 @@ public class TimeVotePeriodService {
3142 private final TimeVoteStatRepository timeVoteStatRepository ;
3243 private final StudyRepository studyRepository ;
3344 private final StudyMemberRepository studyMemberRepository ;
45+ private final AlarmService alarmService ;
46+ private final MessageFinder messageFinder ;
3447
3548 public TimeVotePeriodResponse createTimeVotePeriodAndReturn (TimeVotePeriodCreateRequest request , Long studyId , Long userId ) {
3649 StudyMember studyMember = getValidStudyMember (studyId , userId );
@@ -48,7 +61,20 @@ public TimeVotePeriodResponse createTimeVotePeriodAndReturn(TimeVotePeriodCreate
4861
4962 TimeVotePeriod savedPeriod = timeVotePeriodRepository .save (request .toEntity (studyId , adjustedEndDate ));
5063
51- return TimeVotePeriodResponse .from (savedPeriod );
64+ getValidStudy (studyId );
65+ messageFinder .findMessage (AlarmType .TIME_VOTE_REQUEST , DomainType .TIME_VOTE , studyId );
66+
67+ List <StudyMember > members = studyMemberRepository .findAllByStudyIdAndActivatedTrue (studyId );
68+ List <Long > notifiedUserIds = new ArrayList <>();
69+ for (StudyMember member : members ) {
70+ if (!member .getUserId ().equals (userId )) {
71+ alarmService .saveAlarm (member .getUserId (), AlarmType .TIME_VOTE_REQUEST ,
72+ DomainType .TIME_VOTE , studyId );
73+ notifiedUserIds .add (member .getId ());
74+ }
75+ }
76+
77+ return TimeVotePeriodResponse .from (savedPeriod , notifiedUserIds );
5278 }
5379
5480 public void deleteAllTimeVoteDate (Long studyId ) {
0 commit comments