2024-11-17 16:24:01 +00:00
|
|
|
|
|
|
|
|
|
using Demo.domain.Models;
|
|
|
|
|
using Demo.Domain.UseCase;
|
2024-10-19 21:12:06 +00:00
|
|
|
|
using System;
|
|
|
|
|
|
|
|
|
|
namespace Demo.UI
|
|
|
|
|
{
|
|
|
|
|
public class MainMenuUI
|
|
|
|
|
{
|
2024-11-17 16:24:01 +00:00
|
|
|
|
private readonly UserConsoleUI _userConsoleUI;
|
|
|
|
|
private readonly GroupConsoleUI _groupConsoleUI;
|
|
|
|
|
private readonly PresenceConsole _presenceConsoleUI;
|
2024-10-19 21:12:06 +00:00
|
|
|
|
|
2024-11-17 16:24:01 +00:00
|
|
|
|
public MainMenuUI(UserUseCase userUseCase, GroupUseCase groupUseCase, UseCaseGeneratePresence presenceUseCase)
|
2024-10-19 21:39:57 +00:00
|
|
|
|
{
|
|
|
|
|
_userConsoleUI = new UserConsoleUI(userUseCase);
|
2024-11-17 16:24:01 +00:00
|
|
|
|
_groupConsoleUI = new GroupConsoleUI(groupUseCase);
|
|
|
|
|
_presenceConsoleUI = new PresenceConsole(presenceUseCase);
|
2024-10-19 21:12:06 +00:00
|
|
|
|
}
|
|
|
|
|
|
2024-11-17 16:24:01 +00:00
|
|
|
|
public void DisplayMenu()
|
2024-10-19 21:39:57 +00:00
|
|
|
|
{
|
2024-10-19 21:12:06 +00:00
|
|
|
|
while (true)
|
|
|
|
|
{
|
2024-11-17 16:24:01 +00:00
|
|
|
|
Console.WriteLine("Меню");
|
2024-10-19 21:39:57 +00:00
|
|
|
|
|
2024-10-19 21:12:06 +00:00
|
|
|
|
|
2024-11-17 16:24:01 +00:00
|
|
|
|
Console.WriteLine();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Console.WriteLine("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
|
|
|
|
|
Console.WriteLine("1) Вывести список всех пользователей");
|
|
|
|
|
Console.WriteLine("2) Вывод всех групп");
|
|
|
|
|
Console.WriteLine("3) Обновить данные пользователя по ID");
|
|
|
|
|
Console.WriteLine("4) Найти пользователя по ID");
|
|
|
|
|
Console.WriteLine("5) Вывести список всех групп");
|
|
|
|
|
Console.WriteLine("6) Создать новую группу");
|
|
|
|
|
Console.WriteLine("7) Удалить группу по ID");
|
|
|
|
|
Console.WriteLine("8) Изменить название группы");
|
|
|
|
|
Console.WriteLine("9) Найти группу по ID");
|
|
|
|
|
Console.WriteLine("10) Сгенерировать посещаемость на текущий день");
|
|
|
|
|
Console.WriteLine("11) Сгенерировать посещаемость на текущую неделю");
|
|
|
|
|
Console.WriteLine("12) Вывести посещаемость всех пользователей");
|
|
|
|
|
Console.WriteLine("13) Отметить пользователя как отсутствующего");
|
|
|
|
|
|
|
|
|
|
Console.WriteLine("0) Выход из программы");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Console.Write("\nВведите команду: ");
|
|
|
|
|
string comand = Console.ReadLine();
|
|
|
|
|
Console.WriteLine();
|
|
|
|
|
|
|
|
|
|
switch (comand)
|
2024-10-19 21:39:57 +00:00
|
|
|
|
{
|
|
|
|
|
case "1":
|
2024-11-17 16:24:01 +00:00
|
|
|
|
// Вывод всех пользователей
|
2024-10-19 21:39:57 +00:00
|
|
|
|
_userConsoleUI.DisplayAllUsers();
|
|
|
|
|
break;
|
2024-11-17 16:24:01 +00:00
|
|
|
|
|
2024-10-19 21:39:57 +00:00
|
|
|
|
case "2":
|
2024-11-17 16:24:01 +00:00
|
|
|
|
// Вывод всех групп
|
|
|
|
|
_groupConsoleUI.DisplayAllGroups();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "3":
|
|
|
|
|
// Обновление пользователя по ID
|
|
|
|
|
Console.Write("Введите ID пользователя для обновления: ");
|
|
|
|
|
string updateGuidInput = Console.ReadLine();
|
|
|
|
|
if (Guid.TryParse(updateGuidInput, out Guid updateUserGuid))
|
|
|
|
|
{
|
|
|
|
|
_userConsoleUI.UpdateUserById(updateUserGuid);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат ID");
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "4":
|
|
|
|
|
// Поиск пользователя по id
|
|
|
|
|
Console.Write("Введите ID пользователя для поиска: ");
|
|
|
|
|
string findGuidInput = Console.ReadLine();
|
|
|
|
|
if (Guid.TryParse(findGuidInput, out Guid findUserGuid))
|
|
|
|
|
{
|
|
|
|
|
_userConsoleUI.FindUserById(findUserGuid);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат ID");
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "5":
|
|
|
|
|
// Удалить пользователя по id
|
|
|
|
|
Console.Write("Введите ID пользователя для удаления: ");
|
|
|
|
|
string inputGuid = Console.ReadLine();
|
|
|
|
|
if (Guid.TryParse(inputGuid, out Guid userGuid))
|
|
|
|
|
{
|
|
|
|
|
_userConsoleUI.RemoveUserById(userGuid);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат ID");
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "6":
|
|
|
|
|
// Добавление новой группы
|
|
|
|
|
Console.Write("Введите название новой группы: ");
|
|
|
|
|
string newGroupName = Console.ReadLine();
|
|
|
|
|
_groupConsoleUI.AddGroup(newGroupName);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "7":
|
|
|
|
|
// Удаление группы
|
|
|
|
|
Console.Write("Введите ID группы для удаления: ");
|
|
|
|
|
string groupIdForDelete = Console.ReadLine();
|
|
|
|
|
_groupConsoleUI.RemoveGroup(groupIdForDelete);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "8":
|
|
|
|
|
// Изменение названия группы
|
|
|
|
|
Console.Write("Введите ID группы для изменения: ");
|
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int groupId))
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите новое название группы: ");
|
|
|
|
|
string newName = Console.ReadLine();
|
|
|
|
|
_groupConsoleUI.UpdateGroupName(groupId, newName);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат ID группы");
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "9":
|
|
|
|
|
// Поиск группы
|
|
|
|
|
Console.Write("Введите ID группы для поиска : ");
|
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int IdGroup))
|
|
|
|
|
{
|
|
|
|
|
_groupConsoleUI.FindGroupById(IdGroup);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "10":
|
|
|
|
|
// Генерация посещаемости на день
|
|
|
|
|
Console.Write("Введите номер первого занятия: ");
|
|
|
|
|
int firstLesson = int.Parse(Console.ReadLine());
|
|
|
|
|
Console.Write("Введите номер последнего занятия: ");
|
|
|
|
|
int lastLesson = int.Parse(Console.ReadLine());
|
|
|
|
|
Console.Write("Введите ID группы: ");
|
|
|
|
|
int groupIdForPresence = int.Parse(Console.ReadLine());
|
|
|
|
|
|
|
|
|
|
_presenceConsoleUI.GeneratePresenceForDay(DateTime.Now, groupIdForPresence, firstLesson, lastLesson);
|
|
|
|
|
Console.WriteLine("Посещаемость на день сгенерирована.");
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "11":
|
|
|
|
|
// Генерация посещаемости на неделю
|
|
|
|
|
Console.Write("Введите номер первого занятия: ");
|
|
|
|
|
int firstLessonForWeek = int.Parse(Console.ReadLine());
|
|
|
|
|
Console.Write("Введите номер последнего занятия: ");
|
|
|
|
|
int lastLessonForWeek = int.Parse(Console.ReadLine());
|
|
|
|
|
Console.Write("Введите ID группы: ");
|
|
|
|
|
int groupIdForWeekPresence = int.Parse(Console.ReadLine());
|
|
|
|
|
|
|
|
|
|
_presenceConsoleUI.GeneratePresenceForWeek(DateTime.Now, groupIdForWeekPresence, firstLessonForWeek, lastLessonForWeek);
|
|
|
|
|
Console.WriteLine("Посещаемость на неделю сгенерирована.");
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "12":
|
|
|
|
|
// Отображение посещаемости
|
|
|
|
|
Console.Write("Введите дату в формате гггг-мм-дд): ");
|
|
|
|
|
DateTime date = DateTime.Parse(Console.ReadLine());
|
|
|
|
|
Console.Write("Введите ID группы: ");
|
|
|
|
|
int groupForPresenceView = int.Parse(Console.ReadLine());
|
|
|
|
|
|
|
|
|
|
_presenceConsoleUI.DisplayPresence(date, groupForPresenceView);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "13":
|
|
|
|
|
// Отметить пользователя как отсутствующего
|
|
|
|
|
Console.Write("Введите ID пользователя: ");
|
|
|
|
|
userGuid = Guid.Parse(Console.ReadLine());
|
|
|
|
|
Console.Write("Введите номер первого занятия: ");
|
|
|
|
|
int firstAbsLesson = int.Parse(Console.ReadLine());
|
|
|
|
|
Console.Write("Введите номер последнего занятия: ");
|
|
|
|
|
int lastAbsLesson = int.Parse(Console.ReadLine());
|
|
|
|
|
Console.Write("Введите ID группы: ");
|
|
|
|
|
int absGroupId = int.Parse(Console.ReadLine());
|
|
|
|
|
|
|
|
|
|
_presenceConsoleUI.MarkUserAbsent(DateTime.Now, absGroupId, userGuid, firstAbsLesson, lastAbsLesson);
|
|
|
|
|
Console.WriteLine("Пользователь отмечен как отсутствующий.");
|
2024-10-19 21:39:57 +00:00
|
|
|
|
break;
|
2024-11-17 16:24:01 +00:00
|
|
|
|
|
2024-10-19 21:39:57 +00:00
|
|
|
|
case "0":
|
2024-11-17 16:24:01 +00:00
|
|
|
|
Console.WriteLine("Выйти");
|
2024-10-19 21:39:57 +00:00
|
|
|
|
return;
|
2024-11-17 16:24:01 +00:00
|
|
|
|
|
2024-10-19 21:39:57 +00:00
|
|
|
|
default:
|
2024-11-17 16:24:01 +00:00
|
|
|
|
Console.WriteLine("Неверно, повторите еще раз");
|
2024-10-19 21:12:06 +00:00
|
|
|
|
break;
|
|
|
|
|
}
|
2024-11-17 16:24:01 +00:00
|
|
|
|
Console.WriteLine();
|
2024-10-19 21:12:06 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-10-19 21:39:57 +00:00
|
|
|
|
}
|