using Core.Entities;
namespace WebApp.Services;
public interface ITeamMeetingHistoryService
{
///
/// Gets all meeting histories within an optional date range.
///
/// Optional start date filter
/// Optional end date filter
Task> GetMeetingHistoriesAsync(DateTime? startDate = null, DateTime? endDate = null);
///
/// Gets a specific meeting history by ID with teams and students included.
///
Task GetMeetingHistoryAsync(int id);
///
/// Creates a new meeting history record.
///
Task CreateMeetingHistoryAsync(TeamMeetingHistory meetingHistory);
///
/// Updates an existing meeting history record.
///
Task UpdateMeetingHistoryAsync(TeamMeetingHistory meetingHistory);
///
/// Deletes a meeting history record.
///
Task DeleteMeetingHistoryAsync(int id);
///
/// Gets which teams met on a specific date.
///
Task> GetTeamsForDateAsync(DateTime date);
///
/// Gets which students were present on a specific date.
///
Task> GetStudentsForDateAsync(DateTime date);
///
/// Gets the meeting note for a specific meeting date by looking it up by title.
///
/// The date of the meeting
/// The note if found, null otherwise
Task GetMeetingNoteAsync(DateTime meetingDate);
///
/// Gets all meeting histories for a specific team, ordered by date descending.
///
/// The ID of the team
/// Meeting histories for the team, ordered by date descending
Task> GetMeetingHistoriesForTeamAsync(int teamId);
///
/// Gets the count of meeting histories for a specific team.
/// This is more efficient than loading all histories just to count them.
///
/// The ID of the team
/// The number of meeting histories for the team
Task GetMeetingHistoryCountForTeamAsync(int teamId);
}