new_presence/ui/UserConsole.cs

120 lines
5.1 KiB
C#
Raw Permalink Normal View History

2024-11-19 14:24:26 +00:00
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 };
}
}
}