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