using System; using System.Linq; using Demo.Data.LocalData; using Demo.Data.LocalData.Entity; using Demo.Data.Repository; using Demo.Domain.Models; namespace Demo.Domain.UseCase { public class UseCaseGeneratePresence { private readonly AttendanceRepositoryImpl _attendanceRepo; // Конструктор с параметрами для инъекции зависимостей public UseCaseGeneratePresence(AttendanceRepositoryImpl attendanceRepo) { _attendanceRepo = attendanceRepo ?? throw new ArgumentNullException(nameof(attendanceRepo)); } // Генерация посещаемости на текущий день public void GeneratePresenceForDay(int firstLessonNumber, int lastLessonNumber, int groupId, DateOnly currentDate) { // Получаем пользователей группы из статических данных var users = LocalStaticData.Users.Where(u => u.GroupID == groupId).ToList(); if (users.Count == 0) { Console.WriteLine($"Не найдено пользователей для группы с ID {groupId}"); return; } for (int lessonNumber = firstLessonNumber; lessonNumber <= lastLessonNumber; lessonNumber++) { foreach (var user in users) { var attendance = new Attendance { UserGuid = user.Guid, Date = currentDate, LessonNumber = lessonNumber, IsPresent = true // По умолчанию отмечаем всех как присутствующих }; _attendanceRepo.AddAttendance(attendance); // Добавляем запись посещаемости в репозиторий } } } // Генерация посещаемости на неделю public void GeneratePresenceForWeek(int firstLessonNumber, int lastLessonNumber, int groupId, DateOnly startDate) { for (int i = 0; i < 7; i++) // Генерируем посещаемость на каждый день недели { var currentDate = startDate.AddDays(i); GeneratePresenceForDay(firstLessonNumber, lastLessonNumber, groupId, currentDate); } } } }