public MotivoNaoCompensado Validate(PassagemPendenteArtesp passagemPendenteArtesp)
        {
            var motivoNaoCompensado = MotivoNaoCompensado.SemMotivoNaoCompensado;

            if (passagemPendenteArtesp.NumeroReenvio <= 0)
            {
                return(motivoNaoCompensado);
            }


            var passagemOriginalId = DataBaseConnection.HandleExecution(_idPassagemImediatamenteAnteriorQuery.Execute, passagemPendenteArtesp);


            if (passagemOriginalId == null && passagemPendenteArtesp.MotivoSemValor == MotivoSemValor.CobrancaIndevida)
            {
                return(MotivoNaoCompensado.DadosInvalidos);
            }


            if (passagemOriginalId != null && passagemOriginalId > 0)
            {
                var transacaoRecusada = DataBaseConnection.HandleExecution(_transacaoRecusadaPorPassagemIdQuery.Execute, passagemOriginalId.Value);

                if (transacaoRecusada != null && passagemPendenteArtesp.MotivoSemValor == MotivoSemValor.CobrancaIndevida)
                {
                    return(MotivoNaoCompensado.Isento);
                }
            }

            return(motivoNaoCompensado);
        }
Ejemplo n.º 2
0
        private bool PossuiViagemAgendadaAnterior(PassagemAnteriorValidaDto passagemOriginal
                                                  , PassagemPendenteArtesp passagemPendenteArtesp
                                                  , List <DetalheViagem> detalhesViagem)
        {
            if (passagemOriginal == null)
            {
                return(false);
            }

            long?viagemId = null;

            if (detalhesViagem != null && detalhesViagem.Any())
            {
                viagemId = detalhesViagem.FirstOrDefault().Viagem.Id;
            }


            var viagens = _passagemValePedagioValidator.ObterViagensAgendadas(passagemPendenteArtesp, viagemId);

            if (viagens != null && viagens.Any())
            {
                return(true);
            }

            //if (DetalhesViagens != null && DetalhesViagens.Any(c => c.StatusDetalheViagem == StatusDetalheViagem.Criada))
            //    return true;

            return(false);
        }
        public MotivoNaoCompensado Validate(PassagemPendenteArtesp passagemPendenteArtesp)
        {
            var motivoNaoCompensado = MotivoNaoCompensado.SemMotivoNaoCompensado;

            if (passagemPendenteArtesp.Adesao.DataCancelamento != null)
            {
                return(motivoNaoCompensado);
            }

            var passagemIsenta = PassagemIsenta(passagemPendenteArtesp);

            if (passagemIsenta)
            {
                return(motivoNaoCompensado);
            }

            var possuiSaldoSuficiente = VerificarSaldo(passagemPendenteArtesp);

            if (!possuiSaldoSuficiente)
            {
                return(VerificarBloqueioPraca(passagemPendenteArtesp));
            }

            return(motivoNaoCompensado);
        }
