public async Task <Result <SolicitarAtendimentoResponse> > Handle(SolicitarAtendimentoCommand request, CancellationToken cancellationToken) { var validarRequestResult = ValidarRequest(request); if (validarRequestResult.IsFailure) { return(Result <SolicitarAtendimentoResponse> .Fail(validarRequestResult.Messages)); } var usuarioResult = await ConsultarUsuarioSolicitante(request).ConfigureAwait(false); if (usuarioResult.IsFailure) { return(Result <SolicitarAtendimentoResponse> .Fail(usuarioResult.Messages)); } var gerarNumeroProtocoloResult = await GerarNumeroProtocolo().ConfigureAwait(false); if (gerarNumeroProtocoloResult.IsFailure) { return(Result <SolicitarAtendimentoResponse> .Fail(gerarNumeroProtocoloResult.Messages)); } var registrarNovoProtocoloResult = await RegistrarNovoProtocolo(usuarioResult.Value, gerarNumeroProtocoloResult.Value).ConfigureAwait(false); if (registrarNovoProtocoloResult.IsFailure) { return(Result <SolicitarAtendimentoResponse> .Fail(registrarNovoProtocoloResult.Messages)); } return(Result <SolicitarAtendimentoResponse> .Ok(new SolicitarAtendimentoResponse(registrarNovoProtocoloResult.Value.NumeroProtocolo, registrarNovoProtocoloResult.Value.DataSolicitacao))); }
private static Result ValidarRequest(SolicitarAtendimentoCommand request) { var validator = new SolicitarAtendimentoCommandValidator(); var result = validator.Validate(request); if (!result.IsValid) { return(Result.Fail(result.Errors.Select(x => x.ErrorMessage))); } return(Result.Ok()); }
public async Task <IActionResult> SolicitarAtendimento([FromBody] SolicitarAtendimentoCommand command) { if (command == null) { return(BadRequest()); } var response = await _mediator.Send(command).ConfigureAwait(false); if (response.IsFailure) { return(BadRequest(response.Messages.Select(x => x).ToArray())); } return(Created("", response.Value)); }
private async Task <Result <UsuarioSolicitante> > ConsultarUsuarioSolicitante(SolicitarAtendimentoCommand request) { try { var usuarioResult = await _usuarioSolicitanteServico.ConsultarUsuarioSolicitantePorCPF(request.CPFSolicitante); if (usuarioResult.IsSuccess) { return(Result <UsuarioSolicitante> .Ok(usuarioResult.Value)); } var response = await _mediator.Send(new RegistrarNovoUsuarioSolicitanteCommand(request.EmailSolicitante, request.NomeSolicitante, request.TelefoneSolicitante, request.CPFSolicitante)); if (response.IsFailure) { return(Result <UsuarioSolicitante> .Fail(response.Messages)); } return(Result <UsuarioSolicitante> .Ok(new UsuarioSolicitante { CPFSolicitante = response.Value.CPFSolicitante, EmailSolicitante = response.Value.EmailSolicitante })); } catch (Exception ex) { return(Result <UsuarioSolicitante> .Fail("")); } }