58 lines
2.5 KiB
C#
58 lines
2.5 KiB
C#
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);
|
||
}
|
||
}
|
||
}
|
||
}
|