Ejemplo n.º 4
0
        public TransacaoPassagemArtesp ValidarEstornoSeNecessario(PassagemPendenteArtesp passagemPendenteArtesp,
                                                                  List <DetalheViagem> viagens)
        {
            if (passagemPendenteArtesp.TransacaoPassagemIdAnterior > 0)
            {
                var obterPassagemAnteriorValida =
                    new ObterPassagemAnteriorValidaQuery();

                var passagemOriginal = DataBaseConnection.HandleExecution(obterPassagemAnteriorValida.Execute, new ObterPassagemAnteriorValidaCompletaFilter(passagemPendenteArtesp.Conveniado.Id ?? 0,
                                                                                                                                                             passagemPendenteArtesp.NumeroReenvio,
                                                                                                                                                             passagemPendenteArtesp.ConveniadoPassagemId,
                                                                                                                                                             passagemPendenteArtesp.Conveniado.CodigoProtocoloArtesp));

                if (passagemOriginal != null &&
                    passagemPendenteArtesp.NumeroReenvio > passagemOriginal.Reenvio &&
                    !PossuiViagemAgendadaAnterior(passagemOriginal, passagemPendenteArtesp, viagens))
                {
                    var obterTransacaoPassagem = new ObterTransacaoPassagemPorTransacaoIdQuery();

                    TransacaoAnterior = DataBaseConnection.HandleExecution(obterTransacaoPassagem.Execute, passagemPendenteArtesp.TransacaoPassagemIdAnterior);

                    Estornar(SomenteInformacoesAlteradas(passagemPendenteArtesp, passagemOriginal), passagemPendenteArtesp.TransacaoPassagemIdAnterior);
                }
            }
            return(TransacaoAnterior);
        }
        public void Definir(PassagemPendenteArtesp passagemPendenteArtesp)
        {
            var codigoCategoria = passagemPendenteArtesp.CategoriaCobrada?.Codigo ?? passagemPendenteArtesp.CategoriaDetectada.Codigo;
            var categorias      = CategoriaVeiculoCacheRepository.Listar();
            var categoria       = categorias.FirstOrDefault(c => c.Codigo == codigoCategoria);

            passagemPendenteArtesp.CategoriaUtilizada =
                new CategoriaVeiculo {
                Id     = categoria?.CategoriaVeiculoId,
                Codigo = categoria?.Codigo ?? 0
            };

            var listaDeParaCategoriaVeiculo =
                DataBaseConnection.HandleExecution(_listaDeParaCategoriaVeiculoPorIdQuery.Execute, passagemPendenteArtesp.Conveniado.ListaDeParaCategoriaVeiculoId);


            if (listaDeParaCategoriaVeiculo != null && listaDeParaCategoriaVeiculo.ValidarLista())
            {
                var itemListaDePara = DataBaseConnection.HandleExecution(_itemListaDeParaPorCodigoEntradaQuery.Execute, codigoCategoria);

                if (itemListaDePara != null && itemListaDePara.ValidarLista()) //  definição por itemDeParaUtilizado
                {
                    categoria = categorias.FirstOrDefault(
                        c => c.CategoriaVeiculoId == itemListaDePara.CategoriaVeiculoId);

                    passagemPendenteArtesp.CategoriaUtilizada =
                        new CategoriaVeiculo {
                        Id     = categoria?.CategoriaVeiculoId,
                        Codigo = categoria?.Codigo ?? 0
                    };
                    passagemPendenteArtesp.ItemListaDeParaUtilizado = itemListaDePara.ItemListaDeParaId;
                }
            }
        }
Ejemplo n.º 6
0
        public MotivoNaoCompensado Validate(PassagemPendenteArtesp passagemPendenteArtesp)
        {
            var motivoNaoCompensado = MotivoNaoCompensado.SemMotivoNaoCompensado;

            var filter = new ObterCountTransacaoPassagemPorHorarioDePassagemManualFilter {
                PassagemPendenteArtesp = passagemPendenteArtesp
            };

            filter.tempoLimite = _quantidadeDiasLimiteEstornoPassagem;

            var retorno = DataBaseConnection.HandleExecution(_countTransacaoPassagemManualHorarioIncompativelNaMesmaPracaQuery.Execute, filter);

            if (retorno)
            {
                return(MotivoNaoCompensado.PassagemManualHorarioIncompativelNaMesmaPraca);
            }


            retorno = DataBaseConnection.HandleExecution(_countTransacaoPassagemPorHorarioDePassagemManualQuery.Execute, filter);
            if (retorno)
            {
                return(MotivoNaoCompensado.PassagemManualHorarioIncompativelPracaDiferente);
            }

            return(motivoNaoCompensado);
        }
        public MotivoNaoCompensado Validate(PassagemPendenteArtesp passagemPendenteArtesp)
        {
            var motivoNaoCompensado = MotivoNaoCompensado.SemMotivoNaoCompensado;

            if (passagemPendenteArtesp.MotivoSemValor == MotivoSemValor.NaoSeAplica && passagemPendenteArtesp.Valor == 0)
            {
                return(MotivoNaoCompensado.ValorInvalido);
            }

            if (passagemPendenteArtesp.Conveniado.HabilitarValidacaoTarifa)
            {
                decimal?valorTarifa = DataBaseConnection.HandleExecution(_tarifaPorPracaECategoria.Execute, passagemPendenteArtesp);

                if (passagemPendenteArtesp.Tag.Grupo == Grupo.Isento || passagemPendenteArtesp.Tag.Grupo == Grupo.IsentoPelaArtesp)
                {
                    return(motivoNaoCompensado);
                }

                if (valorTarifa != passagemPendenteArtesp.Valor)
                {
                    return(MotivoNaoCompensado.ValorInvalido);
                }
            }

            return(motivoNaoCompensado);
        }
        public void Validate(PassagemPendenteArtesp passagemPendenteArtesp)
        {
            if (passagemPendenteArtesp.NumeroReenvio > 0)
            {
                passagemPendenteArtesp.TransacaoPassagemIdAnterior = DataBaseConnection.HandleExecution(_transacaoPassagemIdAnteriorValidaQuery.Execute, passagemPendenteArtesp);

                if (passagemPendenteArtesp.TransacaoPassagemIdAnterior > 0)
                {
                    var transacaoOriginal = DataBaseConnection.HandleExecution(_transacaoPassagemPorTransacaoIdQuery.Execute, passagemPendenteArtesp.TransacaoPassagemIdAnterior);

                    var passagemAnteriorFilter = new ObterPassagemAnteriorValidaCompletaFilter(passagemPendenteArtesp.Conveniado.Id ?? 0,
                                                                                               passagemPendenteArtesp.NumeroReenvio,
                                                                                               passagemPendenteArtesp.ConveniadoPassagemId,
                                                                                               passagemPendenteArtesp.Conveniado.CodigoProtocoloArtesp);

                    var passagemOriginal = DataBaseConnection.HandleExecution(_passagemAnteriorValidaQuery.Execute, passagemAnteriorFilter);

                    if (passagemOriginal != null && passagemPendenteArtesp.NumeroReenvio > passagemOriginal.Reenvio &&
                        PassagemJaProcessadaAnteriormente(passagemOriginal, passagemPendenteArtesp) && transacaoOriginal != null)
                    {
                        throw new PassagemInvalidaNoSysException(
                                  ResultadoPassagem.CompensadoPreviamente,
                                  passagemPendenteArtesp,
                                  MotivoNaoCompensado.SemMotivoNaoCompensado,
                                  transacaoOriginal.Id ?? 0,
                                  passagemOriginal.Valor,
                                  transacaoOriginal.DataRepasse,
                                  passagemOriginal.PassagemId);
                    }
                }
            }
        }
