Esempio n. 1
0
        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)));
        }
Esempio n. 2
0
        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());
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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(""));
            }
        }