public void Validate()
        {
            if (_passagemPendenteEdi.StatusPassagem.Equals(StatusPassagem.Evasao))
            {
                var obterCountHistoricoListaNela = new ObterCountHistoricoListaNelaQuery();
                var countHistoricoListaNela      = obterCountHistoricoListaNela.Execute(_passagemPendenteEdi);

                var validarSaldoSuficiente = new PossuiSaldoSuficienteValidator(_passagemPendenteEdi);
                if (countHistoricoListaNela && !validarSaldoSuficiente.Validate())
                {
                    throw new EdiTransacaoException(CodigoRetornoTransacaoTRF.EvasaoParaAutuacao, _passagemPendenteEdi);
                }

                _passagemPendenteEdi.PossuiEvasaoAceita = true;
            }
        }
예제 #2
0
        public void Validate()
        {
            var possuiTransacaoAprovadaManualmente = _validatorRuleSet.Validate(_passagemPendenteEdi, PassagemPendenteEdiValidatorEnum.PossuiTransacaoAprovadaManualmente.ToString());
            var validarSaldoSuficiente             = new PossuiSaldoSuficienteValidator(_passagemPendenteEdi);

            var possuiSaldoSuficiente = validarSaldoSuficiente.Validate();


            if (!possuiTransacaoAprovadaManualmente || possuiSaldoSuficiente)
            {
                var obterhistoricoListaNela = new ObterHistoricoListaNelaQuery();
                _historicoListaNela = obterhistoricoListaNela.Execute(new ObterHistoricoListaNelaFilter
                {
                    TagId          = _passagemPendenteEdi.Tag.Id ?? 0,
                    DataDePassagem = _passagemPendenteEdi.DataPassagem
                });

                if (_validatorRuleSet.Validate(_passagemPendenteEdi, PassagemPendenteEdiValidatorEnum.PossuiAdesaoAtiva.ToString()))
                {
                    if (_historicoListaNela != null)
                    {
                        _tempoAtualizacaoPista = (_passagemPendenteEdi.Praca.TempoAtualizacaoPista > 0
                            ? _passagemPendenteEdi.Praca.TempoAtualizacaoPista
                            : _conveniado?.TempoDeAtualizacaoDePista) ?? 0;

                        if (
                            _passagemPendenteEdi.Adesao.Tag.StatusTag == StatusTag.Bloqueada &&
                            (!_passagemPendenteEdi.Adesao.Cliente.PessoaFisica || (_passagemPendenteEdi.Adesao.Cliente.PessoaFisica && _passagemPendenteEdi.Adesao.AdesaoValePedagio)) &&
                            (_historicoListaNela.DataEntrada.AddMinutes(_tempoAtualizacaoPista) <= _passagemPendenteEdi.DataPassagem))
                        {
                            throw new EdiTransacaoException(CodigoRetornoTransacaoTRF.PassagemForaDoPeriodo, _passagemPendenteEdi);
                        }

                        VerificarSlaListaNela(possuiSaldoSuficiente);
                    }
                }
            }
        }