57 lines
1.7 KiB
C#
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();
|
|
}
|
|
} |