using data.RemoteData.DAO; using domain.Models; namespace data.Repository { public class PresenceRepositoryImpl { // Коллекция для хранения данных о посещаемости. private readonly List _presences = new List(); // Метод для сохранения списка посещаемости. public void SavePresence(List presences) { foreach (var presence in presences) { // Проверяем, существует ли уже запись о посещении для этого пользователя, урока и даты. var existing = _presences.FirstOrDefault(p => p.Date == presence.Date && p.UserGuid == presence.UserGuid && p.LessonNumber == presence.LessonNumber); if (existing == null) { // Если записи нет, добавляем новую. _presences.Add(presence); } else { // Если запись уже существует, обновляем информацию о посещении. existing.IsAttedance = presence.IsAttedance; } } } // Метод для добавления нового присутствия. public void AddPresence(PresenceLocalEntity presence) { // Если передан null, выбрасываем исключение. if (presence == null) throw new ArgumentNullException(nameof(presence)); // Добавляем новое присутствие в коллекцию. _presences.Add(presence); } // Метод для получения списка посещаемости по группе. public List GetPresenceByGroup(int groupId) { return _presences.Where(p => p.GroupId == groupId).ToList(); } // Метод для получения посещаемости по группе и дате. public List GetPresenceByGroupAndDate(int groupId, DateTime date) { return _presences.Where(p => p.GroupId == groupId && p.Date.Date == date.Date).ToList(); } // Метод для пометки пользователя как отсутствующего на определённом интервале уроков. public void MarkUserAsAbsent(Guid userGuid, int firstLessonNumber, int lastLessonNumber) { foreach (var lesson in Enumerable.Range(firstLessonNumber, lastLessonNumber - firstLessonNumber + 1)) { // Находим присутствие для данного пользователя и урока. var presence = _presences.FirstOrDefault(p => p.UserGuid == userGuid && p.LessonNumber == lesson); if (presence != null) { // Если присутствие найдено, помечаем пользователя как отсутствующего. presence.IsAttedance = false; } } } } }