Ejemplo n.º 9
0
 private bool SomenteInformacoesAlteradas(PassagemPendenteArtesp passagemNova, PassagemAnteriorValidaDto passagemAntiga)
 {
     return(passagemAntiga.Data == passagemNova.DataPassagem &&
            passagemAntiga.Valor == passagemNova.Valor &&
            passagemAntiga.CodigoPraca == passagemNova.Praca.CodigoPraca &&
            passagemAntiga.CodigoPista == passagemNova.Pista.CodigoPista);
 }
Ejemplo n.º 10
0
        public PassagemPendenteArtesp CarregarPassagemPendenteArtesp(PassagemPendenteArtesp passagemPendenteArtesp)
        {
            Log.Debug($"Passagem ID: {passagemPendenteArtesp.MensagemItemId} - Fluxo: GeradorPassagemHandler | Verificar Passagem existente.");

            var passagemId = DataBaseConnection.HandleExecution(_passagemIdPorMensagemItemIdQuery.Execute, passagemPendenteArtesp.MensagemItemId);

            if (passagemId > 0)
            {
                // carregar passagem da base de dados
                Log.Debug($"Passagem ID: {passagemPendenteArtesp.MensagemItemId} - Fluxo: GeradorPassagemHandler | Carregando Passagem existente.");

                var passagemCompletaFilter = new ObterPassagemCompletaFilter(passagemPendenteArtesp, passagemId);
                DataBaseConnection.HandleExecution(_passagemCompletaPorPassagemIdQuery.Execute, passagemCompletaFilter);
            }
            else
            {
                // criar passagem baseado no passagem pendente
                Log.Debug($"Passagem ID: {passagemPendenteArtesp.MensagemItemId} - Fluxo: GeradorPassagemHandler | Criando Passagem Completa.");
                DataBaseConnection.HandleExecution(_criarPassagemCompletaQuery.Execute, passagemPendenteArtesp);
            }

            passagemPendenteArtesp.PossuiSolicitacaoImagem = (passagemPendenteArtesp.Adesao.Tag.SolicitacaoImagem.Id ?? 0) > 0;

            Log.Debug($"Passagem ID: {passagemPendenteArtesp.MensagemItemId} - Fluxo: GeradorPassagemHandler | DefinirCategoriaUtilizadaArtesp");
            _definirCategoriaUtilizadaArtesp.Definir(passagemPendenteArtesp);

            return(passagemPendenteArtesp);
        }
 public ObterPassagemAnteriorValidaCompletaFilter(PassagemPendenteArtesp passagemPendenteArtesp)
 {
     PassagemPendenteArtesp = passagemPendenteArtesp;
     ConveniadoId           = passagemPendenteArtesp?.Conveniado?.Id ?? 0;
     Reenvio = passagemPendenteArtesp?.NumeroReenvio ?? 0;
     CodigoPassagemConveniado = passagemPendenteArtesp?.ConveniadoPassagemId ?? 0;
     CodigoProtocoloArtesp    = passagemPendenteArtesp?.Conveniado?.CodigoProtocoloArtesp ?? 0;
 }
