public static ActionResult ToActionResult(FailureCommandResult failureCommandResult) { var problemDetails = new ProblemDetails { Type = "https://tools.ietf.org/html/rfc7231#section-6.6.1", Status = StatusCodes.Status500InternalServerError, Title = "Error", Detail = failureCommandResult.Reason }; return(new ObjectResult(problemDetails) { StatusCode = StatusCodes.Status500InternalServerError, ContentTypes = { "application/problem+json", "application/problem+xml" } }); }
public async Task <IActionResult> RequestSessionAsync([FromServices] RequestSessionCommandHandler handler, [FromBody] RequestSessionModel requestSessionModel, CancellationToken cancellationToken) { var command = new RequestSession( new List <PersonId>(requestSessionModel.Speakers.Select(g => (PersonId)g)), requestSessionModel.Title, requestSessionModel.Description, requestSessionModel.Tags, requestSessionModel.StartTime, requestSessionModel.EndTime); var(result, events) = await handler.ExecuteAsync(command, cancellationToken); await _eventDispatcher.DispatchAsync(events); return(result switch { SuccessCommandResult src => Accepted(), ValidationFailureCommandResult vfcr => this.ValidationProblem(vfcr), FailureCommandResult fcr => this.Problem(fcr), _ => Problem() });
public static ActionResult Problem(this ControllerBase controller, FailureCommandResult commandResult) { return(controller.Problem(commandResult.Reason)); }