presence/ui/UserConsole.cs
2024-11-11 12:07:11 +03:00

99 lines
3.4 KiB
C#
Raw 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;
using System;
using System.Linq;
using System.Text;
namespace ui
{
public class UserConsoleUI
{
private readonly UserUseCase _userUseCase;
public UserConsoleUI(UserUseCase userUseCase)
{
_userUseCase = userUseCase;
}
// Метод для отображения всех пользователей
public void DisplayAllUsers()
{
Console.WriteLine("\n=== Список всех пользователей ===");
StringBuilder userOutput = new StringBuilder();
foreach (var user in _userUseCase.GetAllUsers())
{
userOutput.AppendLine($"{user.Guid}\t{user.FIO}\t{user.Group.Name}");
}
Console.WriteLine(userOutput);
Console.WriteLine("===============================\n");
}
// Метод для удаления пользователя по ID
public void RemoveUserById(Guid userGuid)
{
string output = _userUseCase.RemoveUserById(userGuid) ? "Пользователь удален" : "Пользователь не найден";
Console.WriteLine($"\n{output}\n");
}
// Метод для обновления пользователя по ID
public void UpdateUserById(Guid userGuid)
{
try
{
var user = _userUseCase.FindUserById(userGuid);
Console.WriteLine($"Текущие данные: {user.FIO}, {user.Group.Name}");
Console.Write("\nВведите новое ФИО: ");
string newFIO = Console.ReadLine();
user.FIO = newFIO;
_userUseCase.UpdateUser(user);
Console.WriteLine("\nПользователь обновлен.\n");
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка: {ex.Message}\n");
}
}
// Метод для поиска пользователя по ID
public void FindUserById(Guid userGuid)
{
try
{
var user = _userUseCase.FindUserById(userGuid);
Console.WriteLine($"\nПользователь найден: {user.Guid}, {user.FIO}, {user.Group.Name}\n");
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка: {ex.Message}\n");
}
}
private void ValidateUserFIO(string fio)
{
if (string.IsNullOrWhiteSpace(fio))
{
throw new ArgumentException("ФИО не может быть пустым.");
}
}
// Приватный метод для валидации существования группы по ID
private GroupLocalEntity ValidateGroupExistence(int groupId)
{
var group = _userUseCase.GetAllUsers().FirstOrDefault(u => u.Group.Id == groupId)?.Group;
if (group == null)
{
throw new Exception("Группа не найдена.");
}
// Возвращаем правильный объект типа GroupLocalEntity
return new GroupLocalEntity
{
Id = group.Id,
Name = group.Name
};
}
}
}