Ejemplo n.º 12
0
 public GeradorPassagemProcessadaMensageriaMessage(ResultadoPassagem resultadoPassagem
                                                   , PassagemPendenteArtesp passagemPendenteArtesp
                                                   , MotivoNaoCompensado motivoNaoCompensado)
 {
     ResultadoPassagem      = resultadoPassagem;
     PassagemPendenteArtesp = passagemPendenteArtesp;
     MotivoNaoCompensado    = motivoNaoCompensado;
 }
Ejemplo n.º 13
0
        private IList <DetalheViagem> RecriarEstruturaAgendamento(PassagemPendenteArtesp passagemPendenteArtesp)
        {
            var retorno = new List <DetalheViagem>();


            var filtroParaPlacaDataPassagemETransacaoIdOriginal = new PlacaDataPassagemETransacaoIdOriginalFilter()
            {
                Placa               = passagemPendenteArtesp.Placa,
                DataPassagem        = passagemPendenteArtesp.DataPassagem,
                TransacaoIdOriginal = passagemPendenteArtesp.TransacaoPassagemIdAnterior
            };

            var viagens = DataBaseConnection.HandleExecution(_viagemAgendadaOriginalQuery.Execute, filtroParaPlacaDataPassagemETransacaoIdOriginal);

            foreach (var agendamento in viagens)
            {
                // update
                retorno.Add(new DetalheViagem
                {
                    Id = agendamento.Id,
                    CodigoPracaRoadCard   = agendamento.CodigoPracaRoadCard,
                    DataCancelamento      = agendamento.DataCancelamento,
                    PracaId               = agendamento.PracaId,
                    Sequencia             = agendamento.Sequencia,
                    StatusDetalheViagemId = (int)StatusDetalheViagem.CanceladaPorReenvio, // 5
                    ValorPassagem         = agendamento.ValorPassagem,
                    Viagem = new Viagem()
                    {
                        Id                   = agendamento.ViagemId,
                        CnpjEmbarcador       = agendamento.CnpjEmbarcador,
                        CodigoViagemParceiro = agendamento.CodigoViagemParceiro,
                        Embarcador           = agendamento.Embarcador
                    }
                });

                var detalheCopia = new DetalheViagem
                {
                    Id                    = null,
                    PracaId               = agendamento.PracaId,
                    CodigoPracaRoadCard   = agendamento.CodigoPracaRoadCard,
                    Sequencia             = agendamento.Sequencia,
                    ValorPassagem         = agendamento.ValorPassagem,
                    StatusDetalheViagemId = (int)StatusDetalheViagem.Criada, // 1
                    Viagem                = new Viagem()
                    {
                        Id                   = agendamento.ViagemId,
                        CnpjEmbarcador       = agendamento.CnpjEmbarcador,
                        CodigoViagemParceiro = agendamento.CodigoViagemParceiro,
                        Embarcador           = agendamento.Embarcador
                    }
                };

                retorno.Add(detalheCopia); // insert
            }

            return(retorno.ToList());
        }
Ejemplo n.º 14
0
        public MotivoNaoCompensado Validate(PassagemPendenteArtesp passagemPendenteArtesp)
        {
            var retorno = DataBaseConnection.HandleExecution(_countTransacaoExistenteNoPeriodoQuery.Execute, passagemPendenteArtesp);

            if (retorno)
            {
                return(MotivoNaoCompensado.PassagemAutomaticaHorarioIncompativel);
            }

            return(MotivoNaoCompensado.SemMotivoNaoCompensado);
        }
        public bool Validate(PassagemPendenteArtesp passagemPendenteArtesp)
        {
            var passagemRepetida =
                DataBaseConnection.HandleExecution(_passagemPorCodigoPassagemConveniadoQuery.Execute, passagemPendenteArtesp);

            if (passagemRepetida?.NumeroReenvio >= passagemPendenteArtesp.NumeroReenvio)
            {
                return(true);
            }

            return(false);
        }
