diff --git a/src/main/java/com/Timo/Timo/domain/timer/repository/TimerRecordRepository.java b/src/main/java/com/Timo/Timo/domain/timer/repository/TimerRecordRepository.java index f2959c24..dcb13d4f 100644 --- a/src/main/java/com/Timo/Timo/domain/timer/repository/TimerRecordRepository.java +++ b/src/main/java/com/Timo/Timo/domain/timer/repository/TimerRecordRepository.java @@ -3,6 +3,7 @@ import com.Timo.Timo.domain.timer.entity.TimerRecord; import com.Timo.Timo.domain.timer.enums.TimerStatus; import jakarta.persistence.LockModeType; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; import java.util.Optional; @@ -18,6 +19,9 @@ public interface TimerRecordRepository extends JpaRepository boolean existsByTodo_IdAndStatusIn(Long todoId, List statuses); + boolean existsByTodo_IdAndTargetDateAndStatusIn( + Long todoId, LocalDate targetDate, List statuses); + @Modifying(clearAutomatically = true) @Query("delete from TimerRecord r where r.todo.id = :todoId") void deleteByTodoId(@Param("todoId") Long todoId); diff --git a/src/main/java/com/Timo/Timo/domain/timer/service/TimerService.java b/src/main/java/com/Timo/Timo/domain/timer/service/TimerService.java index 8eea3fb4..778984a6 100644 --- a/src/main/java/com/Timo/Timo/domain/timer/service/TimerService.java +++ b/src/main/java/com/Timo/Timo/domain/timer/service/TimerService.java @@ -184,6 +184,10 @@ public boolean hasActiveTimer(Long todoId) { return timerRecordRepository.existsByTodo_IdAndStatusIn(todoId, ACTIVE_STATUS); } + public boolean hasActiveTimerOn(Long todoId, LocalDate date) { + return timerRecordRepository.existsByTodo_IdAndTargetDateAndStatusIn(todoId, date, ACTIVE_STATUS); + } + @Transactional public void deleteTimersByTodo(Long todoId) { timerSessionRepository.deleteByTodoId(todoId); diff --git a/src/main/java/com/Timo/Timo/domain/todo/service/TodoService.java b/src/main/java/com/Timo/Timo/domain/todo/service/TodoService.java index c9cad042..f3446eed 100644 --- a/src/main/java/com/Timo/Timo/domain/todo/service/TodoService.java +++ b/src/main/java/com/Timo/Timo/domain/todo/service/TodoService.java @@ -137,7 +137,7 @@ public TodoStatusChangeResponse changeCompletion(Long userId, Long todoId, TodoS throw new CustomException(TodoErrorCode.TODO_NOT_FOUND); } - if (timerService.hasActiveTimer(todoId)) { + if (timerService.hasActiveTimerOn(todoId, date)) { throw new CustomException(TodoErrorCode.TIMER_RUNNING); }