using domain.Models; using domain.UseCase; namespace ui { // Класс пользовательского интерфейса для работы с пользователями через консоль. public class UserConsole { private readonly UserUseCase _userUseCase; // Конструктор, принимающий экземпляр пользовательского UseCase. public UserConsole(UserUseCase userUseCase) { _userUseCase = userUseCase; } // Метод для отображения всех пользователей. public void AllUsers() { // Получаем список всех пользователей. var users = _userUseCase.GetAllUsers(); // Если пользователей нет, выводим сообщение и завершаем выполнение метода. if (!users.Any()) { Console.WriteLine("Нет пользователей."); return; } // Формируем и выводим список пользователей. Console.WriteLine("\n=== Список пользователей ==="); foreach (var user in users) { Console.WriteLine($"{user.Guid}\t{user.FIO}\t{user.Group.Name}"); } Console.WriteLine("=============================\n"); } // Метод для поиска пользователя по Guid. public void FindUserByGuid(Guid userGuid) { try { // Ищем пользователя по указанному Guid. var user = _userUseCase.FindUserByGuid(userGuid); // Если пользователь найден, выводим его данные. Console.WriteLine($"\nПользователь найден: {user.Guid}, {user.FIO}, {user.Group.Name}\n"); } catch (Exception ex) { // Если возникла ошибка, выводим сообщение об ошибке. Console.WriteLine($"Ошибка: {ex.Message}\n"); } } // Метод для удаления пользователя по Guid. public void RemoveUserByGuid(Guid userGuid) { // Удаляем пользователя и выводим результат операции. Console.WriteLine(_userUseCase.RemoveUserByGuid(userGuid) ? "Пользователь удален." : "Пользователь не найден."); } // Метод для обновления данных пользователя по Guid. public void UpdateUserByGuid(Guid userGuid) { try { // Ищем пользователя по указанному Guid. var user = _userUseCase.FindUserByGuid(userGuid); // Выводим текущие данные пользователя. Console.WriteLine($"\nТекущие данные: {user.FIO}, {user.Group.Name}"); // Запрашиваем новое ФИО у пользователя. Console.Write("Введите новое ФИО: "); string newFIO = Console.ReadLine(); // Проверяем, что новое ФИО не пустое. if (string.IsNullOrWhiteSpace(newFIO)) { Console.WriteLine("ФИО не может быть пустым."); return; } // Обновляем данные пользователя. user.FIO = newFIO; _userUseCase.UpdateUser(user); Console.WriteLine("Пользователь обновлен.\n"); } catch (Exception ex) { // Если возникла ошибка, выводим сообщение об ошибке. Console.WriteLine($"Ошибка: {ex.Message}\n"); } } // Метод для проверки существования группы по ID. private GroupLocalEntity ValidateGroupExistence(int groupId) { // Ищем группу с указанным ID среди всех пользователей. var group = _userUseCase.GetAllUsers() .Select(u => u.Group) .FirstOrDefault(g => g.Id == groupId); // Если группа не найдена, выбрасываем исключение. if (group == null) { throw new Exception("Группа не найдена."); } // Возвращаем найденную группу как локальную сущность. return new GroupLocalEntity { Id = group.Id, Name = group.Name }; } } }