Ejemplo n.º 16
0
        private void PreencherPassagemETransacaoRecusada(PassagemPendenteArtesp passagemPendenteArtesp, MotivoNaoCompensado motivo)
        {
            _passagemReprovadaArtesp = new PassagemReprovadaArtesp();
            Mapper.Map(passagemPendenteArtesp, _passagemReprovadaArtesp);

            _passagemReprovadaArtesp.TransacaoRecusada = new TransacaoRecusada
            {
                DataProcessamento = DateTime.Now,
                MotivoRecusado    = motivo
            };

            _passagemReprovadaArtesp.MotivoNaoCompensado = motivo;
        }
Ejemplo n.º 17
0
 public GeradorPassagemProcessadaMensageriaMessage(
     ResultadoPassagem resultadoPassagem,
     PassagemPendenteArtesp passagemPendenteArtesp,
     long transacaoIdOriginal,
     decimal valorRepasse,
     DateTime dataPagamento,
     MotivoNaoCompensado motivoNaoCompensado,
     int passagemId) : this(resultadoPassagem, passagemPendenteArtesp, motivoNaoCompensado)
 {
     TransacaoIdOriginal = transacaoIdOriginal;
     ValorRepasse        = valorRepasse;
     DataPagamento       = dataPagamento;
     PassagemId          = passagemId;
 }
        private MotivoNaoCompensado VerificarBloqueioPraca(PassagemPendenteArtesp passagemPendenteArtesp)
        {
            _tagPracaBloqueadoLadoMensageriaValidator.Init(passagemPendenteArtesp);


            var pracaBloqueada = _tagPracaBloqueadoLadoMensageriaValidator.ValidatePracaBloqueada(passagemPendenteArtesp.Praca.CodigoPraca ?? 0);

            if (pracaBloqueada)
            {
                return(MotivoNaoCompensado.PracaBloqueada);
            }

            return(MotivoNaoCompensado.SemMotivoNaoCompensado);
        }
Ejemplo n.º 19
0
        public List <DetalheViagem> ObterViagensAgendadas(PassagemPendenteArtesp passagemPendenteArtesp, long?viagemId)
        {
            var filter = new ObterViagemAgendadaPorPlacaPracaDataPassagemFilter
            {
                Placa        = passagemPendenteArtesp.Placa,
                PracaId      = passagemPendenteArtesp.Praca.Id,
                DataPassagem = passagemPendenteArtesp.DataPassagem,
                ViagemId     = viagemId
            };

            var viagens = DataBaseConnection.HandleExecution(_viagemAgendadaPorPlacaPracaDataPassagemQuery.Execute, filter);

            return(viagens.ToList());
        }
 public PassagemInvalidaNoSysException(ResultadoPassagem resultadoPassagem, PassagemPendenteArtesp passagemPendenteArtesp,
                                       MotivoNaoCompensado motivoNaoCompensado,
                                       long transacaoIdOriginal,
                                       decimal valorRepasse,
                                       DateTime dataPagamento,
                                       int passagemId) : base(motivoNaoCompensado)
 {
     ResultadoPassagem        = resultadoPassagem;
     this.TransacaoIdOriginal = transacaoIdOriginal;
     this.ValorRepasse        = valorRepasse;
     PassagemPendenteArtesp   = passagemPendenteArtesp;
     DataPagamento            = dataPagamento;
     MotivoNaoCompensado      = motivoNaoCompensado;
     PassagemId = passagemId;
 }
