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); }