presence/Demo/Domain/UseCase/UseCaseGeneratePresence.cs

58 lines
2.5 KiB
C#
Raw Permalink Normal View History

2024-10-25 08:47:11 +00:00
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);
}
}
}
}