using Demo.domain.Models; using Demo.Domain.UseCase; using System; namespace Demo.UI { public class MainMenuUI { private UserConsoleUI _userConsoleUI; private GroupConsoleUI _groupConsoleUI; private UseCasePresence _presenceUseCase; private PresenceConsoleUI _presenceConsoleUI; public MainMenuUI(UserUseCase userUseCase, GroupUseCase groupUseCase, UseCasePresence presenceUseCase) { _userConsoleUI = new UserConsoleUI(userUseCase); _groupConsoleUI = new GroupConsoleUI(groupUseCase); _presenceUseCase = presenceUseCase; _presenceConsoleUI = new PresenceConsoleUI(presenceUseCase); DisplayMenu(); } private void DisplayMenu() { while (true) { Console.WriteLine("Выберите действие:"); Console.WriteLine("1 - Вывести всех пользователей"); Console.WriteLine("2 - Удалить пользователя по GUID"); Console.WriteLine("3 - Обновить пользователя по GUID"); Console.WriteLine("4 - Вывести все группы"); Console.WriteLine("5 - Найти пользователя по GUID"); Console.WriteLine("6 - Добавить группу"); Console.WriteLine("7 - Обновить группу по ID"); Console.WriteLine("8 - Удалить группу по ID"); Console.WriteLine("9 - Вывести посещаемость по группе"); Console.WriteLine("10 - Вывести посещаемость по группе и дате"); Console.WriteLine("11 - Отметить пользователя как отсутствующего"); Console.WriteLine("12 - Генерация расписания по диапозону"); Console.WriteLine("0 - Выход"); var input = Console.ReadLine(); switch (input) { 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 } }; _userConsoleUI.UpdateUser(updatedUser); } 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; case "8": Console.WriteLine("Введите ID группы для удаления:"); if (int.TryParse(Console.ReadLine(), out int groupId)) { _groupConsoleUI.RemoveGroupById(groupId); } else { Console.WriteLine("Некорректный ID группы."); } break; 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": _presenceConsoleUI.MarkUserAsAbsent(); break; case "12": _presenceConsoleUI.GenerateDailySchedule(); break; case "0": return; default: Console.WriteLine("Некорректный выбор. Попробуйте снова."); break; } } } } }