using Demo.Data.LocalData; using Demo.Data.RemoteData.RemoteDataBase; using Demo.Data.RemoteData.RemoteDataBase.DAO; using Demo.Domain.Models; namespace Demo.Data.Repository { public class SQLPresenceRepositoryImpl : IPresenceRepository { private readonly RemoteDatabaseContext _remoteDatabaseContext; public SQLPresenceRepositoryImpl(RemoteDatabaseContext remoteDatabaseContext){ _remoteDatabaseContext = remoteDatabaseContext; GetAllPresence = _remoteDatabaseContext.PresenceDaos.Select(x => new PresenceLocalEntity{UserGuid = x.UserGuid, Date = x.Date, LessonNumber = x.LessonNumber, IsAttedance = x.IsAttedance}).ToList(); } public List GetAllPresence = new List{}; public List GetAllPresences(){ return _remoteDatabaseContext.PresenceDaos.Select(x => new PresenceLocalEntity{UserGuid = x.UserGuid, Date = x.Date, LessonNumber = x.LessonNumber, IsAttedance = x.IsAttedance}).ToList(); } public List GeneratePresence(List presenceLocalEntities) { var presences = presenceLocalEntities.Select(x => new PresenceDAO { UserGuid = x.UserGuid, IsAttedance = x.IsAttedance, LessonNumber = x.LessonNumber, Date = x.Date, userDAO = _remoteDatabaseContext.Users.FirstOrDefault(u => u.Guid == x.UserGuid) }).ToList(); _remoteDatabaseContext.PresenceDaos.AddRange(presences); _remoteDatabaseContext.SaveChanges(); return presenceLocalEntities; } public bool DeletePresence(){ var allRecords = _remoteDatabaseContext.PresenceDaos.ToList(); _remoteDatabaseContext.PresenceDaos.RemoveRange(allRecords); _remoteDatabaseContext.SaveChanges(); return true; } public void IsAttedance(int firstLesson, int lastLesson, DateOnly date, Guid UserGuid){ var presencesToUpdate = _remoteDatabaseContext.PresenceDaos .Where(x => x.LessonNumber >= firstLesson && x.LessonNumber <= lastLesson && x.Date == date && x.UserGuid == UserGuid) .ToList(); foreach(var presence in presencesToUpdate){ presence.IsAttedance = false; } _remoteDatabaseContext.SaveChanges(); } } }