Skip to content

Commit

Permalink
feat: 비대면에서 대면으로 전환하는 기능 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
Youthhing committed Aug 8, 2024
1 parent 8803713 commit 8c273b4
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -78,4 +78,8 @@ public static AttendanceRecord offlineRecord(Attendance attendance, Long memberI
attendance
);
}

public void updateAttendanceType(AttendanceType attendanceType) {
this.attendanceType = attendanceType;
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package org.cotato.csquiz.domain.attendance.repository;

import java.util.List;
import java.util.Optional;
import org.cotato.csquiz.domain.attendance.entity.Attendance;
import org.cotato.csquiz.domain.attendance.entity.AttendanceRecord;
import org.cotato.csquiz.domain.attendance.enums.AttendanceStatus;
import org.cotato.csquiz.domain.attendance.enums.AttendanceType;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
Expand All @@ -13,4 +15,6 @@ public interface AttendanceRecordRepository extends JpaRepository<AttendanceReco
List<AttendanceRecord> findAllByAttendanceIdsInQuery(@Param("attendances") List<Attendance> attendances);

boolean existsByAttendanceIdAndMemberIdAndAttendanceType(Long attendanceId, Long memberId, AttendanceType attendanceType);

Optional<AttendanceRecord> findByIdAndAttendanceStatus(Long id, AttendanceStatus attendanceStatus);
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,14 @@ public AttendResponse request(AttendanceParams params, Long memberId, Attendance
Double accuracy = attendance.getLocation().calculateAccuracy(request.getLocation());
validateAccuracy(accuracy);

attendanceRecordRepository.save(
AttendanceRecord.offlineRecord(attendance, memberId, accuracy, attendanceStatus));
attendanceRecordRepository.findByIdAndAttendanceStatus(memberId, attendanceStatus).ifPresentOrElse(
record -> {
record.updateAttendanceType(request.attendanceType());
attendanceRecordRepository.save(record);
},
() -> attendanceRecordRepository.save(
AttendanceRecord.offlineRecord(attendance, memberId, accuracy, attendanceStatus))
);

return AttendResponse.from(attendanceStatus);
}
Expand Down

0 comments on commit 8c273b4

Please sign in to comment.