2024-11-25 16:59:13 +04:00
|
|
|
|
using Contracts.DTO;
|
|
|
|
|
using Contracts.Mappers;
|
|
|
|
|
using Contracts.Repositories;
|
|
|
|
|
using Contracts.SearchModels;
|
|
|
|
|
using Contracts.Services;
|
|
|
|
|
using Contracts.ViewModels;
|
|
|
|
|
using Services.Support.Exceptions;
|
|
|
|
|
|
|
|
|
|
namespace Services.Domain;
|
|
|
|
|
|
|
|
|
|
public class UserService : IUserService
|
|
|
|
|
{
|
|
|
|
|
private readonly IUserRepo _userRepo;
|
|
|
|
|
|
|
|
|
|
public UserService(IUserRepo userRepo)
|
|
|
|
|
{
|
|
|
|
|
_userRepo = userRepo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<UserViewModel> Delete(UserSearch search)
|
|
|
|
|
{
|
|
|
|
|
var user = await _userRepo.Delete(search);
|
2024-11-26 20:23:59 +04:00
|
|
|
|
if (user == null)
|
|
|
|
|
{
|
|
|
|
|
throw new UserNotFoundException($"Пользователь для удаления не найден");
|
|
|
|
|
}
|
2024-11-25 16:59:13 +04:00
|
|
|
|
return user.ToView();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<UserViewModel> GetDetails(UserSearch search)
|
|
|
|
|
{
|
|
|
|
|
var user = await _userRepo.Get(search);
|
|
|
|
|
if (user == null)
|
|
|
|
|
{
|
|
|
|
|
throw new UserNotFoundException($"Пользователь {search.Name} не найден");
|
|
|
|
|
}
|
|
|
|
|
return user.ToView();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<UserViewModel> UpdateUserData(UserDto user)
|
|
|
|
|
{
|
2024-11-26 20:23:59 +04:00
|
|
|
|
var updatedUser = await _userRepo.Update(user);
|
|
|
|
|
if (updatedUser == null)
|
2024-11-25 16:59:13 +04:00
|
|
|
|
{
|
2024-11-26 20:23:59 +04:00
|
|
|
|
throw new EntityNotFoundException("При обновлении не получилось найти пользователя с id = " + user.Id);
|
2024-11-25 16:59:13 +04:00
|
|
|
|
}
|
|
|
|
|
return updatedUser.ToView();
|
|
|
|
|
}
|
|
|
|
|
}
|