Skip to content

Commit d65c0a6

Browse files
[EA3-134] refactor : 팀장이 기간 생성을 하면 팀원에게 알림이 가도록 추가
1 parent 6aac641 commit d65c0a6

File tree

1 file changed

+29
-3
lines changed

1 file changed

+29
-3
lines changed

src/main/java/grep/neogulcoder/domain/timevote/service/TimeVotePeriodService.java

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
package 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;
513
import grep.neogulcoder.domain.study.Study;
614
import grep.neogulcoder.domain.study.StudyMember;
715
import grep.neogulcoder.domain.study.enums.StudyMemberRole;
@@ -14,9 +22,12 @@
1422
import grep.neogulcoder.domain.timevote.repository.TimeVoteRepository;
1523
import grep.neogulcoder.domain.timevote.repository.TimeVoteStatRepository;
1624
import grep.neogulcoder.global.exception.business.BusinessException;
25+
import grep.neogulcoder.global.provider.finder.MessageFinder;
1726
import java.time.LocalDateTime;
1827
import java.time.LocalTime;
1928
import java.time.temporal.ChronoUnit;
29+
import java.util.ArrayList;
30+
import java.util.List;
2031
import lombok.RequiredArgsConstructor;
2132
import org.springframework.stereotype.Service;
2233
import 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

Comments
 (0)