Ejemplo n.º 21
0
 public GeradorPassagemProcessadaMensageriaRequest(
     ResultadoPassagem resultadoPassagem,
     PassagemPendenteArtesp passagemPendenteArtesp,
     long transacaoIdOriginal,
     decimal valor,
     DateTime dataPagamento,
     MotivoNaoCompensado motivoNaoCompensado,
     int passagemId)
 {
     ResultadoPassagem   = resultadoPassagem;
     MotivoNaoCompensado = motivoNaoCompensado;
     TransacaoIdOriginal = transacaoIdOriginal;
     Valor = valor;
     PassagemPendenteArtesp = passagemPendenteArtesp;
     DataPagamento          = dataPagamento;
     PassagemId             = passagemId;
 }
        public bool Validate(PassagemPendenteArtesp passagemPendenteArtesp)
        {
            var resultCount = DataBaseConnection.HandleExecution(_countGrupoPorTagPracaQuery.Execute, passagemPendenteArtesp);

            if (resultCount)
            {
                passagemPendenteArtesp.Tag.GrupoPadraoId = DataBaseConnection.HandleExecution(_grupoPorTagPracaQuery.Execute, passagemPendenteArtesp);
            }

            if (passagemPendenteArtesp.MotivoSemValor == MotivoSemValor.GrupoIsento &&
                passagemPendenteArtesp.Tag.Grupo != Grupo.IsentoPelaArtesp &&
                passagemPendenteArtesp.Tag.Grupo != Grupo.Isento)
            {
                return(true);
            }
            return(false);
        }
        public MotivoNaoCompensado Validate(PassagemPendenteArtesp passagemPendenteArtesp)
        {
            var tagGrupoPraca = DataBaseConnection.HandleExecution(_grupoPorTagPracaQuery.Execute, passagemPendenteArtesp);

            if (tagGrupoPraca > 0)
            {
                passagemPendenteArtesp.Tag.GrupoPadraoId = tagGrupoPraca;
            }


            if ((passagemPendenteArtesp.MotivoSemValor == MotivoSemValor.GrupoIsento) &&
                passagemPendenteArtesp.Tag.Grupo != Grupo.IsentoPelaArtesp &&
                passagemPendenteArtesp.Tag.Grupo != Grupo.Isento)
            {
                return(MotivoNaoCompensado.TagNaoPertenceGrupoIsento);
            }

            return(MotivoNaoCompensado.SemMotivoNaoCompensado);
        }
Ejemplo n.º 24
0
        public void Init(PassagemPendenteArtesp passagemPendenteArtesp)
        {
            var existeReenvioAnterior = DataBaseConnection.HandleExecution(_countReenvioAnteriorMensageriaQuery.Execute, passagemPendenteArtesp);

            var filter = new TagNoMomentoDaPassagemFilter
            {
                PassagemPendenteArtesp = passagemPendenteArtesp,
                ExistePassagemAnterior = existeReenvioAnterior,
                TempoAtualizacaoPista  = passagemPendenteArtesp.Praca.TempoAtualizacaoPista
            };

            TagMensageriaDto = DataBaseConnection.HandleExecution(_tagNoMomentoDaPassagemMensageriaQuery.Execute, filter);

            if (existeReenvioAnterior && passagemPendenteArtesp.NumeroReenvio != 0)
            {
                if (DataBaseConnection.HandleExecution(_countPassagemProcessadaCompensadaQuery.Execute, passagemPendenteArtesp))
                {
                    EhReenvioCorrecao = true;
                }
            }
        }
