NewPresence/domain/UseCase/PresenceUseCase.cs

66 lines
2.4 KiB
C#
Raw Normal View History

2025-04-29 12:33:18 +00:00
using data.RemoteData.RemoteDatabase.DAO;
using data.Repository;
namespace domain.UseCase;
public class PresenceUseCase
{
private readonly IUserRepository _userRepository;
private readonly IGroupRepository _groupRepository;
private readonly IPresenceRepository _presenceRepository;
public PresenceUseCase(IUserRepository userRepository, IGroupRepository groupRepository,
IPresenceRepository presenceRepository)
{
_userRepository = userRepository;
_groupRepository = groupRepository;
_presenceRepository = presenceRepository;
}
public void GeneratePresenceForDay(int firstLesson, int lastLesson, int groupId)
{
var users = _userRepository.GetAllUsers().Where(u=>u.GroupId == groupId).ToList();
DateOnly startDate = _presenceRepository.GetLastDateByGroupId(groupId)?.AddDays(1)??DateOnly.FromDateTime(DateTime.Now);
List<PresenceDAO> presences = new List<PresenceDAO>();
for (int lessonNumber = firstLesson; lessonNumber <= lastLesson; lessonNumber++)
{
foreach (var user in users)
{
presences.Add(new PresenceDAO
{
UserId = user.UserId,
GroupId = user.GroupId,
Date = startDate,
LessonNumber = lessonNumber,
IsAttendance = true
});
}
}
_presenceRepository.SavePresence(presences);
}
public List<PresenceDAO> ShowPresenceForDateAndGroup(DateOnly date, int groupId)
{
return _presenceRepository.ShowPresenceForDateAndGroup(date, groupId);
}
public bool MarkUserAbsent(DateOnly date, int groupId, int userId, int firstLesson, int lastLesson)
{
List<PresenceDAO> presences = _presenceRepository.GetForAbsent(date, groupId);
if (presences.Where(p => p.UserId == userId).Count() > 0)
{
foreach (var presence in presences.Where(p => p.UserId == userId && p.LessonNumber >= firstLesson
&& p.LessonNumber <= lastLesson))
{
presence.IsAttendance = false;
}
_presenceRepository.SavePresence(presences);
//_presenceRepository.UpdateAbsent(userId, groupId, firstLesson, lastLesson,date,false);
return true;
}
else
{
return false;
}
}
}