2024-10-18 09:51:43 +00:00
|
|
|
|
using Demo.domain.Models;
|
|
|
|
|
using Demo.Domain.UseCase;
|
2024-10-14 12:10:53 +00:00
|
|
|
|
using System;
|
|
|
|
|
|
|
|
|
|
namespace Demo.UI
|
|
|
|
|
{
|
|
|
|
|
public class MainMenuUI
|
2024-10-23 09:42:17 +00:00
|
|
|
|
{
|
|
|
|
|
private UserConsoleUI _userConsoleUI;
|
|
|
|
|
private GroupConsoleUI _groupConsoleUI;
|
|
|
|
|
private UseCasePresence _presenceUseCase;
|
|
|
|
|
private PresenceConsoleUI _presenceConsoleUI;
|
|
|
|
|
|
2024-10-30 09:11:19 +00:00
|
|
|
|
public MainMenuUI(UserConsoleUI userConsoleUI, GroupConsoleUI groupConsoleUI, PresenceConsoleUI presenceConsoleUI)
|
2024-10-14 12:10:53 +00:00
|
|
|
|
{
|
2024-10-30 09:11:19 +00:00
|
|
|
|
_userConsoleUI = userConsoleUI;
|
|
|
|
|
_groupConsoleUI = groupConsoleUI;
|
|
|
|
|
_presenceConsoleUI = presenceConsoleUI;
|
2024-10-23 09:42:17 +00:00
|
|
|
|
}
|
2024-10-14 12:10:53 +00:00
|
|
|
|
|
2024-10-16 07:01:04 +00:00
|
|
|
|
|
2024-10-30 09:11:19 +00:00
|
|
|
|
public void DisplayMenu()
|
2024-10-18 09:51:43 +00:00
|
|
|
|
{
|
2024-10-16 07:01:04 +00:00
|
|
|
|
while (true)
|
|
|
|
|
{
|
2024-10-18 09:51:43 +00:00
|
|
|
|
Console.WriteLine("Выберите действие:");
|
|
|
|
|
Console.WriteLine("1 - Вывести всех пользователей");
|
|
|
|
|
Console.WriteLine("2 - Удалить пользователя по GUID");
|
|
|
|
|
Console.WriteLine("3 - Обновить пользователя по GUID");
|
|
|
|
|
Console.WriteLine("4 - Вывести все группы");
|
|
|
|
|
Console.WriteLine("5 - Найти пользователя по GUID");
|
|
|
|
|
Console.WriteLine("6 - Добавить группу");
|
2024-10-21 12:42:07 +00:00
|
|
|
|
Console.WriteLine("7 - Обновить группу по ID");
|
|
|
|
|
Console.WriteLine("8 - Удалить группу по ID");
|
2024-10-23 09:42:17 +00:00
|
|
|
|
Console.WriteLine("9 - Вывести посещаемость по группе");
|
|
|
|
|
Console.WriteLine("10 - Вывести посещаемость по группе и дате");
|
|
|
|
|
Console.WriteLine("11 - Отметить пользователя как отсутствующего");
|
|
|
|
|
Console.WriteLine("12 - Генерация расписания по диапозону");
|
2024-10-30 09:11:19 +00:00
|
|
|
|
Console.WriteLine("13 - Генерация расписания по диапозону на неделю");
|
2024-10-18 09:51:43 +00:00
|
|
|
|
Console.WriteLine("0 - Выход");
|
|
|
|
|
|
|
|
|
|
var input = Console.ReadLine();
|
|
|
|
|
|
|
|
|
|
switch (input)
|
2024-10-16 07:01:04 +00:00
|
|
|
|
{
|
2024-10-18 09:51:43 +00:00
|
|
|
|
case "1":
|
|
|
|
|
_userConsoleUI.DisplayAllUsers();
|
|
|
|
|
break;
|
|
|
|
|
case "2":
|
|
|
|
|
Console.WriteLine("Введите GUID пользователя для удаления:");
|
|
|
|
|
if (Guid.TryParse(Console.ReadLine(), out var userGuid))
|
|
|
|
|
{
|
|
|
|
|
_userConsoleUI.RemoveUserByGuid(userGuid);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "3":
|
|
|
|
|
Console.WriteLine("Введите GUID пользователя для обновления:");
|
|
|
|
|
if (Guid.TryParse(Console.ReadLine(), out Guid updateGuid))
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Введите новое имя пользователя:");
|
|
|
|
|
string newFio = Console.ReadLine();
|
|
|
|
|
|
|
|
|
|
Console.WriteLine("Введите новый ID группы:");
|
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int newGroupId))
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Введите название группы:");
|
|
|
|
|
string newGroupName = Console.ReadLine();
|
|
|
|
|
|
|
|
|
|
var updatedUser = new User
|
|
|
|
|
{
|
|
|
|
|
Guid = updateGuid,
|
|
|
|
|
FIO = newFio,
|
|
|
|
|
Group = new Group { Id = newGroupId, Name = newGroupName }
|
|
|
|
|
};
|
2024-10-16 07:01:04 +00:00
|
|
|
|
|
2024-10-30 09:11:19 +00:00
|
|
|
|
_userConsoleUI.UpdateUser(updateGuid, updatedUser);
|
2024-10-18 09:51:43 +00:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Некорректный ID группы.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Некорректный GUID.");
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "4":
|
|
|
|
|
_groupConsoleUI.DisplayAllGroups();
|
|
|
|
|
break;
|
|
|
|
|
case "5":
|
|
|
|
|
Console.WriteLine("Введите GUID пользователя для поиска:");
|
|
|
|
|
if (Guid.TryParse(Console.ReadLine(), out var findUserGuid))
|
|
|
|
|
{
|
|
|
|
|
_userConsoleUI.FindUserByGuid(findUserGuid);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Некорректный GUID.");
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "6":
|
|
|
|
|
_groupConsoleUI.AddGroup();
|
|
|
|
|
break;
|
|
|
|
|
case "7":
|
|
|
|
|
_groupConsoleUI.UpdateGroupName();
|
|
|
|
|
break;
|
2024-10-21 12:42:07 +00:00
|
|
|
|
case "8":
|
|
|
|
|
Console.WriteLine("Введите ID группы для удаления:");
|
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int groupId))
|
|
|
|
|
{
|
|
|
|
|
_groupConsoleUI.RemoveGroupById(groupId);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Некорректный ID группы.");
|
|
|
|
|
}
|
|
|
|
|
break;
|
2024-10-23 09:42:17 +00:00
|
|
|
|
case "9":
|
|
|
|
|
Console.WriteLine("Введите ID группы для отображения посещаемости:");
|
|
|
|
|
string inputGroupId = Console.ReadLine();
|
|
|
|
|
if (int.TryParse(inputGroupId, out int parsedGroupId))
|
|
|
|
|
{
|
|
|
|
|
_presenceConsoleUI.DisplayPresencesByGroupId(parsedGroupId);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Некорректный ID группы.");
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "10":
|
|
|
|
|
Console.WriteLine("Введите ID группы для отображения посещаемости:");
|
|
|
|
|
inputGroupId = Console.ReadLine();
|
|
|
|
|
if (int.TryParse(inputGroupId, out parsedGroupId))
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Введите дату (yyyy-MM-dd):");
|
|
|
|
|
string inputDate = Console.ReadLine();
|
|
|
|
|
if (DateOnly.TryParse(inputDate, out DateOnly parsedDate))
|
|
|
|
|
{
|
|
|
|
|
_presenceConsoleUI.DisplayPresencesByGroupIdAndDate(parsedGroupId, parsedDate);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Некорректная дата.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Некорректный ID группы.");
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "11":
|
2024-10-30 09:11:19 +00:00
|
|
|
|
Console.WriteLine("Введите GUID пользователя для отметки отсутствия:");
|
|
|
|
|
if (Guid.TryParse(Console.ReadLine(), out var absenceUserGuid))
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Введите дату (в формате ГГГГ-ММ-ДД):");
|
|
|
|
|
if (DateOnly.TryParse(Console.ReadLine(), out var absenceDate))
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Введите диапазон уроков (например, 2-4):");
|
|
|
|
|
var lessonRange = Console.ReadLine().Split('-');
|
|
|
|
|
if (lessonRange.Length == 2 &&
|
|
|
|
|
int.TryParse(lessonRange[0], out var startLesson) &&
|
|
|
|
|
int.TryParse(lessonRange[1], out var endLesson))
|
|
|
|
|
{
|
|
|
|
|
// Вызов метода для отметки отсутствия
|
|
|
|
|
_presenceConsoleUI.MarkUserAsAbsent(absenceUserGuid, absenceDate, startLesson, endLesson);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Некорректный диапазон уроков.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Некорректная дата.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Некорректный GUID.");
|
|
|
|
|
}
|
2024-10-23 09:42:17 +00:00
|
|
|
|
break;
|
|
|
|
|
case "12":
|
|
|
|
|
_presenceConsoleUI.GenerateDailySchedule();
|
|
|
|
|
break;
|
2024-10-30 09:11:19 +00:00
|
|
|
|
case "13":
|
|
|
|
|
_presenceConsoleUI.GenerateWeeklySchedule();
|
|
|
|
|
break;
|
2024-10-18 09:51:43 +00:00
|
|
|
|
case "0":
|
2024-10-21 12:42:07 +00:00
|
|
|
|
return;
|
2024-10-18 09:51:43 +00:00
|
|
|
|
default:
|
|
|
|
|
Console.WriteLine("Некорректный выбор. Попробуйте снова.");
|
2024-10-16 07:01:04 +00:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-10-14 12:10:53 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|