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);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|