Пример #1
0
 public async Task <Resultado <Pedido> > Run(
     [ActivityTrigger]  CriarPedidoComando comando,
     ExecutionContext context,
     ILogger log)
 {
     try
     {
         log.LogInformation("Criando pedido para socio {0}", comando.SocioId);
         return(await _gerenciadorComando.ExecutarAsync(comando));
     }
     catch (Exception ex)
     {
         log.LogCritical(ex, "Falha catrastrófica ao criar pedido para socio {0}", comando.SocioId);
         return(Falha.NovaFalha(Motivo.Novo("FalhaAoCriarPedido", "Falha ao criar pedido")));
     }
 }
Пример #2
0
 public async Task <Resultado <Pedido> > Run(
     [ActivityTrigger]  FecharPedidoComando comando,
     ExecutionContext context,
     ILogger log)
 {
     try
     {
         log.LogInformation("Processo {0} solicitando fechamento do pedido {1}", comando.ProcessoId, comando.PedidoId);
         return(await _gerenciadorComando.ExecutarAsync(comando));
     }
     catch (Exception ex)
     {
         log.LogCritical(ex, "Falha catrastrófica no processo {0} ao fechar pedido {1}", comando.ProcessoId, comando.PedidoId);
         return(Falha.NovaFalha(Motivo.Novo("FalhaAoFecharPedido", "Falha ao fechar pedido")));
     }
 }
Пример #3
0
        public async Task <Resultado <Pedido> > ExecutarAsync(FecharPedidoComando comando)
        {
            var pedido = await _contextoSql.Pedidos.Include(c => c.Itens).FirstOrDefaultAsync(c => c.Id == comando.PedidoId);

            var pagamento = await _contextoSql.Pagamentos.FindAsync(comando.PagamentoId);

            if (pagamento.Status == Pagamento.EStatus.EmAnalise)
            {
                return(Falha.NovaFalha(Motivo.Novo("ErroAoFecharPedido", "Pagamento está em análise")));
            }
            if (pagamento.Status == Pagamento.EStatus.Aprovado)
            {
                pedido.Pago();
            }
            if (pagamento.Status == Pagamento.EStatus.Negado)
            {
                pedido.Cancelado();
            }
            await _contextoSql.SaveChangesAsync();

            return(pedido);
        }
        public async Task <Resultado <Pagamento> > RealizarPagamentoAsync(Pagamento pagamento, Pagador pagador)
        {
            try
            {
                _cliente.DefaultRequestHeaders.Accept.Clear();
                var dto = new
                {
                    Pagador  = pagador,
                    Valor    = pagamento.Valor,
                    PedidoId = pagamento.PedidoId
                };
                var conteudo = new StringContent(JsonConvert.SerializeObject(dto), Encoding.UTF8);
                conteudo.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                var resposta = await _cliente.PostAsync("/api/Cobrancas", conteudo);

                if (!resposta.IsSuccessStatusCode)
                {
                    return(Falha.NovaFalha(Motivo.Novo("", "")));
                }
                var json = await resposta.Content.ReadAsStringAsync();

                var retorno = JsonConvert.DeserializeObject <RetornoDTO>(json);
                if (retorno.Status == 0)
                {
                    return(pagamento.Aprovado(retorno.TransacaoId));
                }
                if (retorno.Status == 1)
                {
                    return(pagamento.Negado(retorno.TransacaoId));
                }
                return(pagamento.EmAnalise(retorno.TransacaoId));
            }
            catch (Exception ex)
            {
                return(Falha.NovaFalha(Motivo.Novo("FalhaAoRealizarCobranca", "Não foi possível realizar a transação")));
            }
        }