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 };
|
||
}
|
||
}
|
||
}
|