diff --git a/src/main/java/com/haemil/backend/global/config/ResponseStatus.java b/src/main/java/com/haemil/backend/global/config/ResponseStatus.java index 7a30d45..7a5b1c2 100644 --- a/src/main/java/com/haemil/backend/global/config/ResponseStatus.java +++ b/src/main/java/com/haemil/backend/global/config/ResponseStatus.java @@ -16,6 +16,7 @@ public enum ResponseStatus { CONFLICT(409,HttpStatus.Series.CLIENT_ERROR, "Conflict"), PAYLOAD_TOO_LARGE(413,HttpStatus.Series.CLIENT_ERROR, "Payload Too Large"), URI_TOO_LONG(414,HttpStatus.Series.CLIENT_ERROR, "URI Too Long"), + INVALID_DATA_FORMAT(415, HttpStatus.Series.CLIENT_ERROR, "Invalid Data Format"), MISSING_REQUIRED_FIELD(416, HttpStatus.Series.CLIENT_ERROR, "Required field(s) are missing"), // for mypage status diff --git a/src/main/java/com/haemil/backend/schedule/controller/ScheduleController.java b/src/main/java/com/haemil/backend/schedule/controller/ScheduleController.java index 60b225d..82f4d30 100644 --- a/src/main/java/com/haemil/backend/schedule/controller/ScheduleController.java +++ b/src/main/java/com/haemil/backend/schedule/controller/ScheduleController.java @@ -112,16 +112,17 @@ public ResponseEntity deleteSchedule(@PathVariable Long scheduleId @PatchMapping("/schedule/{scheduleId}") public ResponseEntity updateSchedule(@PathVariable Long scheduleId, @RequestBody ScheduleRequestDto requestDto) { try { - Schedule updatedSchedule = scheduleService.updateSchedule(scheduleId, requestDto); - + Schedule updateSchedule = scheduleService.updateSchedule(scheduleId, requestDto); log.debug("requestDto.getPlace() = {}",requestDto.getPlace()); + // 맵 API 호출하여 맵 URL 얻어오는 부분 String mapUrl = mapService.getMapUrl(requestDto.getPlace()); - System.out.println(mapUrl); + // 응답에 맵 URL을 포함하여 리턴 - updatedSchedule.setMapUrl(mapUrl); + updateSchedule.setMapUrl(mapUrl); + System.out.println(mapUrl); - ScheduleResponseDto responseDto = new ScheduleResponseDto(updatedSchedule); + ScheduleResponseDto responseDto = new ScheduleResponseDto(updateSchedule); BaseResponse response = new BaseResponse<>(responseDto); return response.convert(); diff --git a/src/main/java/com/haemil/backend/schedule/service/ScheduleService.java b/src/main/java/com/haemil/backend/schedule/service/ScheduleService.java index 5526339..1e4d3d2 100644 --- a/src/main/java/com/haemil/backend/schedule/service/ScheduleService.java +++ b/src/main/java/com/haemil/backend/schedule/service/ScheduleService.java @@ -80,8 +80,6 @@ public ScheduleResponseDto createSchedule(ScheduleRequestDto scheduleRequestDto) schedule.setRepeatType(repeatType); schedule.setMedicine(medicine); - //log.debug("Schedule fields set...."); - // missing field 존재 여부 검사 if (localDate == null || dayOfWeek == null || time == null || content == null || done == null || repeatType == null) { throw new MissingRequiredFieldException("Required field(s) are missing"); @@ -104,10 +102,8 @@ public ScheduleResponseDto createSchedule(ScheduleRequestDto scheduleRequestDto) Schedule createdSchedule = scheduleRepository.save(schedule); return new ScheduleResponseDto(createdSchedule); } catch (MissingRequiredFieldException e) { - //log.error("Missing required fields: ", e); throw new BaseException(ResponseStatus.MISSING_REQUIRED_FIELD); } catch (BaseException e) { - //log.error("Same field is already exists.: ", e); throw new BaseException(ResponseStatus.CONFLICT); } @@ -117,15 +113,12 @@ public ScheduleResponseDto createSchedule(ScheduleRequestDto scheduleRequestDto) //주어진 날짜에 해당하는 일정 조회 public List getSchedule(LocalDate localDate) throws BaseException { try { - //log.debug("1"); List schedules = scheduleRepository.findByLocalDate(localDate); - //log.debug("2"); if (schedules.isEmpty()) { throw new BaseException(ResponseStatus.NOT_FOUND); } return schedules; } catch (BaseException e) { - //log.error("Error occurred while fetching schedules: " + e.getMessage()); throw new BaseException(ResponseStatus.NOT_FOUND); // 현재의 예외를 다시 던져줍니다. } @@ -145,7 +138,7 @@ public List getTodaySchedules() throws BaseException { return todaySchedules; } catch (BaseException e) { - //log.error("Error occurred while fetching schedules: " + e.getMessage()); + throw new BaseException(ResponseStatus.NOT_FOUND); // 현재의 예외를 다시 던져줍니다. } } @@ -153,7 +146,7 @@ public List getTodaySchedules() throws BaseException { >>>>>>> 3911116 ([FEAT] add schedule api) //일정 삭제 @Transactional - public Long deleteSchedule(Long scheduleId) { + public Long deleteSchedule(Long scheduleId) throws BaseException { try { Optional optionalSchedule = scheduleRepository.findById(scheduleId); @@ -163,7 +156,7 @@ public Long deleteSchedule(Long scheduleId) { scheduleRepository.deleteById(scheduleId); return scheduleId; } catch (BaseException e) { - //log.error("ID does not exist."); + throw new BaseException(ResponseStatus.NOT_FOUND); } } @@ -182,10 +175,6 @@ public Schedule updateSchedule(Long id, ScheduleRequestDto requestDto) { try { Schedule schedule = scheduleRepository.findById(id).orElse(null); - if (schedule == null) { - throw new BaseException(ResponseStatus.NOT_FOUND); // 해당 아이디가 존재하지 않는 경우 - } - // Validate the updated schedule's fields LocalDate newLocalDate = requestDto.getLocalDate(); DayOfWeek newDayOfWeek = requestDto.getDayOfWeek(); String newContent = requestDto.getContent(); @@ -198,7 +187,21 @@ public Schedule updateSchedule(Long id, ScheduleRequestDto requestDto) { if (newLocalDate == null || newDayOfWeek == null || newTime == null || newContent == null || newDone == null || newRepeatType == null) { throw new MissingRequiredFieldException("Required field(s) are missing in updated schedule"); } - + // 여기서 중복 일정 검사를 수행하고 이미 존재하는 경우 예외를 던짐 + List existingSchedules = scheduleRepository.findByLocalDate(newLocalDate); + for (Schedule existingSchedule : existingSchedules) { + System.out.println("existingSchedule: " + existingSchedule); + if ( + existingSchedule.getDayOfWeek() == newDayOfWeek && + existingSchedule.getTime().equals(newTime) && + existingSchedule.getContent().equals(newContent) && + existingSchedule.getDone().equals(newDone) && + existingSchedule.getRepeatType().equals(newRepeatType) && + existingSchedule.getPlace().equals(newPlace) && + existingSchedule.getMedicine().equals(newMedicine)) { + throw new BaseException(ResponseStatus.CONFLICT); + } + } schedule.setLocalDate(newLocalDate); schedule.setDayOfWeek(newDayOfWeek); schedule.setContent(newContent); @@ -208,14 +211,14 @@ public Schedule updateSchedule(Long id, ScheduleRequestDto requestDto) { schedule.setRepeatType(newRepeatType); schedule.setMedicine(newMedicine); + log.debug("newContent = {}", newContent); + return scheduleRepository.save(schedule); } catch (MissingRequiredFieldException e) { - //log.error("Missing required fields: ", e); throw new BaseException(ResponseStatus.MISSING_REQUIRED_FIELD); } catch (BaseException e) { - - throw new BaseException(ResponseStatus.NOT_FOUND); + throw new BaseException(ResponseStatus.CONFLICT); } } }