예제 #1
0
        public bool CampoEstaBatido(Indexacao indexacao)
        {
            CampoBatido campoBatido = null;

            foreach (CampoBatido campo in this.Campos)
            {
                if (campo.Indexacao == indexacao)
                {
                    campoBatido = campo;
                    break;
                }
            }

            return(campoBatido != null && campoBatido.Batido);
        }
예제 #2
0
        public void AdicionarOuEditar(CampoBatido campoBatido)
        {
            if (this.JaExisteResultadoBatido(campoBatido))
            {
                return;
            }

            if (this.JaExisteResultadoNaoBatido(campoBatido))
            {
                this.AtribuirNovoValor(campoBatido);
                return;
            }

            this.Campos.Add(campoBatido);
        }
예제 #3
0
        private void AtribuirNovoValor(CampoBatido campoBatido)
        {
            var camp = this.Campos.FirstOrDefault(campo => campo.Indexacao == campoBatido.Indexacao);

            if (camp == null)
            {
                return;
            }

            Log.Application.DebugFormat(
                "AtribuirNovoValor::Documento {0} Campo {1} resultado {2}",
                camp.Indexacao.Documento.Id,
                camp.Indexacao.Campo.Description,
                campoBatido.Batido);

            camp.Batido        = campoBatido.Batido;
            camp.TipoBatimento = campoBatido.TipoBatimento;
        }
예제 #4
0
        public CampoBatido Entre(
            Indexacao indexacao,
            IList <PalavraReconhecida> palavrasReconhecidas)
        {
            var batimento = IoC.Current.Resolve(typeof(T));

            this.ConfigurarProximaTentativa(
                indexacao,
                (IBatimentoFullTextCampo)batimento);

            var batido = ((IBatimentoFullTextCampo)batimento)
                         .EstaBatido(indexacao, palavrasReconhecidas);

            var campoBatido = new CampoBatido
            {
                Indexacao     = indexacao,
                Batido        = batido,
                TipoBatimento = TipoBatimento.FullText
            };

            return(campoBatido);
        }
예제 #5
0
        public ResultadoBatimentoDocumento Entre(Documento documento, ImagemReconhecida imagemReconhecida)
        {
            var indexacoesMapeadas = this.indexacaoMapeada.ComValoresReconhecidos(
                documento.Indexacao.ToList(),
                imagemReconhecida.ValoresReconhecidos);

            var resultadoBatimento = new ResultadoBatimentoDocumento();

            var batimento = IoC.Current.Resolve(typeof(TBatimentoIndexacaoMapeada));

            var batimentoResidencia = ((IBatimentoIndexacaoMapeada)batimento)
                                      .ProximaTentativa(IoC.Current.Resolve <ComprovanteResidenciaConsultaCepBatimento>());

            ////Caso haja a necessidade de incluir mais classes de batimento pode-se hierarquizar como abaixo:
            //// var batimentoRg = ((IBatimentoIndexacaoMapeada)batimento)
            ////    .ProximaTentativa(IoC.Current.Resolve<RgBatimento>());
            ////
            //// var batimentoRgReceita = ((IBatimentoIndexacaoMapeada)batimento)
            ////    .ProximaTentativa(IoC.Current.Resolve<RgConsultaReceitaBatimento>());

            foreach (var mapeada in indexacoesMapeadas)
            {
                var batido = ((IBatimentoIndexacaoMapeada)batimento).EstaBatido(mapeada);

                var campoBatido = new CampoBatido
                {
                    Indexacao     = mapeada.Indexacao,
                    Batido        = batido,
                    TipoBatimento = TipoBatimento.Template
                };

                resultadoBatimento.AdicionarOuEditar(campoBatido);
            }

            return(resultadoBatimento);
        }
예제 #6
0
 private bool JaExisteResultadoBatido(CampoBatido campoBatido)
 {
     return(this.Campos.Any(
                index => index.Indexacao == campoBatido.Indexacao &&
                index.Batido));
 }