public async Task <PutCotacaoCommandResponse> Handle(PutCotacaoCommand request, CancellationToken cancellationToken)
        {
            var response = new PutCotacaoCommandResponse();

            if (!request.IsValid())
            {
                var notifications = new List <Notification>();

                foreach (var item in request.ValidationResult.Errors)
                {
                    var notification = new Notification
                    {
                        Exception = "Notificação.",
                        Message   = item.ErrorMessage
                    };
                    notifications.Add(notification);
                }

                response = GetResponseErro("Cotação com dados inválidos.");
                response.Notification = notifications;
            }
            else
            {
                var cotacao = _mapper.Map <CotacaoEntity>(request.Cotacao);
                cotacao.Id = request.Id;

                if (cotacao.Logradouro == null ||
                    cotacao.Bairro == null ||
                    cotacao.UF == null
                    )
                {
                    var endereco = _viaCepService.GetEndereco(cotacao.CEP);
                    if (!endereco.Result.erro)
                    {
                        cotacao.Logradouro = endereco.Result.Logradouro;
                        cotacao.Bairro     = endereco.Result.Bairro;
                        cotacao.UF         = endereco.Result.Uf;
                    }
                    else
                    {
                        response = GetResponseErro("Cotação não processado ao cep inválido.");
                    }
                }

                var result = _cotacaoRepository.Update(cotacao);

                response = new PutCotacaoCommandResponse
                {
                    Data = new Data
                    {
                        Message = "Cotação atualizada com sucesso.",
                        Status  = Status.Sucessed
                    }
                };
            }
            return(await Task.FromResult(response));
        }
Пример #2
0
        public async Task <IActionResult> Update([FromBody] CotacaoModel2 cotacaoModel)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest());
                }

                if (cotacaoModel.NumeroCotacao == 0)
                {
                    return(BadRequest());
                }

                if (cotacaoModel.Logradouro == "" && cotacaoModel.Bairro == "" && cotacaoModel.UF == "")
                {
                    ViaCepResponseModel viaCepResponse = new ViaCepResponseModel();
                    ViaCepResponseModel endereco       = await viaCepResponse.ViaCepResponse(cotacaoModel.CEP);

                    if (endereco == null)
                    {
                        return(StatusCode(404));
                    }

                    cotacaoModel.Logradouro = endereco.Logradouro;
                    cotacaoModel.Bairro     = endereco.Bairro;
                    cotacaoModel.UF         = endereco.Uf;
                }

                var cotacaoEntity = await _cotacaoRepository.SelectCotacao(cotacaoModel.NumeroCotacao);

                if (cotacaoEntity == null)
                {
                    return(StatusCode(404));
                }

                _mapper.Map(cotacaoModel, cotacaoEntity);

                return(Ok(await _cotacaoRepository.Update(cotacaoEntity)));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex));
            }
        }