NewPresence/data/Repository/SQLPresenceRepository.cs
2025-04-29 15:33:18 +03:00

57 lines
1.7 KiB
C#

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<PresenceDAO> presences)
{
foreach (var presence in presences)
{
_context.Presences.Add(presence);
}
_context.SaveChanges();
}
public List<PresenceDAO> 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<PresenceDAO> GetForAbsent(DateOnly date, int groupId)
{
return _context.Presences.Where(p => p.GroupId == groupId && p.Date == date).ToList();
}
}