using Demo.Data.RemoteData.RemoteDataBase.DAO; using Demo.domain.Models; using System; using System.Collections.Generic; using System.Linq; namespace Demo.Data.Repository { public class PresenceRepositoryImpl : IPresenceRepository { 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); } // Метод получения записей о присутствии по id группы public List GetPresenceByGroup(int groupId) { // Фильтруем записи по id группы и возвращаем их в виде списка return _presences.Where(p => p.GroupId == groupId).ToList(); } // Метод получения записей о присутствии по id группы и дате public List GetPresenceByGroupAndDate(int groupId, DateTime date) { // Фильтруем записи по id группы и дате, возвращая их в список 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; } } } } }