Exemplo n.º 1
0
 public static PostagemId Map(this GerarCodigoRequest request)
 {
     return(PostagemId.Criar(request.Companhia,
                             request.IdUnidadeNegocio,
                             request.IdSku,
                             request.IdPedido,
                             request.IdPedidoEntrega,
                             request.Funcionario,
                             request.Protocolo));
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }