using data.RemoteData.RemoteDataBase.DAO; using data.Repository; using data.domain.Models; namespace data.Domain.UseCase { public class GroupUseCase { private readonly IGroupRepository _SQLGroupRepositoryImpl; public GroupUseCase(IGroupRepository SQlGroupRepositoryImpl) { _SQLGroupRepositoryImpl = SQlGroupRepositoryImpl; } // Приватный метод для валидации имени группы private void ValidateGroupName(string groupName) { if (string.IsNullOrWhiteSpace(groupName)) { throw new ArgumentException("Имя группы не может быть пустым."); } } private void ValidateGroupId(int GroupId) { if (GroupId < 1) { throw new ArgumentException("Введите корректный ID группы."); } } // Приватный метод для валидации существования группы по ID private GroupDao ValidateGroupExistence(int groupId) { var existingGroup = _SQLGroupRepositoryImpl.GetAllGroups() .FirstOrDefault(g => g.Id == groupId); if (existingGroup == null) { throw new ArgumentException("Группа не найдена."); } return existingGroup; } // Метод для получения списка всех групп public List GetAllGroups() { return [.. _SQLGroupRepositoryImpl.GetAllGroups() .Select(it => new GroupDao { Id = it.Id, Name = it.Name })]; } // Метод для получения группы по ID public string FindGroupById(int IdGroup) { string groups = _SQLGroupRepositoryImpl.GetGroupById(IdGroup).Name; return groups; } // Метод для добавления новой группы public void AddGroup(string groupName) { ValidateGroupName(groupName); GroupDao newGroup = new GroupDao { Name = groupName }; _SQLGroupRepositoryImpl.AddGroup(newGroup.Name); } // Метод для изменения названия группы public void UpdateGroup(int groupId, string newGroupName) { ValidateGroupName(newGroupName); var existingGroup = ValidateGroupExistence(groupId); existingGroup.Name = newGroupName; _SQLGroupRepositoryImpl.UpdateGroupById(groupId, existingGroup); } } }