using System; using AttendanceApp.Domain.UseCases; using AttendanceApp.Domain.Models; using AttendanceApp.Data.Exceptions; namespace AttendanceApp.UI { public class GroupConsole { private readonly GroupUseCase _groupUseCase; public GroupConsole(GroupUseCase groupUseCase) { _groupUseCase = groupUseCase; } public void ShowAllGroups() { Console.Clear(); Console.WriteLine("=== Список всех групп ==="); var groups = _groupUseCase.GetAllGroups(); foreach (var group in groups) { Console.WriteLine($"ID: {group.Id} | Название: {group.Name}"); } Console.WriteLine("Нажмите любую клавишу для продолжения..."); Console.ReadKey(); } public void AddGroup() { Console.Clear(); Console.WriteLine("=== Добавление новой группы ==="); Console.Write("Введите название группы: "); var groupName = Console.ReadLine(); if (!string.IsNullOrWhiteSpace(groupName)) { var newGroup = new Group { Id = GenerateNewGroupId(), Name = groupName }; _groupUseCase.AddGroup(newGroup); Console.WriteLine("Группа успешно добавлена."); } else { Console.WriteLine("Название группы не может быть пустым."); } Console.WriteLine("Нажмите любую клавишу для продолжения..."); Console.ReadKey(); } private int GenerateNewGroupId() { var groups = _groupUseCase.GetAllGroups(); if (groups != null && groups.Any()) { return groups.Max(g => g.Id) + 1; } return 1; } public void UpdateGroup() { Console.Clear(); Console.WriteLine("=== Обновление группы ==="); Console.Write("Введите ID группы: "); var input = Console.ReadLine(); if (int.TryParse(input, out int groupId)) { try { var group = _groupUseCase.GetGroupById(groupId); Console.WriteLine($"Текущее название группы: {group.Name}"); Console.Write("Введите новое название группы: "); var newName = Console.ReadLine(); if (!string.IsNullOrWhiteSpace(newName)) { group.Name = newName; _groupUseCase.UpdateGroup(group); Console.WriteLine("Группа успешно обновлена."); } else { Console.WriteLine("Название группы не может быть пустым."); } } catch (GroupNotFoundException ex) { Console.WriteLine(ex.Message); } } else { Console.WriteLine("Неверный формат ID группы."); } Console.WriteLine("Нажмите любую клавишу для продолжения..."); Console.ReadKey(); } public void DeleteGroup() { Console.Clear(); Console.WriteLine("=== Удаление группы ==="); Console.Write("Введите ID группы: "); var input = Console.ReadLine(); if (int.TryParse(input, out int groupId)) { try { _groupUseCase.DeleteGroup(groupId); Console.WriteLine("Группа успешно удалена."); } catch (GroupNotFoundException ex) { Console.WriteLine(ex.Message); } } else { Console.WriteLine("Неверный формат ID группы."); } Console.WriteLine("Нажмите любую клавишу для продолжения..."); Console.ReadKey(); } public void FindGroupById() { Console.Clear(); Console.WriteLine("=== Поиск группы по ID ==="); Console.Write("Введите ID группы: "); var input = Console.ReadLine(); if (int.TryParse(input, out int groupId)) { try { var group = _groupUseCase.GetGroupById(groupId); Console.WriteLine($"ID: {group.Id} | Название: {group.Name}"); } catch (GroupNotFoundException ex) { Console.WriteLine(ex.Message); } } else { Console.WriteLine("Неверный формат ID группы."); } Console.WriteLine("Нажмите любую клавишу для продолжения..."); Console.ReadKey(); } } }