Skip to content

Commit 82ef5ce

Browse files
Merge pull request #217 from DevKor-github/refactor/schedule
[Refactor/Mod] schedule 수정 메서드 리팩토링 및 영속성 컨텍스트 충돌 문제 해결
2 parents e2695c6 + 4f50456 commit 82ef5ce

File tree

3 files changed

+33
-44
lines changed

3 files changed

+33
-44
lines changed
Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package devkor.ontime_back.dto;
22

3+
import devkor.ontime_back.entity.Place;
4+
import devkor.ontime_back.entity.Schedule;
5+
import devkor.ontime_back.entity.User;
36
import lombok.AllArgsConstructor;
47
import lombok.Builder;
58
import lombok.Getter;
@@ -14,22 +17,29 @@
1417
@AllArgsConstructor
1518
public class ScheduleAddDto {
1619
private UUID scheduleId;
17-
1820
private UUID placeId;
19-
2021
private String placeName;
21-
2222
private String scheduleName;
23-
2423
private Integer moveTime; // 이동시간
25-
2624
private LocalDateTime scheduleTime; // 약속시각
27-
2825
private Boolean isChange; // 변경여부
29-
3026
private Boolean isStarted; // 버튼누름여부
31-
3227
private Integer scheduleSpareTime; // 스케줄 별 여유시간
33-
3428
private String scheduleNote; // 스케줄 별 주의사항
29+
30+
public Schedule toEntity(User user, Place place) {
31+
return Schedule.builder()
32+
.user(user)
33+
.scheduleId(this.scheduleId)
34+
.place(place)
35+
.scheduleName(this.scheduleName)
36+
.moveTime(this.moveTime)
37+
.scheduleTime(this.scheduleTime)
38+
.isChange(false)
39+
.isStarted(false)
40+
.scheduleSpareTime(this.scheduleSpareTime)
41+
.latenessTime(-1)
42+
.scheduleNote(this.scheduleNote)
43+
.build();
44+
}
3545
}

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package devkor.ontime_back.entity;
22

3+
import devkor.ontime_back.dto.ScheduleModDto;
34
import jakarta.persistence.*;
45
import lombok.*;
56
import org.hibernate.annotations.OnDelete;
@@ -54,14 +55,14 @@ public class Schedule {
5455
@Column(columnDefinition = "TEXT") // 명시적으로 TEXT 타입으로 정의
5556
private String scheduleNote; // 스케줄 별 주의사항
5657

57-
public void updateSchedule(Place place, String scheduleName, Integer moveTime, LocalDateTime scheduleTime, Integer scheduleSpareTime, Integer latenessTime, String scheduleNote) {
58+
public void updateSchedule(Place place, ScheduleModDto scheduleModDto) {
5859
this.place = place;
59-
this.scheduleName = scheduleName;
60-
this.moveTime = moveTime;
61-
this.scheduleTime = scheduleTime;
62-
this.scheduleSpareTime = scheduleSpareTime;
63-
this.latenessTime = latenessTime;
64-
this.scheduleNote = scheduleNote;
60+
this.scheduleName = scheduleModDto.getScheduleName();
61+
this.moveTime = scheduleModDto.getMoveTime();
62+
this.scheduleTime = scheduleModDto.getScheduleTime();
63+
this.scheduleSpareTime = scheduleModDto.getScheduleSpareTime();
64+
this.latenessTime = scheduleModDto.getLatenessTime();
65+
this.scheduleNote = scheduleModDto.getScheduleNote();
6566
}
6667

6768
public void startSchedule() {

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

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package devkor.ontime_back.service;
22

33
import devkor.ontime_back.dto.*;
4-
import devkor.ontime_back.entity.NotificationSchedule;
5-
import devkor.ontime_back.entity.Place;
6-
import devkor.ontime_back.entity.Schedule;
7-
import devkor.ontime_back.entity.User;
4+
import devkor.ontime_back.entity.*;
85
import devkor.ontime_back.repository.*;
96
import devkor.ontime_back.response.GeneralException;
107
import lombok.RequiredArgsConstructor;
@@ -88,13 +85,12 @@ public void deleteSchedule(UUID scheduleId, Long userId) {
8885
NotificationSchedule notification = notificationScheduleRepository.findByScheduleScheduleId(scheduleId)
8986
.orElseThrow(() -> new GeneralException(NOTIFICATION_NOT_FOUND));
9087

91-
cancleAndDeleteNotification(notification);
88+
cancelAndDeleteNotification(notification);
9289
notificationScheduleRepository.flush();
93-
preparationScheduleRepository.deleteBySchedule(schedule);
9490
scheduleRepository.deleteByScheduleId(scheduleId);
9591
}
9692

97-
private void cancleAndDeleteNotification(NotificationSchedule notification) {
93+
private void cancelAndDeleteNotification(NotificationSchedule notification) {
9894
log.info("{}에 대한 알림 취소 및 삭제 됨", notification.getSchedule().getScheduleName());
9995
notification.disconnectSchedule();
10096
notificationService.cancelScheduledNotification(notification.getId());
@@ -110,14 +106,8 @@ public void modifySchedule(Long userId, UUID scheduleId, ScheduleModDto schedule
110106
Place place = placeRepository.findByPlaceName(scheduleModDto.getPlaceName())
111107
.orElseGet(() -> placeRepository.save(new Place(scheduleModDto.getPlaceId(), scheduleModDto.getPlaceName())));
112108

113-
schedule.updateSchedule(
114-
place,
115-
scheduleModDto.getScheduleName(),
116-
scheduleModDto.getMoveTime(),
117-
scheduleModDto.getScheduleTime(),
118-
scheduleModDto.getScheduleSpareTime(),
119-
scheduleModDto.getLatenessTime(),
120-
scheduleModDto.getScheduleNote());
109+
schedule.updateSchedule(place, scheduleModDto);
110+
121111
scheduleRepository.save(schedule);
122112

123113

@@ -146,19 +136,7 @@ public void addSchedule(ScheduleAddDto scheduleAddDto, Long userId) {
146136
Place place = placeRepository.findByPlaceName(scheduleAddDto.getPlaceName())
147137
.orElseGet(() -> placeRepository.save(new Place(scheduleAddDto.getPlaceId(), scheduleAddDto.getPlaceName())));
148138

149-
Schedule schedule = Schedule.builder()
150-
.scheduleId(scheduleAddDto.getScheduleId())
151-
.user(user)
152-
.place(place)
153-
.scheduleName(scheduleAddDto.getScheduleName())
154-
.moveTime(scheduleAddDto.getMoveTime())
155-
.scheduleTime(scheduleAddDto.getScheduleTime())
156-
.scheduleSpareTime(scheduleAddDto.getScheduleSpareTime())
157-
.scheduleNote(scheduleAddDto.getScheduleNote())
158-
.isChange(false)
159-
.isStarted(false)
160-
.latenessTime(-1)
161-
.build();
139+
Schedule schedule = scheduleAddDto.toEntity(user, place);
162140
scheduleRepository.save(schedule);
163141

164142
NotificationSchedule notification = NotificationSchedule.builder()

0 commit comments

Comments
 (0)