83 lines
2.8 KiB
C#
83 lines
2.8 KiB
C#
|
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<Group> GetAllGroups() =>
|
|||
|
_groupRepository.GetAllGroups()
|
|||
|
.Select(g => new Group { Id = g.Id, Name = g.Name })
|
|||
|
.ToList();
|
|||
|
|
|||
|
// Получение всех пользователей
|
|||
|
public List<User> 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);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|