presenceNikita/Demo/UI/MainMenu.cs

225 lines
11 KiB
C#
Raw Normal View History

2024-11-10 18:56:16 +00:00
using Demo.Domain.UseCase;
2024-10-16 08:22:40 +00:00
namespace Demo.UI
{
public class MainMenuUI
{
2024-11-10 18:56:16 +00:00
private readonly UserConsoleUI _userConsoleUI;
private readonly GroupConsoleUI _groupConsoleUI;
private readonly PresenceConsole _presenceConsoleUI;
2024-10-18 14:03:25 +00:00
2024-11-10 18:56:16 +00:00
public MainMenuUI(UserUseCase userUseCase, GroupUseCase groupUseCase, UseCaseGeneratePresence presenceUseCase)
2024-10-18 14:03:25 +00:00
{
_userConsoleUI = new UserConsoleUI(userUseCase);
_groupConsoleUI = new GroupConsoleUI(groupUseCase);
2024-11-10 18:56:16 +00:00
_presenceConsoleUI = new PresenceConsole(presenceUseCase);
2024-10-16 08:22:40 +00:00
}
2024-11-10 18:56:16 +00:00
public void DisplayMenu()
{
Console.WriteLine("Начало работы");
2024-10-16 08:22:40 +00:00
while (true)
{
2024-11-10 18:56:16 +00:00
Console.WriteLine("УПРАВЛЕНИЕ ПОЛЬЗОВАТЕЛЯМИ");
Console.WriteLine("1. Показать список всех пользователей");
Console.WriteLine("2. Удалить пользователя по его ID");
Console.WriteLine("3. Обновить данные пользователя по ID");
Console.WriteLine("4. Найти пользователя по его ID");
Console.WriteLine();
Console.WriteLine("УПРАВЛЕНИЕ ГРУППАМИ");
Console.WriteLine("5. Показать список всех групп");
Console.WriteLine("6. Создать новую группу");
Console.WriteLine("7. Удалить группу по ID");
Console.WriteLine("8. Изменить название существующей группы");
Console.WriteLine("9. Найти группу по ее ID");
Console.WriteLine();
Console.WriteLine("УПРАВЛЕНИЕ ПОСЕЩАЕМОСТЬЮ");
Console.WriteLine("10. Сгенерировать посещаемость на текущий день");
Console.WriteLine("11. Сгенерировать посещаемость на текущую неделю");
Console.WriteLine("12. Показать посещаемость всех пользователей");
Console.WriteLine("13. Отметить пользователя как отсутствующего");
Console.WriteLine("14. Вывести посещаемость группы по ID");
Console.WriteLine();
Console.WriteLine("0. Выход из программы");
Console.WriteLine();
Console.WriteLine();
Console.Write("Выберите команду: ");
string command = Console.ReadLine();
Console.WriteLine();
2024-10-18 14:03:25 +00:00
2024-11-10 18:56:16 +00:00
switch (command)
2024-10-16 08:22:40 +00:00
{
2024-11-10 18:56:16 +00:00
case "1":
// Отображение всех пользователей
_userConsoleUI.DisplayAllUsers();
break;
2024-10-18 14:03:25 +00:00
2024-11-10 18:56:16 +00:00
case "2":
// Удаление пользователя по ID
Console.Write("Введите ID пользователя для удаления: ");
string inputGuid = Console.ReadLine();
if (Guid.TryParse(inputGuid, out Guid userGuid))
{
_userConsoleUI.RemoveUserById(userGuid);
}
else
{
Console.WriteLine("Неверный формат ID");
}
2024-10-18 14:03:25 +00:00
break;
2024-11-10 18:56:16 +00:00
case "3":
// Обновление пользователя по ID
Console.Write("Введите ID пользователя для обновления: ");
string updateGuidInput = Console.ReadLine();
if (Guid.TryParse(updateGuidInput, out Guid updateUserGuid))
{
_userConsoleUI.UpdateUserById(updateUserGuid);
}
else
{
Console.WriteLine("Неверный формат ID");
}
2024-10-18 14:03:25 +00:00
break;
2024-11-10 18:56:16 +00:00
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;
2024-10-18 14:03:25 +00:00
2024-11-10 18:56:16 +00:00
case "5":
// Отображение всех групп
_groupConsoleUI.DisplayAllGroups();
break;
2024-10-18 14:03:25 +00:00
2024-11-10 18:56:16 +00:00
case "6":
// Добавление новой группы
2024-10-18 14:03:25 +00:00
Console.Write("Введите название новой группы: ");
2024-11-10 18:56:16 +00:00
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());
2024-10-18 14:03:25 +00:00
Console.Write("Введите ID группы: ");
2024-11-10 18:56:16 +00:00
int groupIdForPresence = int.Parse(Console.ReadLine());
_presenceConsoleUI.GeneratePresenceForDay(DateTime.Now, groupIdForPresence, firstLesson, lastLesson);
Console.WriteLine("Посещаемость на день сгенерирована.");
2024-10-18 14:03:25 +00:00
break;
2024-10-16 08:22:40 +00:00
2024-11-10 18:56:16 +00:00
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("Пользователь отмечен как отсутствующий.");
break;
case "14":
Console.Write("Введите ID группы: ");
int groupIdForAllPresence = int.Parse(Console.ReadLine());
_presenceConsoleUI.DisplayAllPresenceByGroup(groupIdForAllPresence);
break;
case "0":
Console.WriteLine("Выход...");
return;
default:
Console.WriteLine("Неверный выбор, попробуйте снова.");
2024-10-16 08:22:40 +00:00
break;
}
2024-10-18 14:03:25 +00:00
Console.WriteLine();
2024-11-10 18:56:16 +00:00
Console.WriteLine();
Console.WriteLine();
2024-10-16 08:22:40 +00:00
}
}
}
2024-11-10 18:56:16 +00:00
}