Skip to content

Commit 9dcc4b6

Browse files
Merge pull request #221 from DevKor-github/main
[Release] main to deploy
2 parents 610a4b7 + 45a405e commit 9dcc4b6

File tree

2 files changed

+22
-15
lines changed

2 files changed

+22
-15
lines changed

ontime-back/src/main/java/devkor/ontime_back/entity/NotificationSchedule.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import lombok.Builder;
66
import lombok.Getter;
77
import lombok.NoArgsConstructor;
8+
import org.hibernate.annotations.OnDelete;
9+
import org.hibernate.annotations.OnDeleteAction;
810

911
import java.time.LocalDateTime;
1012

@@ -23,6 +25,7 @@ public class NotificationSchedule {
2325

2426
@OneToOne(fetch = FetchType.LAZY)
2527
@JoinColumn(name = "schedule_id")
28+
@OnDelete(action = OnDeleteAction.CASCADE)
2629
private Schedule schedule;
2730

2831
@Builder

ontime-back/src/main/java/devkor/ontime_back/service/ScheduleService.java

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import devkor.ontime_back.response.GeneralException;
77
import lombok.RequiredArgsConstructor;
88
import lombok.extern.slf4j.Slf4j;
9+
import org.jetbrains.annotations.NotNull;
910
import org.springframework.stereotype.Service;
1011
import org.springframework.transaction.annotation.Transactional;
1112

@@ -81,26 +82,16 @@ public ScheduleDto showScheduleByScheduleId(Long userId, UUID scheduleId) {
8182
// schedule 삭제
8283
@Transactional
8384
public void deleteSchedule(UUID scheduleId, Long userId) {
84-
Schedule schedule = getScheduleWithAuthorization(scheduleId, userId);
85+
getScheduleWithAuthorization(scheduleId, userId);
8586
NotificationSchedule notification = notificationScheduleRepository.findByScheduleScheduleId(scheduleId)
8687
.orElseThrow(() -> new GeneralException(NOTIFICATION_NOT_FOUND));
87-
88-
cancelAndDeleteNotification(notification);
89-
notificationScheduleRepository.flush();
9088
scheduleRepository.deleteByScheduleId(scheduleId);
9189
}
9290

93-
private void cancelAndDeleteNotification(NotificationSchedule notification) {
94-
log.info("{}에 대한 알림 취소 및 삭제 됨", notification.getSchedule().getScheduleName());
95-
notification.disconnectSchedule();
96-
notificationService.cancelScheduledNotification(notification.getId());
97-
notificationScheduleRepository.delete(notification);
98-
log.info("알림 삭제 완료");
99-
}
100-
10191
// schedule 수정
10292
@Transactional
10393
public void modifySchedule(Long userId, UUID scheduleId, ScheduleModDto scheduleModDto) {
94+
User user = userRepository.findById(userId).orElseThrow(() -> new GeneralException(USER_NOT_FOUND));
10495
Schedule schedule = getScheduleWithAuthorization(scheduleId, userId);
10596

10697
Place place = placeRepository.findByPlaceName(scheduleModDto.getPlaceName())
@@ -110,10 +101,9 @@ public void modifySchedule(Long userId, UUID scheduleId, ScheduleModDto schedule
110101

111102
scheduleRepository.save(schedule);
112103

113-
114104
NotificationSchedule notification = notificationScheduleRepository.findByScheduleScheduleId(scheduleId)
115105
.orElseThrow(() -> new GeneralException(NOTIFICATION_NOT_FOUND));
116-
LocalDateTime newNotificationTime = scheduleModDto.getScheduleTime().minusMinutes(5);
106+
LocalDateTime newNotificationTime = getNotificationTime(schedule, user);
117107
updateAndRescheduleNotification(newNotificationTime, notification);
118108
}
119109

@@ -139,8 +129,10 @@ public void addSchedule(ScheduleAddDto scheduleAddDto, Long userId) {
139129
Schedule schedule = scheduleAddDto.toEntity(user, place);
140130
scheduleRepository.save(schedule);
141131

132+
LocalDateTime notificationTime = getNotificationTime(schedule, user);
133+
142134
NotificationSchedule notification = NotificationSchedule.builder()
143-
.notificationTime(schedule.getScheduleTime().minusMinutes(5)) // 차후 알림보내야하는 시각으로 수정 필요
135+
.notificationTime(notificationTime)
144136
.isSent(false)
145137
.schedule(schedule)
146138
.build();
@@ -149,6 +141,18 @@ public void addSchedule(ScheduleAddDto scheduleAddDto, Long userId) {
149141
notificationService.scheduleReminder(notification);
150142
}
151143

144+
private LocalDateTime getNotificationTime(Schedule schedule, User user) {
145+
Integer preparationTime = calculatePreparationTime(schedule, user);
146+
Integer moveTime = schedule.getMoveTime();
147+
Integer spareTime = schedule.getScheduleSpareTime() == null ? user.getSpareTime() : schedule.getScheduleSpareTime();
148+
return schedule.getScheduleTime().minusMinutes(preparationTime + moveTime + spareTime);
149+
}
150+
151+
private Integer calculatePreparationTime(Schedule schedule, User user) {
152+
List<PreparationDto> preparationDtos = getPreparations(user.getId(), schedule.getScheduleId());
153+
return preparationDtos.stream().map(PreparationDto::getPreparationTime).reduce(0, Integer::sum);
154+
}
155+
152156
// 지각 히스토리 반환
153157
public List<LatenessHistoryResponse> getLatenessHistory(Long userId) {
154158
return scheduleRepository.findLatenessHistoryByUserId(userId).stream()

0 commit comments

Comments
 (0)