66 lines
2.4 KiB
C#
66 lines
2.4 KiB
C#
|
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;
|
||
|
}
|
||
|
}
|
||
|
}
|