48 lines
1.3 KiB
C#
48 lines
1.3 KiB
C#
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);
|
|
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)
|
|
{
|
|
var existingUser = await _userRepo.Get(new UserSearch() { Name = user.Name });
|
|
if (existingUser == null)
|
|
{
|
|
throw new UserNotFoundException($"Пользователь {user.Name} не найден");
|
|
}
|
|
|
|
var updatedUser = await _userRepo.Update(user);
|
|
return updatedUser.ToView();
|
|
}
|
|
}
|