presence/Demo/Domain/UseCase/UseCaseGeneratePresence.cs
Class_Student fee8b37eb3 init
2024-10-25 11:47:11 +03:00

58 lines
2.5 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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