using data.RemoteData.RemoteDataBase; using data.RemoteData.RemoteDatabase.DAO; using Microsoft.EntityFrameworkCore.Storage; namespace data.Repository; public class SQLPresenceRepository : IPresenceRepository { private readonly RemoteDatabaseContext _context; public SQLPresenceRepository(RemoteDatabaseContext context) { _context = context; } public DateOnly? GetLastDateByGroupId(int groupId) { var lastDate = _context.Presences .Where(p => p.GroupId == groupId) .OrderByDescending(p => p.Date) .Select(p => p.Date) .FirstOrDefault(); return lastDate == default ? (DateOnly?)null : lastDate; } public void SavePresence(List presences) { foreach (var presence in presences) { _context.Presences.Add(presence); } _context.SaveChanges(); } public List ShowPresenceForDateAndGroup(DateOnly date, int groupId) { return _context.Presences.Where(p => p.GroupId == groupId && p.Date == date) .Join(_context.Users, presence=>presence.UserId, user=>user.UserId, (presence, user) => new PresenceDAO { PresenceId = presence.PresenceId, UserId = user.UserId, GroupId = presence.GroupId, Date = presence.Date, LessonNumber = presence.LessonNumber, IsAttendance = presence.IsAttendance }).ToList(); } public List GetForAbsent(DateOnly date, int groupId) { return _context.Presences.Where(p => p.GroupId == groupId && p.Date == date).ToList(); } }