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

129 lines
4.9 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.UseCase;
using System.Text;
namespace ui
{
// Класс пользовательского интерфейса для работы с группами через консоль
public class GroupConsole
{
private readonly GroupUseCase _groupUseCase;
// Конструктор, принимающий экземпляр GroupUseCase
public GroupConsole(GroupUseCase groupUseCase)
{
_groupUseCase = groupUseCase;
}
// Метод для поиска группы по ID
public void FindGroupById(int groupId)
{
try
{
// Находим группу и выводим её данные
var group = _groupUseCase.FindGroupById(groupId);
Console.WriteLine($"ID группы: {group.Id} Название группы: {group.Name}");
}
catch (Exception ex)
{
// Выводим сообщение об ошибке
Console.WriteLine($"Ошибка: {ex.Message}");
}
}
// Метод для отображения всех групп
public void DisplayAllGroups()
{
Console.WriteLine("\n=== Список всех групп ===");
StringBuilder groupOutput = new StringBuilder();
// Формируем список всех групп
foreach (var group in _groupUseCase.GetAllGroups())
{
groupOutput.AppendLine($"{group.Id}\t{group.Name}");
}
// Выводим список в консоль
Console.WriteLine(groupOutput);
Console.WriteLine("===========================\n");
}
// Метод для добавления новой группы
public void AddGroup(string groupName)
{
try
{
// Проверяем валидность имени группы
ValidateGroupName(groupName);
// Добавляем группу через UseCase
_groupUseCase.AddGroup(groupName);
Console.WriteLine($"\nГруппа {groupName} добавлена.\n");
}
catch (Exception ex)
{
// Выводим сообщение об ошибке
Console.WriteLine($"Ошибка: {ex.Message}\n");
}
}
// Метод для удаления группы по ID
public void RemoveGroup(string groupIdStr)
{
try
{
// Преобразуем строку в число и проверяем ID
int groupId = int.Parse(groupIdStr);
ValidateGroupId(groupId);
// Удаляем группу через UseCase
_groupUseCase.RemoveGroupById(groupId);
Console.WriteLine($"Группа с ID: {groupId} удалена");
}
catch (Exception ex)
{
// Выводим сообщение об ошибке
Console.WriteLine($"Ошибка: {ex.Message}\n");
}
}
// Метод для изменения имени группы
public void UpdateGroupName(int groupId, string newGroupName)
{
try
{
// Проверяем валидность имени новой группы
ValidateGroupName(newGroupName);
// Обновляем имя группы через UseCase
_groupUseCase.UpdateGroup(groupId, newGroupName);
Console.WriteLine($"\nНазвание группы с ID {groupId} изменено на {newGroupName}.\n");
}
catch (Exception ex)
{
// Выводим сообщение об ошибке
Console.WriteLine($"Ошибка: {ex.Message}");
}
}
// Метод для проверки валидности имени группы
private void ValidateGroupName(string groupName)
{
// Проверяем, что имя группы не пустое и не состоит только из пробелов
if (string.IsNullOrWhiteSpace(groupName))
{
throw new ArgumentException("Имя группы не может быть пустым.");
}
}
// Метод для проверки валидности ID группы
private void ValidateGroupId(int groupId)
{
// Проверяем, что ID группы больше 0
if (groupId < 1)
{
throw new ArgumentException("Введите корректный ID группы.");
}
}
}
}