Presence.Desktop/ui/UserConsole.cs

105 lines
4.1 KiB
C#
Raw Normal View History

2024-12-20 08:49:17 +00:00
using data.RemoteData.RemoteDataBase;
using data.Repository;
using data.Domain.UseCase;
using System;
using System.Text;
namespace ui
{
public class UserConsoleUI
{
private readonly UserUseCase _userUseCase;
private readonly GroupUseCase _groupUseCase;
public UserConsoleUI(UserUseCase userUseCase, GroupUseCase groupUseCase)
{
_userUseCase = userUseCase;
_groupUseCase = groupUseCase;
}
public void DisplayAllUsers()
{
Console.WriteLine("\n=== Список всех пользователей ===");
StringBuilder userOutput = new StringBuilder();
// Получаем всех пользователей
var users = _userUseCase.GetAllUsers();
// Проверка на null, если возвращается пустой список
if (users == null || !users.Any())
{
Console.WriteLine("Нет пользователей для отображения.");
return;
}
// Предположим, что у нас есть коллекция групп, например:
var groups = _groupUseCase.GetAllGroups(); // Получаем все группы из базы данных или репозитория
// Перебираем пользователей
foreach (var user in users)
{
// Ищем группу по ID
var group = groups?.FirstOrDefault(g => g.Id == user.GroupId); // Находим группу по ID
// Если группа найдена, выводим её имя, иначе - выводим ID группы
string groupName = group != null ? group.Name : $"Группа {user.GroupId} не найдена";
userOutput.AppendLine($"{user.UserId}\t{user.FIO}\t{groupName}");
}
Console.WriteLine(userOutput);
Console.WriteLine("===============================\n");
}
// Метод для удаления пользователя по ID
public void RemoveUserById(int userId)
{
// Сначала удаляем все записи о присутствии пользователя
_userUseCase.RemovePresenceByUserId(userId);
// Теперь удаляем пользователя
string output = _userUseCase.RemoveUserById(userId) ? "Пользователь удален" : "Пользователь не найден";
Console.WriteLine($"\n{output}\n");
}
// Метод для обновления пользователя по ID
public void UpdateUserById(int userId)
{
try
{
var user = _userUseCase.FindUserById(userId);
Console.WriteLine($"Текущие данные: {user.FIO}");
Console.Write("\nВведите новое ФИО: ");
string newFIO = Console.ReadLine();
Console.Write("\nВведите новый ID группы (или оставьте такой же): ");
int GroupId = int.Parse(Console.ReadLine());
_userUseCase.UpdateUser(userId, newFIO, GroupId);
Console.WriteLine("\nПользователь обновлен.\n");
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка: {ex.Message}\n");
}
}
// Метод для поиска пользователя по ID
public void FindUserById(int userId)
{
var user = _userUseCase.FindUserById(userId);
if (user != null)
{
Console.WriteLine($"\nПользователь найден: {user.UserId}, {user.FIO}, {user.Group.Name}\n");
}
else
{
Console.WriteLine("\nПользователь не найден.\n");
}
}
}
}