120 lines
5.1 KiB
C#
120 lines
5.1 KiB
C#
|
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 };
|
|||
|
}
|
|||
|
}
|
|||
|
}
|