new_presence/ui/UserConsole.cs
2024-11-19 17:24:26 +03:00

120 lines
5.1 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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