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)); }
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)); } }