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 presences = new List(); 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 ShowPresenceForDateAndGroup(DateOnly date, int groupId) { return _presenceRepository.ShowPresenceForDateAndGroup(date, groupId); } public bool MarkUserAbsent(DateOnly date, int groupId, int userId, int firstLesson, int lastLesson) { List 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; } } }