using Demo.Data.Repository; using Demo.Domain.Models; using Demo.Data.Exceptions; // Подключаем пространство имён для исключений using System; using System.Collections.Generic; using System.Linq; using Demo.domain.Models; namespace Demo.Domain.UseCase { public class UserUseCase { private readonly UserRepositoryImpl _userRepository; private readonly IGroupRepository _groupRepository; public UserUseCase(UserRepositoryImpl userRepository, IGroupRepository groupRepository) { _userRepository = userRepository; _groupRepository = groupRepository; } // Получение всех групп private List GetAllGroups() => _groupRepository.GetAllGroups() .Select(g => new Group { Id = g.Id, Name = g.Name }) .ToList(); // Получение всех пользователей public List GetAllUsers() => _userRepository.GetAllUsers .Join(_groupRepository.GetAllGroups(), user => user.GroupID, group => group.Id, (user, group) => new User { FIO = user.FIO, Guid = user.Guid, Group = new Group { Id = group.Id, Name = group.Name } }) .ToList(); // Удаление пользователя по GUID public bool RemoveUserByGuid(Guid userGuid) { try { _userRepository.DeleteUserByGuid(userGuid); return true; } catch (GuidNotFoundException) { // Логируем ошибку, если нужно return false; } } // Обновление пользователя public User UpdateUser(User user) { try { _userRepository.UpdateUser(user.Guid.ToString(), user.FIO, user.Group.Id); var group = GetAllGroups().FirstOrDefault(g => g.Id == user.Group.Id); if (group == null) { throw new Exception($"Группа с ID {user.Group.Id} не найдена."); } return new User { FIO = user.FIO, Guid = user.Guid, Group = group }; } catch (GuidNotFoundException ex) { throw new Exception("Пользователь не найден.", ex); } catch (ArgumentException ex) { throw new Exception("Некорректный GUID.", ex); } } } }