Skip to content

Commit

Permalink
feat: 부원 출결 기록 반환 시 출결 기록의 존재 여부를 기준으로 변경
Browse files Browse the repository at this point in the history
  • Loading branch information
Youthhing committed Sep 13, 2024
1 parent 1fbda5e commit d95c751
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,29 +30,30 @@ public record MemberAttendResponse(
@Schema(description = "마감된 출석에 대한 출결 결과", nullable = true)
AttendanceResult attendanceResult
) {
public static MemberAttendResponse closedAttendanceResponse(Session session, AttendanceRecord attendanceRecord) {
public static MemberAttendResponse unrecordedAttendance(Session session, Attendance attendance, Long memberId) {
return new MemberAttendResponse(
session.getId(),
attendanceRecord.getAttendance().getId(),
attendanceRecord.getMemberId(),
attendance.getId(),
memberId,
session.getTitle(),
session.getSessionDateTime(),
AttendanceOpenStatus.CLOSED,
attendanceRecord.getAttendanceType(),
attendanceRecord.getAttendanceResult()
AttendanceUtil.getAttendanceOpenStatus(session.getSessionDateTime(), attendance, LocalDateTime.now()),
null,
null
);
}

public static MemberAttendResponse openedAttendanceResponse(Attendance attendance, Session session, Long memberId) {
public static MemberAttendResponse recordedAttendance(Session session, Attendance attendance,
AttendanceRecord attendanceRecord) {
return new MemberAttendResponse(
session.getId(),
attendance.getId(),
memberId,
attendanceRecord.getAttendanceId(),
attendanceRecord.getMemberId(),
session.getTitle(),
session.getSessionDateTime(),
AttendanceUtil.getAttendanceOpenStatus(session.getSessionDateTime(), attendance, LocalDateTime.now()),
null,
null
attendanceRecord.getAttendanceType(),
attendanceRecord.getAttendanceResult()
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -96,28 +96,27 @@ public MemberAttendanceRecordsResponse findAllRecordsBy(final Long generationId,
List<Long> sessionIds = sessions.stream()
.map(Session::getId)
.toList();
// 세션에 해당하는 모든 출결을 찾아
LocalDateTime currentTime = LocalDateTime.now();

Map<Boolean, List<Attendance>> isClosedAttendance = attendanceRepository.findAllBySessionIdsInQuery(sessionIds)
.stream()
.collect(Collectors.partitioningBy(attendance ->
getAttendanceOpenStatus(sessionMap.get(attendance.getSessionId()).getSessionDateTime(),
attendance, currentTime) == AttendanceOpenStatus.CLOSED));
List<Attendance> attendances = attendanceRepository.findAllBySessionIdsInQuery(sessionIds);

List<Long> closedAttendanceIds = isClosedAttendance.get(true).stream()
List<Long> attendanceIds = attendances.stream()
.map(Attendance::getId)
.toList();

List<MemberAttendResponse> responses = attendanceRecordRepository.findAllByAttendanceIdsInQueryAndMemberId(
closedAttendanceIds, memberId).stream()
.map(ar -> MemberAttendResponse.closedAttendanceResponse(
sessionMap.get(ar.getAttendance().getSessionId()), ar))
Map<Long, AttendanceRecord> attendanceRecordMap = attendanceRecordRepository.findAllByAttendanceIdsInQueryAndMemberId(
attendanceIds, memberId).stream()
.collect(Collectors.toUnmodifiableMap(AttendanceRecord::getAttendanceId, Function.identity()));

Map<Boolean, List<Attendance>> recordedAttendance = attendances.stream()
.collect(Collectors.partitioningBy(at -> attendanceRecordMap.containsKey(at.getId())));

List<MemberAttendResponse> responses = recordedAttendance.get(true).stream()
.map(at -> MemberAttendResponse.recordedAttendance(sessionMap.get(at.getSessionId()), at,
attendanceRecordMap.get(at.getId())))
.collect(Collectors.toList());

responses.addAll(isClosedAttendance.get(false).stream()
.map(attendance -> MemberAttendResponse.openedAttendanceResponse(attendance,
sessionMap.get(attendance.getSessionId()), memberId))
responses.addAll(recordedAttendance.get(false).stream()
.map(at -> MemberAttendResponse.unrecordedAttendance(sessionMap.get(at.getSessionId()), at, memberId))
.toList());

return MemberAttendanceRecordsResponse.of(generationId, responses);
Expand Down

0 comments on commit d95c751

Please sign in to comment.