private void GerarPassagemPendente() { try { var obterConfiguracaoSistemaQuery = new ObterConfiguracaoSistemaQuery(false, _readOnlyDataSource, _dataSource); var configuracaoSistemaTtl = obterConfiguracaoSistemaQuery.Execute("ConfiguracaoTtlEmMinutos"); var configuracaoQtdMaximaPassagensParaProcessar = obterConfiguracaoSistemaQuery.Execute("QuantidadeMaximaPassagensParaProcessar"); if (configuracaoSistemaTtl != null) { if (configuracaoQtdMaximaPassagensParaProcessar != null) { var tempoMaximoTtlEmMinutos = int.Parse(configuracaoSistemaTtl.Valor); var qtdMaximaPassagens = int.Parse(configuracaoQtdMaximaPassagensParaProcessar.Valor); Log.Debug("Obtendo Detalhes Pendentes de processamento."); var qryDetalhePassagemPendenteEstacionamento = new ListarDetalhePassagemPendenteEstacionamentoQuery(_dataSourcePark); var detalhesPassagemPendenteEstacionamento = qryDetalhePassagemPendenteEstacionamento.Execute(new ListarDetalhePassagemPendenteEstacionamentoFilter { QuantidadeMaximaPassagens = qtdMaximaPassagens, QuantidadeMinutosTtl = tempoMaximoTtlEmMinutos }).ToList(); Log.Info($"Foram encontrados {detalhesPassagemPendenteEstacionamento.Count()} Detalhe disponíveis para processamento."); if (detalhesPassagemPendenteEstacionamento.Any()) { Log.Info($"Foram encontradas {detalhesPassagemPendenteEstacionamento.Count()} Detalhes pendentes para envio ao barramento."); var sucessoEnvio = EnviarDetalhesPassagemPendenteEstacionamentoPendentes(detalhesPassagemPendenteEstacionamento.ToList()); if (sucessoEnvio) { var sucessoAtualizacaoPassagemPendenteEstacionamento = AtualizarTtlDetalhesPassagemPendenteEstacionamento(detalhesPassagemPendenteEstacionamento, tempoMaximoTtlEmMinutos); Log.Info(sucessoAtualizacaoPassagemPendenteEstacionamento ? "Sucesso na atualização do TTL das passagens pendentes." : "Houve falha na atualização do TTL das passagens pendentes."); } else { Log.Info("Houve falha no envio das mensagens para o barramento"); } } } else { Log.Info("Parâmetro QtdMaximaPassagensParaProcessar não definido."); } } else { Log.Info("Parâmetro ConfiguracaoTtlEmMinutos não definido."); } } catch (Exception e) { Log.Error(string.Format(GeradorPassagemPendenteParkResource.Error, e.Message), e); } }
public GeradorPassagemReprovadaEdiResponse Execute(GeradorPassagemReprovadaPorTransacaoParceiroExceptionEdiRequest request) { var response = new GeradorPassagemReprovadaEdiResponse { PassagemReprovadaEdi = new PassagemReprovadaEDI() }; Mapper.Map(request.PassagemPendenteEdi, response.PassagemReprovadaEdi); response.PassagemReprovadaEdi.CodigoRetorno = request.CodigoRetornoTransacaoTrf; var queryConfigSistema = new ObterConfiguracaoSistemaQuery(true, _dataSourceConectSysReadOnly, _dataSourceFallBack); var parceiroId = queryConfigSistema.Execute(ConfiguracaoSistemaModel.CodigoParceiroRoadCard); response.PassagemReprovadaEdi.TransacaoRecusadaParceiro = new TransacaoRecusadaParceiroEdi { DetalheTRNId = request.PassagemPendenteEdi.DetalheTrnId, CodigoRetornoTransacaoTRF = request.CodigoRetornoTransacaoTrf, DataPassagemNaPraca = request.PassagemPendenteEdi.DataPassagem, ParceiroId = parceiroId.Valor.TryToInt(), Valor = request.PassagemPendenteEdi.Valor, ViagemAgendada = new DetalheViagem { Id = request.DetalheViagemId }, DataEnvioAoParceiro = null }; response.PassagemReprovadaEdi.Veiculo = request.PassagemPendenteEdi.Adesao.Veiculo; return(response); }
public ProcessadorPassagemAprovadaParkHandler() { _dataSource = new ServiceBusDataSourceBase("TransacoesServiceBus", ServiceBusUtil.FactoriesCount); _dataSourceConectSysReadOnly = AdoDataSourceProvider.GetDataSource(DbConnectionDataSourceType.ConectSysReadOnly); _dataSourceFallBack = AdoDataSourceProvider.GetDataSource(DbConnectionDataSourceType.ConectSys); if (!string.IsNullOrEmpty(_chaveCriptografiaBanco)) { return; } var querySistema = new ObterConfiguracaoSistemaQuery(true, _dataSourceConectSysReadOnly, _dataSourceFallBack); _chaveCriptografiaBanco = querySistema.Execute(ConfiguracaoSistemaModel.ChaveCriptografiaBanco).Valor; }
private bool HorarioDePassagemEIncompativel() { var queryConfiguracaoSistema = new ObterConfiguracaoSistemaQuery(true, _dataSourceConectSysReadOnly, _dataSourceFallBack); var configuracaoHorarioPassagem = queryConfiguracaoSistema.Execute(ConfiguracaoSistemaModel.HorarioDePassagem).Valor.TryToInt(); var dataReferencia = _passagemPendenteEdi.DataPassagem.AddSeconds(-_passagemPendenteEdi.Praca.TempoRetornoPraca).AddMinutes(-(configuracaoHorarioPassagem + 5)); var obterIdUltimaTransacaoPassagem = new ObterIdUltimaTransacaoPassagemQuery(); var idUltimaTransacaoPassagem = obterIdUltimaTransacaoPassagem.Execute(new DetalheTrnFilter { OBUId = _passagemPendenteEdi.Tag.OBUId, CodigoPraca = _passagemPendenteEdi.Praca.CodigoPraca, Data = dataReferencia }); if ((idUltimaTransacaoPassagem ?? 0) > 0) { var obterDetalheTrnQuery = new ObterDetalheTrnPorTransacaoIdQuery(); var detalheTrn = obterDetalheTrnQuery.Execute(idUltimaTransacaoPassagem ?? 0); var diferencaMinutosAceito = _passagemPendenteEdi.DataPassagem.Subtract(detalheTrn.Data).TotalMinutes; if (diferencaMinutosAceito < 0) { diferencaMinutosAceito = diferencaMinutosAceito * -1; } if (diferencaMinutosAceito < _passagemPendenteEdi.Praca.TempoRetornoPraca) { if (detalheTrn.StatusCobrancaId == (int)StatusCobranca.Provisoria && _passagemPendenteEdi.StatusCobranca == StatusCobranca.Confirmacao) { return(false); } return(true); } } var verificarSeTempoDePassagemEhInValido = new TempoDePassagemEhInValidoQuery(_dataSourceConectSysReadOnly); var tempoDePassagemEhInValido = verificarSeTempoDePassagemEhInValido.Execute(_passagemPendenteEdi); if (_passagemPendenteEdi.StatusCobranca != StatusCobranca.Confirmacao) { return(tempoDePassagemEhInValido); } return(false); }
private void ValorTransacaoUltrapassaLimitePermitido() { var obterConfiguracaoSistemaQuery = new ObterConfiguracaoSistemaQuery(true, _dataSourceConectSysReadOnly, _dataSourceFallBack); var configuracao = obterConfiguracaoSistemaQuery.Execute(ConfiguracaoSistemaModel.TransacaoEstacionamentoLimiteValor); if (configuracao != null) { var valorLimite = configuracao.Valor.TryToDecimal(); if (PassagemPendenteEstacionamento.Valor > valorLimite) { throw new ParkException(PassagemPendenteEstacionamento, EstacionamentoErros.DataTransacaoUltrapassaLimitePermitido); } } }
private void ValidarDataTransacaoUltrapassaLimitePermitido() { var obterConfiguracaoSistemaQuery = new ObterConfiguracaoSistemaQuery(true, _dataSourceConectSysReadOnly, _dataSourceFallBack); var configuracao = obterConfiguracaoSistemaQuery.Execute(ConfiguracaoSistemaModel.TransacaoEstacionamentoLimiteDias); if (configuracao != null) { var quantidadeDias = configuracao.Valor.TryToInt(); if (PassagemPendenteEstacionamento.DataPassagem > DateTime.Now.AddDays(quantidadeDias) || PassagemPendenteEstacionamento.DataPassagem < DateTime.Now.AddDays(-quantidadeDias)) { throw new ParkException(PassagemPendenteEstacionamento, EstacionamentoErros.DataTransacaoUltrapassaLimitePermitido); } } }
/// <summary> /// Obtem quantidade máxima de passagens para processar. /// </summary> /// <param name="obterConfiguracaoSistemaQuery">ObterConfiguracaoSistemaQuery.</param> /// <returns>Quantidade máxima de passagens para processar.</returns> private int ObterQtdMaximaPassagensParaProcessaar(ObterConfiguracaoSistemaQuery obterConfiguracaoSistemaQuery) { Log.Debug(String.Format(GeradorPassagemPendenteResource.ObterConfiguracaoSistema, "QuantidadeMaximaPassagensParaProcessar")); var configuracaoQtdMaximaPassagensParaProcessar = obterConfiguracaoSistemaQuery.Execute("QuantidadeMaximaPassagensParaProcessar"); if (configuracaoQtdMaximaPassagensParaProcessar == null) { throw new ArgumentNullException("configuracaoQtdMaximaPassagensParaProcessar", String.Format(GeradorPassagemPendenteResource.NaoExisteConfiguracaoSistema, "QuantidadeMaximaPassagensParaProcessar")); } var qtdMaximaPassagensParaProcessar = 0; if (!int.TryParse(configuracaoQtdMaximaPassagensParaProcessar.Valor, out qtdMaximaPassagensParaProcessar)) { throw new ArgumentException(String.Format(GeradorPassagemPendenteResource.ConfiguracaoSistemaInvalida, "QuantidadeMaximaPassagensParaProcessar", configuracaoQtdMaximaPassagensParaProcessar.Valor), "qtdMaximaPassagensParaProcessar"); } return(qtdMaximaPassagensParaProcessar); }
/// <summary> /// Obtem o tempo máximo do Ttl em minutos. /// </summary> /// <param name="query">ObterConfiguracaoSistemaQuery</param> /// <returns>Tempo máximo do Ttl em minutos.</returns> private int ObterTempoMaximoTtlEmMinutos(ObterConfiguracaoSistemaQuery query) { Log.Debug(String.Format(GeradorPassagemPendenteResource.ObterConfiguracaoSistema, "ConfiguracaoItemPendenteProcessamentoTtlEmMinutos")); var configuracaoSistemaTtl = query.Execute("ConfiguracaoItemPendenteProcessamentoTtlEmMinutos"); if (configuracaoSistemaTtl == null) { throw new ArgumentNullException("configuracaoSistemaTtl", String.Format(GeradorPassagemPendenteResource.NaoExisteConfiguracaoSistema, "ConfiguracaoItemPendenteProcessamentoTtlEmMinutos")); } var tempoMaximoTtlEmMinutos = 0; if (!int.TryParse(configuracaoSistemaTtl.Valor, out tempoMaximoTtlEmMinutos)) { throw new ArgumentException(String.Format(GeradorPassagemPendenteResource.ConfiguracaoSistemaInvalida, "ConfiguracaoItemPendenteProcessamentoTtlEmMinutos", configuracaoSistemaTtl.Valor) , "tempoMaximoTtlEmMinutos"); } return(tempoMaximoTtlEmMinutos); }
private decimal ObterLimiteDeCredito() { var queryConfiguracaoSistema = new ObterConfiguracaoSistemaQuery(true, _dataSourceConectSysReadOnly, _dataSourceFallBack); var configuracaoSaldoMinimoNegativo = queryConfiguracaoSistema.Execute(ConfiguracaoSistemaModel.SaldoMinimoNegativo).Valor.TryToDecimal(); switch (_passagemPendenteEdi.Adesao.Plano) { case PlanoDePagamento.PrePago: return(0); case PlanoDePagamento.RecargaAutomatica: case PlanoDePagamento.PlanoMensalidade: case PlanoDePagamento.ValorVariavel: return(configuracaoSaldoMinimoNegativo * -1); case PlanoDePagamento.PrePagoEmpresarial: case PlanoDePagamento.PosPagoEmpresarial: return(ObterLimiteDeCreditoConfiguracaoPlanoCliente()); } throw new EdiDomainException("Plano não configurado.", _passagemPendenteEdi); }