Ejemplo n.º 25
0
        public override List <TransacaoPassagem> Execute(PassagemPendenteArtesp filter)
        {
            var resultado = DataSource.Connection.Query <TransacaoPassagem>(
                "[dbo].[spObterListaTransacaoPassagem]",
                new
            {
                codigoPista  = filter.Pista.CodigoPista,
                numeroPraca  = filter.Praca.CodigoPraca,
                numeroTag    = filter.Tag.OBUId,
                conveniadoId = filter.Conveniado.Id
            },
                commandTimeout: TimeHelper.CommandTimeOut,
                commandType: CommandType.StoredProcedure);

            if (filter.DataPassagem != DateTime.MinValue)
            {
                resultado = resultado.Where(x => x.DataDePassagem == filter.DataPassagem);
            }

            return(resultado.ToList());
        }
        private bool VerificarSaldo(PassagemPendenteArtesp passagemPendenteArtesp)
        {
            if (passagemPendenteArtesp.NumeroReenvio > 0)
            {
                long?transacaoAnteriorId;
                transacaoAnteriorId = DataBaseConnection.HandleExecution(_transacaoPassagemIdAnteriorValidaQuery.Execute, passagemPendenteArtesp);

                if (transacaoAnteriorId > 0)
                {
                    return(true);
                }
            }

            if (passagemPendenteArtesp.Adesao.Plano == PlanoDePagamento.PosPagoEmpresarial)
            {
                return(passagemPendenteArtesp.Adesao.Cliente.Status == StatusCliente.Ativo);
            }

            var saldo = ObterSaldo(passagemPendenteArtesp.Adesao.SaldoId);

            if (passagemPendenteArtesp.Adesao.Cliente.UltimaCobrancaPaga)
            {
                var limiteCredito = ObterLimiteDeCredito(passagemPendenteArtesp.Adesao.Plano);
                if (saldo + limiteCredito < passagemPendenteArtesp.Valor)
                {
                    return(false);
                }
            }
            else
            {
                if (saldo < passagemPendenteArtesp.Valor)
                {
                    return(false);
                }
            }

            return(true);
        }
        public MotivoNaoCompensado Validate(PassagemPendenteArtesp passagemPendenteArtesp)
        {
            var motivoNaoCompensado = MotivoNaoCompensado.SemMotivoNaoCompensado;

            var retorno = DataBaseConnection.HandleExecution(_countTransacaoPassagemRepetida.Execute, passagemPendenteArtesp);

            if (retorno)
            {
                retorno = DataBaseConnection.HandleExecution(_countTransacaoPassagemRepetidaOrigemTrn.Execute, passagemPendenteArtesp);
                if (retorno)
                {
                    return(MotivoNaoCompensado.TransacaoRepetida);
                }

                retorno = DataBaseConnection.HandleExecution(_countTransacaoPassagemRepetidaPorConveniado.Execute, passagemPendenteArtesp);
                if (!retorno)
                {
                    return(MotivoNaoCompensado.TransacaoRepetida);
                }
            }

            return(motivoNaoCompensado);
        }
Ejemplo n.º 28
0
        public ValePedagioArtespDto Validate(PassagemPendenteArtesp passagemPendenteArtesp)
        {
            var passagemOriginal = DataBaseConnection.HandleExecution(_passagemAnteriorQuery.Execute, passagemPendenteArtesp);

            if (passagemOriginal != null && passagemPendenteArtesp.NumeroReenvio > passagemOriginal.NumeroReenvio)
            {
                var viagensCopiadas = RecriarEstruturaAgendamento(passagemPendenteArtesp);
                _retorno.ViagensParaRetorno.AddRange(viagensCopiadas);

                CancelarAgendamentos(viagensCopiadas);
            }

            if (passagemPendenteArtesp.MotivoSemValor != MotivoSemValor.CobrancaIndevida)
            {
                _retorno.MotivoNaoCompensado = UtilizarViagensAgendadas(passagemPendenteArtesp, out var viagemNaoCompensadaId);
                if (_retorno.MotivoNaoCompensado == MotivoNaoCompensado.ValorInvalido && viagemNaoCompensadaId.HasValue)
                {
                    _retorno.ViagemNaoCompensadaId = viagemNaoCompensadaId.TryToInt();
                }
            }

            return(_retorno);
        }
        public void Execute(PassagemPendenteArtesp passagemPendenteArtesp,
                            DbConnectionDataSource dbSysReadOnly)
        {
            var query      = new ObterCategoriaVeiculoQuery(true, dbSysReadOnly);
            var categorias = query.Execute().ToList();

            if (passagemPendenteArtesp.CategoriaTag.Codigo > 0)
            {
                passagemPendenteArtesp.CategoriaTag.Id = categorias
                                                         .FirstOrDefault(c => c.Codigo == passagemPendenteArtesp.CategoriaTag.Codigo)?.CategoriaVeiculoId;
            }

            if (passagemPendenteArtesp.CategoriaCobrada.Codigo > 0)
            {
                passagemPendenteArtesp.CategoriaCobrada.Id = categorias
                                                             .FirstOrDefault(c => c.Codigo == passagemPendenteArtesp.CategoriaCobrada.Codigo)?.CategoriaVeiculoId;
            }

            if (passagemPendenteArtesp.CategoriaDetectada.Codigo > 0)
            {
                passagemPendenteArtesp.CategoriaDetectada.Id = categorias
                                                               .FirstOrDefault(c => c.Codigo == passagemPendenteArtesp.CategoriaDetectada.Codigo)?.CategoriaVeiculoId;
            }
        }
 public PassagemReprovadaException(MotivoNaoCompensado motivo, PassagemPendenteArtesp passagemPendenteArtesp) : base(motivo)
 {
     PassagemPendenteArtesp = passagemPendenteArtesp;
     MotivoNaoCompensado    = motivo;
 }