Files
LehrerApp/LehrerApp.Core/Interfaces/IRepositories.cs
T
adminandClaude Sonnet 5 3fc506adc1 Notenschlüssel-Editor (1.3) und Einstellungen in Tabs strukturiert
- Notenschlüssel-Editor im ExamDialog: Stufen (Note/Prozentgrenze)
  bearbeitbar, Vorbelegung passend zum GradingSystem der Gruppe,
  Live-Anzeige der absoluten Punktegrenze je Stufe, Validierung
  (lückenlos, keine Dopplungen) über GradingService.ValidateGradingKey.
- Neues Modell GradingKeyTemplate + Repository: Notenschlüssel als
  Vorlage speichern/anwenden, direkt aus dem ExamDialog heraus.
- Einstellungen: Fächer / Kompetenzen / Notenschlüssel-Vorlagen sind
  jetzt eigene Tabs statt einer gemeinsam wachsenden Liste. Vorlagen
  zeigen nur noch eine kompakte Zeile; die Stufen-Bearbeitung läuft
  über ein Popup-Fenster (GradingKeyTemplateDialog).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-12 00:34:43 +02:00

135 lines
4.1 KiB
C#

using LehrerApp.Core.Models;
namespace LehrerApp.Core.Interfaces;
public interface IStudentRepository
{
Student? GetById(Guid id);
List<Student> GetAll(bool includeInactive = false);
List<Student> GetByGroup(Guid groupId, string schoolYear);
void Save(Student student);
void Delete(Guid id);
}
public interface IGroupRepository
{
LearningGroup? GetById(Guid id);
List<LearningGroup> GetAll(bool includeInactive = false);
List<LearningGroup> GetBySchoolYear(string schoolYear, bool includeInactive = false);
void Save(LearningGroup group);
void Delete(Guid id);
}
public interface IEnrollmentRepository
{
List<Enrollment> GetByStudent(Guid studentId);
List<Enrollment> GetByGroup(Guid groupId);
List<Enrollment> GetByGroupAndYear(Guid groupId, string schoolYear);
void Save(Enrollment enrollment);
void Delete(Guid id);
}
public interface IExamRepository
{
Exam? GetById(Guid id);
List<Exam> GetByGroup(Guid groupId);
void Save(Exam exam);
void Delete(Guid id);
}
public interface IExamResultRepository
{
List<ExamResult> GetByExam(Guid examId);
List<ExamResult> GetByStudent(Guid studentId);
ExamResult? GetByExamAndStudent(Guid examId, Guid studentId);
void Save(ExamResult result);
void SaveMany(List<ExamResult> results);
}
public interface IGradingKeyTemplateRepository
{
List<GradingKeyTemplate> GetAll();
List<GradingKeyTemplate> GetByGradingSystem(GradingSystem system);
GradingKeyTemplate? GetById(Guid id);
void Save(GradingKeyTemplate template);
void Delete(Guid id);
}
public interface IGradeRepository
{
List<Grade> GetByStudentAndGroup(Guid studentId, Guid groupId);
List<Grade> GetByGroup(Guid groupId);
void Save(Grade grade);
void Delete(Guid id);
}
public interface IUnitRepository
{
Unit? GetById(Guid id);
List<Unit> GetByGroup(Guid groupId);
void Save(Unit unit);
void Delete(Guid id);
}
public interface ILessonRepository
{
List<Lesson> GetByUnit(Guid unitId);
List<Lesson> GetByGroupAndDate(Guid groupId, DateOnly date);
List<Lesson> GetByGroupAndRange(Guid groupId, DateOnly from, DateOnly to);
void Save(Lesson lesson);
void Delete(Guid id);
}
public interface IDocumentationRepository
{
List<Documentation> GetByStudent(Guid studentId);
List<Documentation> GetByStudentAndType(Guid studentId, DocumentationType type);
void Save(Documentation doc);
void Delete(Guid id);
}
public interface IWorkTaskRepository
{
List<WorkTask> GetByStatus(WorkTaskStatus status);
List<WorkTask> GetAll();
void Save(WorkTask task);
void Delete(Guid id);
}
public interface ITimeEntryRepository
{
List<TimeEntry> GetByDate(DateOnly date);
List<TimeEntry> GetByDateRange(DateOnly from, DateOnly to);
List<TimeEntry> GetByTask(Guid taskId);
void Save(TimeEntry entry);
void Delete(Guid id);
}
public interface IParticipationSessionRepository
{
List<ParticipationSession> GetByGroup(Guid groupId);
ParticipationSession? GetById(Guid id);
void Save(ParticipationSession session);
void Delete(Guid id);
}
public interface IParticipationRepository
{
List<ParticipationEntry> GetBySession(Guid sessionId);
List<ParticipationEntry> GetByStudent(Guid studentId);
ParticipationEntry? GetBySessionAndStudent(Guid sessionId, Guid studentId);
void Save(ParticipationEntry entry);
void SaveMany(List<ParticipationEntry> entries);
void DeleteBySession(Guid sessionId);
}
public interface IParticipationAspectRepository
{
List<ParticipationAspect> GetDefaults();
List<ParticipationAspect> GetByGroup(Guid groupId);
void Save(ParticipationAspect aspect);
void Delete(Guid id);
}
public interface ISubjectRepository
{
List<Subject> GetAll();
Subject? GetById(Guid id);
Subject? GetByName(string name);
void Save(Subject subject);
void Delete(Guid id);
}
public interface ICompetencyDomainRepository
{
List<CompetencyDomain> GetBySubjectAndGrade(Guid subjectId, int gradeLevel);
CompetencyDomain? GetById(Guid id);
void Save(CompetencyDomain domain);
void Delete(Guid id);
void DeleteBySubjectAndGrade(Guid subjectId, int gradeLevel);
}