using LehrerApp.Core.Models; namespace LehrerApp.Core.Interfaces; public interface IStudentRepository { Student? GetById(Guid id); List GetAll(bool includeInactive = false); List GetByGroup(Guid groupId, string schoolYear); void Save(Student student); void Delete(Guid id); } public interface IGroupRepository { LearningGroup? GetById(Guid id); List GetAll(); List GetBySchoolYear(string schoolYear); void Save(LearningGroup group); void Delete(Guid id); } public interface IEnrollmentRepository { List GetByStudent(Guid studentId); List GetByGroup(Guid groupId); List GetByGroupAndYear(Guid groupId, string schoolYear); void Save(Enrollment enrollment); void Delete(Guid id); } public interface IExamRepository { Exam? GetById(Guid id); List GetByGroup(Guid groupId); void Save(Exam exam); void Delete(Guid id); } public interface IExamResultRepository { List GetByExam(Guid examId); List GetByStudent(Guid studentId); ExamResult? GetByExamAndStudent(Guid examId, Guid studentId); void Save(ExamResult result); void SaveMany(List results); } public interface IGradeRepository { List GetByStudentAndGroup(Guid studentId, Guid groupId); List GetByGroup(Guid groupId); void Save(Grade grade); void Delete(Guid id); } public interface IUnitRepository { Unit? GetById(Guid id); List GetByGroup(Guid groupId); void Save(Unit unit); void Delete(Guid id); } public interface ILessonRepository { List GetByUnit(Guid unitId); List GetByGroupAndDate(Guid groupId, DateOnly date); List GetByGroupAndRange(Guid groupId, DateOnly from, DateOnly to); void Save(Lesson lesson); void Delete(Guid id); } public interface IDocumentationRepository { List GetByStudent(Guid studentId); List GetByStudentAndType(Guid studentId, DocumentationType type); void Save(Documentation doc); void Delete(Guid id); } public interface IWorkTaskRepository { List GetByStatus(WorkTaskStatus status); List GetAll(); void Save(WorkTask task); void Delete(Guid id); } public interface ITimeEntryRepository { List GetByDate(DateOnly date); List GetByDateRange(DateOnly from, DateOnly to); List GetByTask(Guid taskId); void Save(TimeEntry entry); void Delete(Guid id); }