2024-10-28 12:42:04 +00:00
|
|
|
|
// C:\Users\class_Student\source\repos\slarny4\Demo1\UI\MainMenu.cs
|
|
|
|
|
using System;
|
|
|
|
|
using System.Globalization;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using Demo.Domain.Models;
|
|
|
|
|
using Demo.Domain.UseCase;
|
|
|
|
|
using Demo.Data.Repository;
|
|
|
|
|
using Demo.Data.LocalData.Entity;
|
|
|
|
|
using Demo.Data.RemoteData.RemoteDataBase;
|
|
|
|
|
using Microsoft.EntityFrameworkCore;
|
2024-10-24 08:50:32 +00:00
|
|
|
|
|
2024-10-28 12:42:04 +00:00
|
|
|
|
namespace Demo.UI
|
2024-10-21 22:57:01 +00:00
|
|
|
|
{
|
2024-10-24 08:50:32 +00:00
|
|
|
|
public class MainMenu
|
2024-10-21 22:57:01 +00:00
|
|
|
|
{
|
2024-10-28 12:42:04 +00:00
|
|
|
|
private readonly UserUseCase _userUseCase;
|
|
|
|
|
private readonly GroupUseCase _groupUseCase;
|
|
|
|
|
private readonly UseCaseGeneratePresence _presenceGenerator;
|
|
|
|
|
private readonly PresenceUseCase _presenceUseCase;
|
2024-10-24 08:50:32 +00:00
|
|
|
|
|
2024-10-28 12:42:04 +00:00
|
|
|
|
private readonly RemoteDatabaseContext _context;
|
|
|
|
|
|
|
|
|
|
public MainMenu(RemoteDatabaseContext context = null)
|
2024-10-21 22:57:01 +00:00
|
|
|
|
{
|
2024-10-28 12:42:04 +00:00
|
|
|
|
if (context == null)
|
|
|
|
|
{
|
|
|
|
|
// Если контекст не предоставлен, создаем новый
|
|
|
|
|
var optionsBuilder = new DbContextOptionsBuilder<RemoteDatabaseContext>();
|
|
|
|
|
optionsBuilder.UseNpgsql("Host=45.67.56.214;Port=5421;Database=PresenceDB;Username=user5;Password=EtEJqhsf");
|
|
|
|
|
_context = new RemoteDatabaseContext(optionsBuilder.Options);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_context = context;
|
|
|
|
|
}
|
2024-10-24 08:50:32 +00:00
|
|
|
|
|
2024-10-28 12:42:04 +00:00
|
|
|
|
// Инициализация репозиториев
|
|
|
|
|
IUserRepository userRepository = new SQLUserRepositoryImpl(_context);
|
|
|
|
|
IGroupRepository groupRepository = new GroupRepositoryImpl(_context);
|
|
|
|
|
IPresenceRepository presenceRepository = new PresenceRepositoryImpl(_context);
|
2024-10-24 08:50:32 +00:00
|
|
|
|
|
2024-10-28 12:42:04 +00:00
|
|
|
|
// Инициализация use cases
|
|
|
|
|
_userUseCase = new UserUseCase(userRepository);
|
|
|
|
|
_groupUseCase = new GroupUseCase(groupRepository);
|
|
|
|
|
_presenceGenerator = new UseCaseGeneratePresence(presenceRepository, userRepository);
|
|
|
|
|
_presenceUseCase = new PresenceUseCase(presenceRepository, groupRepository, userRepository);
|
2024-10-24 08:50:32 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Show()
|
|
|
|
|
{
|
2024-10-28 12:42:04 +00:00
|
|
|
|
bool exit = false;
|
|
|
|
|
while (!exit)
|
2024-10-24 08:50:32 +00:00
|
|
|
|
{
|
|
|
|
|
Console.Clear();
|
2024-10-28 12:42:04 +00:00
|
|
|
|
Console.WriteLine("=== Учёт Посещаемости ===");
|
2024-10-24 08:50:32 +00:00
|
|
|
|
Console.WriteLine("1. Показать всех пользователей");
|
|
|
|
|
Console.WriteLine("2. Удалить пользователя по GUID");
|
|
|
|
|
Console.WriteLine("3. Обновить пользователя");
|
|
|
|
|
Console.WriteLine("4. Найти пользователя по GUID");
|
|
|
|
|
Console.WriteLine("5. Показать все группы");
|
|
|
|
|
Console.WriteLine("6. Добавить группу");
|
|
|
|
|
Console.WriteLine("7. Обновить группу");
|
|
|
|
|
Console.WriteLine("8. Удалить группу по ID");
|
|
|
|
|
Console.WriteLine("9. Найти группу по ID");
|
|
|
|
|
Console.WriteLine("10. Генерация посещаемости на текущий день");
|
|
|
|
|
Console.WriteLine("11. Генерация посещаемости на неделю");
|
|
|
|
|
Console.WriteLine("12. Показать посещаемость по группе и дате");
|
|
|
|
|
Console.WriteLine("13. Отметить пользователя как отсутствующего");
|
2024-10-28 12:42:04 +00:00
|
|
|
|
Console.WriteLine("14. Вывести всю посещаемость");
|
2024-10-24 08:50:32 +00:00
|
|
|
|
Console.WriteLine("0. Выход");
|
2024-10-28 12:42:04 +00:00
|
|
|
|
Console.Write("Выберите пункт меню: ");
|
|
|
|
|
|
|
|
|
|
var input = Console.ReadLine() ?? string.Empty;
|
|
|
|
|
|
|
|
|
|
Console.WriteLine();
|
2024-10-24 08:50:32 +00:00
|
|
|
|
|
|
|
|
|
switch (input)
|
|
|
|
|
{
|
|
|
|
|
case "1":
|
2024-10-28 12:42:04 +00:00
|
|
|
|
ShowAllUsers();
|
2024-10-24 08:50:32 +00:00
|
|
|
|
break;
|
|
|
|
|
case "2":
|
2024-10-28 12:42:04 +00:00
|
|
|
|
DeleteUserByGuid();
|
2024-10-24 08:50:32 +00:00
|
|
|
|
break;
|
|
|
|
|
case "3":
|
2024-10-28 12:42:04 +00:00
|
|
|
|
UpdateUser();
|
2024-10-24 08:50:32 +00:00
|
|
|
|
break;
|
|
|
|
|
case "4":
|
2024-10-28 12:42:04 +00:00
|
|
|
|
FindUserByGuid();
|
2024-10-24 08:50:32 +00:00
|
|
|
|
break;
|
|
|
|
|
case "5":
|
2024-10-28 12:42:04 +00:00
|
|
|
|
ShowAllGroups();
|
2024-10-24 08:50:32 +00:00
|
|
|
|
break;
|
|
|
|
|
case "6":
|
2024-10-28 12:42:04 +00:00
|
|
|
|
AddGroup();
|
2024-10-24 08:50:32 +00:00
|
|
|
|
break;
|
|
|
|
|
case "7":
|
2024-10-28 12:42:04 +00:00
|
|
|
|
UpdateGroup();
|
2024-10-24 08:50:32 +00:00
|
|
|
|
break;
|
|
|
|
|
case "8":
|
2024-10-28 12:42:04 +00:00
|
|
|
|
DeleteGroupById();
|
2024-10-24 08:50:32 +00:00
|
|
|
|
break;
|
|
|
|
|
case "9":
|
2024-10-28 12:42:04 +00:00
|
|
|
|
FindGroupById();
|
2024-10-24 08:50:32 +00:00
|
|
|
|
break;
|
|
|
|
|
case "10":
|
2024-10-28 12:42:04 +00:00
|
|
|
|
GenerateDailyPresence();
|
2024-10-24 08:50:32 +00:00
|
|
|
|
break;
|
|
|
|
|
case "11":
|
2024-10-28 12:42:04 +00:00
|
|
|
|
GenerateWeeklyPresence();
|
2024-10-24 08:50:32 +00:00
|
|
|
|
break;
|
|
|
|
|
case "12":
|
2024-10-28 12:42:04 +00:00
|
|
|
|
ShowPresenceByGroupAndDate();
|
2024-10-24 08:50:32 +00:00
|
|
|
|
break;
|
|
|
|
|
case "13":
|
2024-10-28 12:42:04 +00:00
|
|
|
|
MarkUserAbsent();
|
2024-10-24 08:50:32 +00:00
|
|
|
|
break;
|
|
|
|
|
case "14":
|
2024-10-28 12:42:04 +00:00
|
|
|
|
ShowAllPresences();
|
2024-10-24 08:50:32 +00:00
|
|
|
|
break;
|
|
|
|
|
case "0":
|
2024-10-28 12:42:04 +00:00
|
|
|
|
exit = true;
|
|
|
|
|
break;
|
2024-10-24 08:50:32 +00:00
|
|
|
|
default:
|
2024-10-28 12:42:04 +00:00
|
|
|
|
Console.WriteLine("Неверный выбор. Нажмите любую клавишу для продолжения...");
|
2024-10-24 08:50:32 +00:00
|
|
|
|
Console.ReadKey();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-10-21 22:57:01 +00:00
|
|
|
|
}
|
2024-10-28 12:42:04 +00:00
|
|
|
|
|
|
|
|
|
private void ShowAllUsers()
|
|
|
|
|
{
|
|
|
|
|
var users = _userUseCase.GetAllUsers();
|
|
|
|
|
Console.WriteLine("Список пользователей:");
|
|
|
|
|
foreach (var user in users)
|
|
|
|
|
{
|
|
|
|
|
var group = _groupUseCase.GetGroupById(user.GroupID);
|
|
|
|
|
Console.WriteLine($"ID: {user.Id} | ФИО: {user.FIO} | Группа: {group?.Name ?? "Неизвестно"}");
|
|
|
|
|
}
|
|
|
|
|
Pause();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void DeleteUserByGuid()
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите GUID пользователя для удаления: ");
|
|
|
|
|
var input = Console.ReadLine();
|
|
|
|
|
if (Guid.TryParse(input, out Guid userId))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
_userUseCase.DeleteUser(userId);
|
|
|
|
|
Console.WriteLine("Пользователь удалён.");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"Ошибка: {ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат GUID.");
|
|
|
|
|
}
|
|
|
|
|
Pause();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void UpdateUser()
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите GUID пользователя для обновления: ");
|
|
|
|
|
var input = Console.ReadLine();
|
|
|
|
|
if (Guid.TryParse(input, out Guid userId))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var user = _userUseCase.GetUserById(userId);
|
|
|
|
|
Console.WriteLine($"Текущие данные: ФИО: {user.FIO}, Группа ID: {user.GroupID}");
|
|
|
|
|
Console.Write("Введите новое ФИО (оставьте пустым, чтобы сохранить текущее): ");
|
|
|
|
|
var newFIO = Console.ReadLine();
|
|
|
|
|
Console.Write("Введите новый ID группы (оставьте пустым, чтобы сохранить текущую): ");
|
|
|
|
|
var groupInput = Console.ReadLine();
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(newFIO))
|
|
|
|
|
{
|
|
|
|
|
user.FIO = newFIO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(groupInput))
|
|
|
|
|
{
|
|
|
|
|
if (int.TryParse(groupInput, out int newGroupId))
|
|
|
|
|
{
|
|
|
|
|
var group = _groupUseCase.GetGroupById(newGroupId);
|
|
|
|
|
if (group != null)
|
|
|
|
|
{
|
|
|
|
|
user.GroupID = newGroupId;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Группа с таким ID не найдена. Группа не обновлена.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат ID группы. Группа не обновлена.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_userUseCase.UpdateUser(user);
|
|
|
|
|
Console.WriteLine("Пользователь обновлён.");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"Ошибка: {ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат GUID.");
|
|
|
|
|
}
|
|
|
|
|
Pause();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void FindUserByGuid()
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите GUID пользователя для поиска: ");
|
|
|
|
|
var input = Console.ReadLine();
|
|
|
|
|
if (Guid.TryParse(input, out Guid userId))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var user = _userUseCase.GetUserById(userId);
|
|
|
|
|
var group = _groupUseCase.GetGroupById(user.GroupID);
|
|
|
|
|
Console.WriteLine($"ID: {user.Id} | ФИО: {user.FIO} | Группа: {group?.Name ?? "Неизвестно"}");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"Ошибка: {ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат GUID.");
|
|
|
|
|
}
|
|
|
|
|
Pause();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void ShowAllGroups()
|
|
|
|
|
{
|
|
|
|
|
var groups = _groupUseCase.GetAllGroups();
|
|
|
|
|
Console.WriteLine("Список групп:");
|
|
|
|
|
foreach (var group in groups)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"ID: {group.Id} | Название: {group.Name}");
|
|
|
|
|
}
|
|
|
|
|
Pause();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void AddGroup()
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите ID группы: ");
|
|
|
|
|
var idInput = Console.ReadLine();
|
|
|
|
|
Console.Write("Введите название группы: ");
|
|
|
|
|
var name = Console.ReadLine() ?? string.Empty;
|
|
|
|
|
if (int.TryParse(idInput, out int groupId))
|
|
|
|
|
{
|
|
|
|
|
var existingGroup = _groupUseCase.GetGroupById(groupId);
|
|
|
|
|
if (existingGroup != null)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Группа с таким ID уже существует.");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var group = new Group
|
|
|
|
|
{
|
|
|
|
|
Id = groupId,
|
|
|
|
|
Name = name
|
|
|
|
|
};
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
_groupUseCase.AddGroup(group);
|
|
|
|
|
Console.WriteLine("Группа добавлена.");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"Ошибка: {ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат ID группы.");
|
|
|
|
|
}
|
|
|
|
|
Pause();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void UpdateGroup()
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите ID группы для обновления: ");
|
|
|
|
|
var idInput = Console.ReadLine();
|
|
|
|
|
if (int.TryParse(idInput, out int groupId))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var group = _groupUseCase.GetGroupById(groupId);
|
|
|
|
|
Console.WriteLine($"Текущие данные: Название: {group.Name}");
|
|
|
|
|
Console.Write("Введите новое название группы: ");
|
|
|
|
|
var newName = Console.ReadLine();
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(newName))
|
|
|
|
|
{
|
|
|
|
|
group.Name = newName;
|
|
|
|
|
_groupUseCase.UpdateGroup(group);
|
|
|
|
|
Console.WriteLine("Группа обновлена.");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Название не может быть пустым. Группа не обновлена.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"Ошибка: {ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат ID группы.");
|
|
|
|
|
}
|
|
|
|
|
Pause();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void DeleteGroupById()
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите ID группы для удаления: ");
|
|
|
|
|
var input = Console.ReadLine();
|
|
|
|
|
if (int.TryParse(input, out int groupId))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
_groupUseCase.DeleteGroup(groupId);
|
|
|
|
|
Console.WriteLine("Группа удалена.");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"Ошибка: {ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат ID группы.");
|
|
|
|
|
}
|
|
|
|
|
Pause();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void FindGroupById()
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите ID группы для поиска: ");
|
|
|
|
|
var input = Console.ReadLine();
|
|
|
|
|
if (int.TryParse(input, out int groupId))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var group = _groupUseCase.GetGroupById(groupId);
|
|
|
|
|
Console.WriteLine($"ID: {group.Id} | Название: {group.Name}");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"Ошибка: {ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат ID группы.");
|
|
|
|
|
}
|
|
|
|
|
Pause();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void GenerateDailyPresence()
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите номер первой пары: ");
|
|
|
|
|
var firstLessonInput = Console.ReadLine();
|
|
|
|
|
Console.Write("Введите номер последней пары: ");
|
|
|
|
|
var lastLessonInput = Console.ReadLine();
|
|
|
|
|
Console.Write("Введите ID группы: ");
|
|
|
|
|
var groupIdInput = Console.ReadLine();
|
|
|
|
|
Console.Write("Введите дату (yyyy-MM-dd): ");
|
|
|
|
|
var dateInput = Console.ReadLine();
|
|
|
|
|
|
|
|
|
|
if (int.TryParse(firstLessonInput, out int firstLesson) &&
|
|
|
|
|
int.TryParse(lastLessonInput, out int lastLesson) &&
|
|
|
|
|
int.TryParse(groupIdInput, out int groupId) &&
|
|
|
|
|
DateTime.TryParseExact(dateInput, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime date))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
_presenceGenerator.GenerateDailyPresence(groupId, firstLesson, lastLesson, date);
|
|
|
|
|
Console.WriteLine("Посещаемость сгенерирована.");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"Ошибка: {ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверные входные данные.");
|
|
|
|
|
}
|
|
|
|
|
Pause();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void GenerateWeeklyPresence()
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите номер первой пары: ");
|
|
|
|
|
var firstLessonInput = Console.ReadLine();
|
|
|
|
|
Console.Write("Введите номер последней пары: ");
|
|
|
|
|
var lastLessonInput = Console.ReadLine();
|
|
|
|
|
Console.Write("Введите ID группы: ");
|
|
|
|
|
var groupIdInput = Console.ReadLine();
|
|
|
|
|
Console.Write("Введите начальную дату недели (yyyy-MM-dd): ");
|
|
|
|
|
var startDateInput = Console.ReadLine();
|
|
|
|
|
|
|
|
|
|
if (int.TryParse(firstLessonInput, out int firstLesson) &&
|
|
|
|
|
int.TryParse(lastLessonInput, out int lastLesson) &&
|
|
|
|
|
int.TryParse(groupIdInput, out int groupId) &&
|
|
|
|
|
DateTime.TryParseExact(startDateInput, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime startDate))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
_presenceGenerator.GenerateWeeklyPresence(groupId, firstLesson, lastLesson, startDate);
|
|
|
|
|
Console.WriteLine("Посещаемость на неделю сгенерирована.");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"Ошибка: {ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверные входные данные.");
|
|
|
|
|
}
|
|
|
|
|
Pause();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void ShowPresenceByGroupAndDate()
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите ID группы: ");
|
|
|
|
|
var groupIdInput = Console.ReadLine();
|
|
|
|
|
Console.Write("Введите дату (yyyy-MM-dd): ");
|
|
|
|
|
var dateInput = Console.ReadLine();
|
|
|
|
|
|
|
|
|
|
if (int.TryParse(groupIdInput, out int groupId) &&
|
|
|
|
|
DateTime.TryParseExact(dateInput, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime date))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var presences = _presenceUseCase.GetPresencesByGroupAndDate(groupId, date);
|
|
|
|
|
var group = _groupUseCase.GetGroupById(groupId);
|
|
|
|
|
Console.WriteLine($"Посещаемость группы {group?.Name ?? "Неизвестно"} на {date.ToString("yyyy-MM-dd")}:");
|
|
|
|
|
foreach (var presence in presences)
|
|
|
|
|
{
|
|
|
|
|
var user = _userUseCase.GetUserById(presence.UserId);
|
|
|
|
|
Console.WriteLine($"Пользователь: {user.FIO} | Пара: {presence.LessonNumber} | Был/Не был: {(presence.WasPresent ? "Был" : "Не был")}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"Ошибка: {ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверные входные данные.");
|
|
|
|
|
}
|
|
|
|
|
Pause();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void MarkUserAbsent()
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите GUID пользователя: ");
|
|
|
|
|
var userIdInput = Console.ReadLine();
|
|
|
|
|
Console.Write("Введите номер пары: ");
|
|
|
|
|
var lessonInput = Console.ReadLine();
|
|
|
|
|
Console.Write("Введите дату (yyyy-MM-dd): ");
|
|
|
|
|
var dateInput = Console.ReadLine();
|
|
|
|
|
|
|
|
|
|
if (Guid.TryParse(userIdInput, out Guid userId) &&
|
|
|
|
|
int.TryParse(lessonInput, out int lessonNumber) &&
|
|
|
|
|
DateTime.TryParseExact(dateInput, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime date))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
_presenceUseCase.MarkUserAbsent(userId, lessonNumber, date);
|
|
|
|
|
Console.WriteLine("Пользователь отмечен как отсутствующий.");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"Ошибка: {ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверные входные данные.");
|
|
|
|
|
}
|
|
|
|
|
Pause();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void ShowAllPresences()
|
|
|
|
|
{
|
|
|
|
|
var presences = _presenceUseCase.GetAllPresences();
|
|
|
|
|
Console.WriteLine("Вся посещаемость:");
|
|
|
|
|
foreach (var presence in presences)
|
|
|
|
|
{
|
|
|
|
|
var user = _userUseCase.GetUserById(presence.UserId);
|
|
|
|
|
var group = _groupUseCase.GetGroupById(user.GroupID);
|
|
|
|
|
Console.WriteLine($"Пользователь: {user.FIO} | Группа: {group?.Name ?? "Неизвестно"} | Дата: {presence.ClassDate.ToString("yyyy-MM-dd")} | Пара: {presence.LessonNumber} | Был/Не был: {(presence.WasPresent ? "Был" : "Не был")}");
|
|
|
|
|
}
|
|
|
|
|
Pause();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void Pause()
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("\nНажмите любую клавишу для продолжения...");
|
|
|
|
|
Console.ReadKey();
|
|
|
|
|
}
|
2024-10-21 22:57:01 +00:00
|
|
|
|
}
|
2024-10-24 08:50:32 +00:00
|
|
|
|
}
|