Presence.Desktop/ui/UserConsole.cs
2024-12-20 11:49:17 +03:00

105 lines
4.1 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 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");
}
}
}
}