public async Task <IActionResult> Post(
            [FromServices] IMediator mediator,
            [FromServices] RegisterUserPresenter presenter,
            [FromBody] RegisterUserRequest request)
        {
            if (!ModelState.IsValid)
            {
                presenter.WriteError(ModelState.Values.SelectMany(v => v.Errors).Select(x => x.ErrorMessage).ToArray());
                return(presenter.Result);
            }

            var input = request.ToUserInput();

            await mediator.PublishAsync(input);

            return(presenter.Result);
        }