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