1515import org .springframework .http .ResponseEntity ;
1616import org .springframework .security .core .annotation .AuthenticationPrincipal ;
1717import org .springframework .web .bind .annotation .*;
18- import store .lastdance .domain .calendar .Calendar ;
18+ import store .lastdance .exception .CustomException ;
19+ import store .lastdance .exception .ErrorCode ;
1920import store .lastdance .security .oauth .CustomOAuth2User ;
2021import store .lastdance .dto .calender .request .CreateCalendarRequestDTO ;
2122import store .lastdance .dto .calender .request .UpdateCalendarRequestDTO ;
@@ -66,21 +67,18 @@ public class CalendarController {
6667 @ PostMapping
6768 public ResponseEntity <ApiResponse <CalendarResponseDTO >> createCalendar (
6869 @ Valid @ RequestBody CreateCalendarRequestDTO request ,
70+ @ RequestParam (required = false ) UUID groupId ,
6971 @ AuthenticationPrincipal CustomOAuth2User user ) {
70- UUID userId = user .getUserId ();
7172
7273 try {
73- Calendar calendar = calendarService .createCalendar (request , userId );
74- CalendarResponseDTO response = CalendarResponseDTO .from (calendar );
74+ CalendarResponseDTO calendar = calendarService .createCalendar (request , user .getUserId (), groupId );
7575
7676 return ResponseEntity .status (HttpStatus .CREATED )
77- .body (ApiResponse .success (response , "일정이 성공적으로 생성되었습니다." ));
77+ .body (ApiResponse .success (calendar ));
7878
7979 } catch (Exception e ) {
80- log .error ("일정 생성 실패 - 사용자: {}, 에러: {}" ,
81- userId , e .getMessage ());
82- return ResponseEntity .status (HttpStatus .BAD_REQUEST )
83- .body (ApiResponse .error ("일정 생성에 실패했습니다: " + e .getMessage ()));
80+ log .error ("일정 생성 실패 - 사용자: {}, 에러: {}" , user .getUserId (), e .getMessage (), e );
81+ throw new CustomException (ErrorCode .CALENDAR_CREATE_FAILED );
8482 }
8583 }
8684
@@ -127,19 +125,14 @@ public ResponseEntity<ApiResponse<List<CalendarResponseDTO>>> getMyCalendars(
127125 dateTime = LocalDateTime .now ();
128126 }
129127
130- log .info ("일정 목록 조회 - 사용자: {}, 달력 종류: {}, 기준 날짜: {}" ,
131- userId , viewType , dateTime );
132-
133128 try {
134129 List <CalendarResponseDTO > responses = calendarService .getCalendarsByUser (
135130 userId , viewType , dateTime , type , category , groupId , pageable );
136131
137132 return ResponseEntity .ok (ApiResponse .success (responses ));
138133 } catch (Exception e ) {
139- log .error ("일정 조회 실패 - 사용자: {}, 에러: {}" ,
140- userId , e .getMessage ());
141- return ResponseEntity .status (HttpStatus .INTERNAL_SERVER_ERROR )
142- .body (ApiResponse .error ("일정 조회에 실패했습니다." ));
134+ log .error ("일정 조회 실패 - 사용자: {}, 에러: {}" , userId , e .getMessage ());
135+ throw new CustomException (ErrorCode .CALENDAR_FOUND_FAILED );
143136 }
144137 }
145138
@@ -180,25 +173,18 @@ public ResponseEntity<ApiResponse<CalendarResponseDTO>> getCalendar(
180173 @ PathVariable Long calendarId ,
181174 @ AuthenticationPrincipal CustomOAuth2User user ) {
182175 UUID userId = user .getUserId ();
183- log .info ("일정 상세 조회 - 사용자: {}, 일정 ID: {}" ,
184- userId , calendarId );
185176
186177 try {
187- Calendar calendar = calendarService .getCalendarById (calendarId , userId );
188- CalendarResponseDTO response = CalendarResponseDTO .from (calendar );
178+ CalendarResponseDTO calendar = calendarService .getCalendarById (calendarId , userId );
189179
190- return ResponseEntity .ok (ApiResponse .success (response ));
191-
192- } catch (IllegalArgumentException e ) {
193- log .warn ("일정 조회 실패 - 권한 없음: 사용자 {}, 일정 ID: {}" ,
194- userId , calendarId );
195- return ResponseEntity .status (HttpStatus .FORBIDDEN )
196- .body (ApiResponse .error ("해당 일정에 접근할 권한이 없습니다." ));
180+ return ResponseEntity .ok (ApiResponse .success (calendar ));
197181
182+ } catch (CustomException e ) {
183+ log .warn ("일정 조회 실패 - 권한 없음: 사용자 {}, 일정 ID: {}" , userId , calendarId );
184+ throw new CustomException (ErrorCode .CALENDAR_ACCESS_DENIED );
198185 } catch (Exception e ) {
199186 log .error ("일정 조회 실패 - 일정 ID: {}, 에러: {}" , calendarId , e .getMessage ());
200- return ResponseEntity .status (HttpStatus .NOT_FOUND )
201- .body (ApiResponse .error ("일정을 찾을 수 없습니다." ));
187+ throw new CustomException (ErrorCode .CALENDAR_FOUND_FAILED );
202188 }
203189 }
204190
@@ -242,25 +228,18 @@ public ResponseEntity<ApiResponse<CalendarResponseDTO>> updateCalendar(
242228
243229 UUID userId = user .getUserId ();
244230
245- log .info ("일정 수정 요청 - 사용자: {}, 일정 ID: {}" ,
246- userId , calendarId );
247-
248231 try {
249- Calendar calendar = calendarService .updateCalendar (calendarId , request , userId );
250- CalendarResponseDTO response = CalendarResponseDTO .from (calendar );
232+ CalendarResponseDTO calendar = calendarService .updateCalendar (calendarId , request , userId );
251233
252- return ResponseEntity .ok (ApiResponse .success (response , "일정이 성공적으로 수정되었습니다." ));
234+ return ResponseEntity .ok (ApiResponse .success (calendar ));
253235
254- } catch (IllegalArgumentException e ) {
255- log .warn ("일정 수정 실패 - 권한 없음: 사용자 {}, 일정 ID: {}" ,
256- userId , calendarId );
257- return ResponseEntity .status (HttpStatus .FORBIDDEN )
258- .body (ApiResponse .error ("해당 일정을 수정할 권한이 없습니다." ));
236+ } catch (CustomException e ) {
237+ log .warn ("일정 수정 실패 - 권한 없음: 사용자 {}, 일정 ID: {}" , userId , calendarId );
238+ throw new CustomException (ErrorCode .CALENDAR_ACCESS_DENIED );
259239
260240 } catch (Exception e ) {
261241 log .error ("일정 수정 실패 - 일정 ID: {}, 에러: {}" , calendarId , e .getMessage ());
262- return ResponseEntity .status (HttpStatus .BAD_REQUEST )
263- .body (ApiResponse .error ("일정 수정에 실패했습니다: " + e .getMessage ()));
242+ throw new CustomException (ErrorCode .CALENDAR_UPDATE_FAILED );
264243 }
265244 }
266245
@@ -299,32 +278,26 @@ public ResponseEntity<ApiResponse<CalendarResponseDTO>> updateCalendar(
299278 @ DeleteMapping ("/{calendarId}" )
300279 public ResponseEntity <ApiResponse <Void >> deleteCalendar (
301280 @ PathVariable Long calendarId ,
302- // @RequestParam(required = false, defaultValue = "all") String deleteType,
303281 @ RequestParam (required = false )
304282 @ DateTimeFormat (iso = DateTimeFormat .ISO .DATE_TIME )
305283 LocalDateTime instanceDate ,
306284 @ AuthenticationPrincipal CustomOAuth2User user ) {
307- System .out .println (instanceDate );
308- UUID userId = user .getUserId ();
309285
310- log .info ("일정 삭제 요청 - 사용자: {}, 일정 ID: {}" ,
311- userId , calendarId );
286+ UUID userId = user .getUserId ();
312287
313288 try {
314289 calendarService .deleteCalendar (calendarId , instanceDate , userId );
315290
316- return ResponseEntity .ok (ApiResponse .success (null , "일정이 성공적으로 삭제되었습니다." ));
291+ return ResponseEntity .ok (ApiResponse .success ());
317292
318- } catch (IllegalArgumentException e ) {
293+ } catch (CustomException e ) {
319294 log .warn ("일정 삭제 실패 - 권한 없음: 사용자 {}, 일정 ID: {}" ,
320295 userId , calendarId );
321- return ResponseEntity .status (HttpStatus .FORBIDDEN )
322- .body (ApiResponse .error ("해당 일정을 삭제할 권한이 없습니다." ));
296+ throw new CustomException (ErrorCode .CALENDAR_ACCESS_DENIED );
323297
324298 } catch (Exception e ) {
325299 log .error ("일정 삭제 실패 - 일정 ID: {}, 에러: {}" , calendarId , e .getMessage ());
326- return ResponseEntity .status (HttpStatus .BAD_REQUEST )
327- .body (ApiResponse .error ("일정 삭제에 실패했습니다: " + e .getMessage ()));
300+ throw new CustomException (ErrorCode .CALENDAR_DELETE_FAILED );
328301 }
329302 }
330303
@@ -376,14 +349,9 @@ public ResponseEntity<ApiResponse<List<CalendarResponseDTO>>> getGroupCalendars(
376349 dateTime = LocalDateTime .now ();
377350 }
378351
379- log .info ("그룹 일정 조회 - 사용자: {}, 그룹 ID: {}, 달력 종류: {}, 기준 날짜: {}" ,
380- userId , groupId , viewType , dateTime );
381-
382352 try {
383- // 그룹 멤버 권한 확인
384353 if (!calendarService .isGroupMember (groupId , userId )) {
385- return ResponseEntity .status (HttpStatus .FORBIDDEN )
386- .body (ApiResponse .error ("해당 그룹에 접근할 권한이 없습니다." ));
354+ throw new CustomException (ErrorCode .CALENDAR_ACCESS_DENIED );
387355 }
388356
389357 List <CalendarResponseDTO > responses = calendarService .getCalendarsByUser (
@@ -393,8 +361,7 @@ public ResponseEntity<ApiResponse<List<CalendarResponseDTO>>> getGroupCalendars(
393361
394362 } catch (Exception e ) {
395363 log .error ("그룹 일정 조회 실패 - 그룹 ID: {}, 에러: {}" , groupId , e .getMessage ());
396- return ResponseEntity .status (HttpStatus .INTERNAL_SERVER_ERROR )
397- .body (ApiResponse .error ("그룹 일정 조회에 실패했습니다." ));
364+ throw new CustomException (ErrorCode .CALENDAR_FOUND_FAILED );
398365 }
399366 }
400367}
0 commit comments