public static PostagemId Map(this GerarCodigoRequest request) { return(PostagemId.Criar(request.Companhia, request.IdUnidadeNegocio, request.IdSku, request.IdPedido, request.IdPedidoEntrega, request.Funcionario, request.Protocolo)); }
public async Task <Postagem> Gerar(PostagemId postagemId, string correlationId) { Pedido pedido = await ObterPedido(postagemId, correlationId); Filial filial = await ObterFilial(pedido.CNPJ); Postagem postagem = new Postagem(postagemId, pedido, filial); return(postagem); }
public async Task <GerarCodigoResponse> GerarCodigo(GerarCodigoRequest request) { GerarCodigoResponse response = new GerarCodigoResponse(); try { ValidationResult validationResult = request.Validate(); if (!validationResult.IsValid) { response.Valido = false; foreach (ValidationFailure failure in validationResult.Errors) { response.AdicionarMensagemErro(TipoMensagem.Validacao, failure.ErrorMessage); } } else { string correlationId = request.GetHeader(Const.CorrelationID); PostagemId postagemId = request.Map(); Postagem postagem = await _postagemFactory.Gerar(postagemId, correlationId); await postagem.CancelarCodigoExistente(correlationId); BusinessResult result = await postagem.CriarCodigo(correlationId); if (!result.Valido) { response.Valido = result.Valido; response.AdicionarMensagemErro(TipoMensagem.ErroNegocio, result.Mensagens.First().Conteudo); } else { await postagem.AtualizarCodigo(correlationId); response.Postagem = postagem; } } } catch (ApplicationException appEx) { response.Valido = false; response.AdicionarMensagemErro(TipoMensagem.ErroNegocio, appEx.Message); } catch (Exception ex) { response.Valido = false; response.AdicionarMensagemErro(TipoMensagem.ErroAplicacao, ex.StackTrace); } return(response); }
private async Task <Pedido> ObterPedido(PostagemId postagemId, string correlationId) { Pedido pedido = await _pedidoRepository.Obter(postagemId.IdUnidadeNegocio, postagemId.IdPedido); if (pedido == null) { ConsultarPedidoRequest request = postagemId.Map(); request.AddHeader(Const.CorrelationID, correlationId); ConsultarPedidoResponse response = await _pedidoHttpRepository.Obter(request); if (response.Valido) { pedido = response.Map(); } else { throw new ApplicationException("Pedido não encontrado."); } } return(pedido); }