using Demo.Data.LocalData; using Demo.Data.RemoteData.RemoteDataBase.DAO; using Demo.Data.Repository; using Demo.domain.Models; namespace Demo.Domain.UseCase { public class GroupUseCase { private readonly IGroupRepository _repositoryGroupImpl; public GroupUseCase(IGroupRepository repositoryGroupImpl) { _repositoryGroupImpl = repositoryGroupImpl; } // Приватный метод для валидации имени группы 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 = _repositoryGroupImpl.GetAllGroups() .FirstOrDefault(g => g.Id == groupId); if (existingGroup == null) { throw new ArgumentException("Группа не найдена."); } return existingGroup; } // Метод для получения списка всех групп public List GetAllGroups() { return [.. _repositoryGroupImpl.GetAllGroups() .Select(it => new Group { Id = it.Id, Name = it.Name })]; } public void FindGroupById(int IdGroup) { List GetAllGroups() { return [.. _repositoryGroupImpl .GetAllGroups() .Select( it => new Group { Id = it.Id, Name = it.Name } ) ]; } foreach(var group in GetAllGroups()) { if (IdGroup == group.Id) { Console.WriteLine($"ID группы: {group.Id} Название группы: {group.Name}"); } } } // Метод для добавления новой группы public void AddGroup(string groupName) { ValidateGroupName(groupName); GroupLocalEntity newGroup = new GroupLocalEntity { Name = groupName }; _repositoryGroupImpl.AddGroup(newGroup.Name); } // Метод для изменения названия группы public void UpdateGroup(int groupId, string newGroupName) { ValidateGroupName(newGroupName); var existingGroup = ValidateGroupExistence(groupId); existingGroup.Name = newGroupName; _repositoryGroupImpl.UpdateGroupById(groupId,existingGroup); } } }