Skip to content

Commit 7850eba

Browse files
authored
Merge pull request #233 from CSE-Shaco/develop
feat(core-attendance): refine controller endpoints & auth-aware team …
2 parents 36aabf1 + 4c41932 commit 7850eba

File tree

1 file changed

+5
-12
lines changed

1 file changed

+5
-12
lines changed

src/main/java/inha/gdgoc/domain/core/attendance/controller/CoreAttendanceController.java

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,10 @@ public ResponseEntity<ApiResponse<List<Map<String, Object>>, Void>> membersOfMee
8686
/* ===== 특정 날짜 출석 일괄 저장 (멱등 스냅샷) ===== */
8787
// Body: { "userIds": ["1","2",...], "present": true } → presentUserIds만 보내는 구조로도 쉽게 변환 가능
8888
@PutMapping("/{date}/attendance")
89-
public ResponseEntity<ApiResponse<Map<String, Object>, Void>> saveAttendanceSnapshot(@AuthenticationPrincipal CustomUserDetails me, @PathVariable @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date, @RequestParam(required = false) TeamType team, // 관리자만 사용, 리드는 무시
90-
@RequestBody @Valid SetAttendanceRequest req) {
89+
public ResponseEntity<ApiResponse<Map<String, Object>, Void>> saveAttendanceSnapshot(@AuthenticationPrincipal CustomUserDetails me, @PathVariable @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date, @RequestBody @Valid SetAttendanceRequest req) {
9190
var userIds = req.safeUserIds();
9291

92+
// LEAD → 본인 팀 검증
9393
if (me.getRole() == UserRole.LEAD) {
9494
TeamType myTeam = requiredTeamFrom(me);
9595
var validation = service.filterUserIdsNotInTeam(myTeam, userIds);
@@ -100,16 +100,9 @@ public ResponseEntity<ApiResponse<Map<String, Object>, Void>> saveAttendanceSnap
100100
return okUpdated(updated, validation.invalidIds());
101101
}
102102

103-
// ORGANIZER / ADMIN
104-
TeamType effectiveTeam = (team != null) ? team : service.inferTeamFromUserIds(userIds)
105-
.orElseThrow(() -> new IllegalArgumentException("userIds로 팀을 추론할 수 없습니다."));
106-
107-
var validation = service.filterUserIdsNotInTeam(effectiveTeam, userIds);
108-
if (validation.validIds().isEmpty()) {
109-
return okUpdated(0L, validation.invalidIds());
110-
}
111-
long updated = service.setAttendance(date.toString(), validation.validIds(), req.presentValue());
112-
return okUpdated(updated, validation.invalidIds());
103+
// ORGANIZER / ADMIN → 팀 추론/검증 없이 바로 업서트
104+
long updated = service.setAttendance(date.toString(), userIds, req.presentValue());
105+
return okUpdated(updated, List.of());
113106
}
114107

115108
/* ===== 날짜 요약(JSON) ===== */

0 commit comments

Comments
 (0)