40 lines
1.6 KiB
C#
40 lines
1.6 KiB
C#
using FluentValidation;
|
|
using FluentValidation.Results;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using UserManager.Application.Features.Users.Interfaces;
|
|
using UserManager.Application.Features.Users.Requests;
|
|
using UserManager.Application.Features.Users.Responses;
|
|
|
|
namespace UserManager.API.Controllers
|
|
{
|
|
[ApiController]
|
|
[Route("api/[controller]")]
|
|
public class UserController(ILogger<UserController> logger, IUserService userService, IValidator<CreateUserRequestDto> createUserValidator) : ControllerBase
|
|
{
|
|
private readonly ILogger<UserController> _logger = logger;
|
|
private readonly IUserService _userService = userService;
|
|
|
|
private readonly IValidator<CreateUserRequestDto> _createUserValidator = createUserValidator;
|
|
|
|
[HttpPost(Name = "CreateUser")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
public async Task<ActionResult<CreateUserResponseDto>> CreateUserAsync(CreateUserRequestDto request)
|
|
{
|
|
_logger.LogInformation("Creating user with first name {FirstName} and last name {LastName}", request.FirstName, request.LastName);
|
|
|
|
ValidationResult? validationResult = await _createUserValidator.ValidateAsync(request);
|
|
|
|
if (!validationResult.IsValid)
|
|
{
|
|
return BadRequest(validationResult.ToDictionary());
|
|
}
|
|
else
|
|
{
|
|
CreateUserResponseDto response = await _userService.CreateUserAsync(request);
|
|
return Ok(response);
|
|
}
|
|
}
|
|
}
|
|
}
|