package com.unicorn.hgzero.meeting.biz.usecase.in.todo;

import com.unicorn.hgzero.meeting.biz.domain.Todo;

import java.time.LocalDate;
import java.util.List;

/**
 * Todo 조회 UseCase
 */
public interface GetTodoUseCase {

    /**
     * ID로 Todo 조회
     */
    Todo getTodo(String todoId);

    /**
     * 회의 ID로 Todo 목록 조회
     */
    List<Todo> getTodosByMeeting(String meetingId);

    /**
     * 회의록 ID로 Todo 목록 조회
     */
    List<Todo> getTodosByMinutes(String minutesId);

    /**
     * 담당자 ID로 Todo 목록 조회
     */
    List<Todo> getTodosByAssignee(String assigneeId);

    /**
     * 담당자 ID와 상태로 Todo 목록 조회
     */
    List<Todo> getTodosByAssigneeAndStatus(String assigneeId, String status);

    /**
     * 담당자 ID와 마감일 범위로 Todo 목록 조회
     */
    List<Todo> getTodosByAssigneeAndDueDateRange(String assigneeId, LocalDate startDate, LocalDate endDate);
}
