74 lines
1.8 KiB
C#
74 lines
1.8 KiB
C#
using Contracts.DTO;
|
|
using Contracts.SearchModels;
|
|
using Contracts.Services;
|
|
using Contracts.ViewModels;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Services.Support.Exceptions;
|
|
|
|
namespace Controllers.Controllers;
|
|
|
|
[ApiController]
|
|
[Route("api/[controller]")]
|
|
public class UserController : ControllerBase
|
|
{
|
|
private readonly IUserService _userService;
|
|
|
|
public UserController(IUserService userService)
|
|
{
|
|
_userService = userService;
|
|
}
|
|
[HttpGet]
|
|
public async Task<ActionResult<UserViewModel>> GetUser([FromQuery] UserSearch search)
|
|
{
|
|
try
|
|
{
|
|
var user = await _userService.GetDetails(search);
|
|
return Ok(user);
|
|
}
|
|
catch (UserNotFoundException ex)
|
|
{
|
|
return NotFound(ex.Message);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return StatusCode(500, ex.Message);
|
|
}
|
|
}
|
|
|
|
[HttpPatch]
|
|
public async Task<ActionResult<UserViewModel>> UpdateUser([FromBody] UserDto user)
|
|
{
|
|
try
|
|
{
|
|
var updatedUser = await _userService.UpdateUserData(user);
|
|
return Ok(updatedUser);
|
|
}
|
|
catch (UserNotFoundException ex)
|
|
{
|
|
return NotFound(ex.Message);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return StatusCode(500, ex.Message);
|
|
}
|
|
}
|
|
|
|
[HttpDelete]
|
|
public async Task<ActionResult<UserViewModel>> DeleteUser([FromQuery] UserSearch search)
|
|
{
|
|
try
|
|
{
|
|
var deletedUser = await _userService.Delete(search);
|
|
return Ok(deletedUser);
|
|
}
|
|
catch (UserNotFoundException ex)
|
|
{
|
|
return NotFound(ex.Message);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return StatusCode(500, ex.Message);
|
|
}
|
|
}
|
|
}
|