using data.Repository; using domain.Models; namespace domain.UseCase { // Класс GroupUseCase предоставляет операции для работы с группами. public class GroupUseCase { private readonly IGroupRepository _repositoryGroupImpl; // Репозиторий для работы с группами // Конструктор для инициализации репозитория групп. public GroupUseCase(IGroupRepository repositoryGroupImpl) { _repositoryGroupImpl = repositoryGroupImpl; } // Проверяет существование группы по её ID. private GroupLocalEntity ValidateGroupExistence(int groupId) { var existingGroup = _repositoryGroupImpl.GetAllGroup() .FirstOrDefault(g => g.Id == groupId); if (existingGroup == null) { throw new ArgumentException("Группа не найдена."); } return existingGroup; // Возвращаем найденную группу } // Получить все группы public List GetAllGroups() { return _repositoryGroupImpl.GetAllGroup() .Select(it => new Group { Id = it.Id, Name = it.Name }) // Преобразуем в DTO-объект .ToList();// Список групп } // Найти группу по ID public Group FindGroupById(int groupId) { return GetAllGroups().FirstOrDefault(g => g.Id == groupId) ?? throw new ArgumentException("Группа не найдена."); // Выбрасываем исключение, если группа не найдена } // Добавить новую группу public void AddGroup(string groupName) { var newId = _repositoryGroupImpl.GetAllGroup().Any() ? _repositoryGroupImpl.GetAllGroup().Max(g => g.Id) + 1 // Генерируем новый ID : 1; var newGroup = new GroupLocalEntity { Id = newId, Name = groupName }; _repositoryGroupImpl.AddGroup(newGroup); // Добавляем группу в репозиторий } // Удалить группу по ID public void RemoveGroupById(int groupId) { ValidateGroupExistence(groupId); // Проверяем, существует ли группа _repositoryGroupImpl.RemoveGroupById(groupId); // Удаляем группу } // Изменить название группы public bool UpdateGroup(int groupId, string newGroupName) { var existingGroup = _repositoryGroupImpl.GetAllGroup() .FirstOrDefault(g => g.Id == groupId); if (existingGroup == null) { return false; // Если группа не найдена } existingGroup.Name = newGroupName; // Обновляем название _repositoryGroupImpl.UpdateGroupById(existingGroup.Id, existingGroup); // Сохраняем изменения return true;// True, если обновление успешно } } }