public Task Invoke() { _logger.LogInformation("> PedidoPagamentoSituacaoJob: Iniciando"); var pedidosRealizados = _pedidoRepository.ObterTodosPedidosPorSituacao(PedidoSituacaoConstant.PEDIDO_REALIZADO); foreach (var pedido in pedidosRealizados) { string situacao = null; var transaction = _gerenciarPagarMe.ObterTransacao(pedido.TransactionId); int toleranciaDias = _configuration.GetValue <int>("Pagamento:PagarMe:BoletoDiaExpiracao") + _configuration.GetValue <int>("Pagamento:PagarMe:BoletoDiaToleranciaVencido"); if (transaction.Status == TransactionStatus.WaitingPayment && transaction.PaymentMethod == PaymentMethod.Boleto && DateTime.Now > pedido.DataRegistro.AddDays(toleranciaDias)) { situacao = PedidoSituacaoConstant.PAGAMENTO_NAO_REALIZADO; _produtoRepository.DevolverProdutosEstoque(pedido); } if (transaction.Status == TransactionStatus.Refused) { situacao = PedidoSituacaoConstant.PAGAMENTO_REJEITADO; _produtoRepository.DevolverProdutosEstoque(pedido); } if (transaction.Status == TransactionStatus.Authorized || transaction.Status == TransactionStatus.Paid) { situacao = PedidoSituacaoConstant.PAGAMENTO_APROVADO; //ENVIAR E-MAIL CONFIRMAÇÃO DO PAGAMENTO _gerenciarEmail.EnviarConfirmacaoPagamento(pedido); } if (transaction.Status == TransactionStatus.Refunded) { situacao = PedidoSituacaoConstant.ESTORNO; _produtoRepository.DevolverProdutosEstoque(pedido); } if (situacao != null) { TransacaoPagarMe transacaoPagarMe = _mapper.Map <Transaction, TransacaoPagarMe>(transaction); transacaoPagarMe.Customer.Gender = (pedido.Cliente.Sexo == "M") ? Gender.Male : Gender.Female; PedidoSituacao pedidoSituacao = new PedidoSituacao(); pedidoSituacao.PedidoId = pedido.Id; pedidoSituacao.Situacao = situacao; pedidoSituacao.Data = transaction.DateUpdated.Value; pedidoSituacao.Dados = JsonConvert.SerializeObject(transacaoPagarMe); _pedidoSituacaoRepository.Cadastrar(pedidoSituacao); pedido.Situacao = situacao; _pedidoRepository.Atualizar(pedido); } } _logger.LogInformation("> PedidoPagamentoSituacaoJob: Finalizado"); return(Task.CompletedTask); }