コード例 #1
0
        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));
        }