public ResultadoBatimentoDocumento ValidarNumeroDocumentoIdentificacao(
            ResultadoBatimentoDocumento resultadoBatimento,
            Documento documento)
        {
            if (documento.Indexacao == null ||
                documento.Indexacao.Any(x => x.Campo == null) ||
                resultadoBatimento.Campos.Any(x => x.Indexacao == null || x.Indexacao.Campo == null))
            {
                return(resultadoBatimento);
            }

            var valorCpf = (from valor
                            in documento.Indexacao
                            where valor.Campo.ReferenciaArquivo == Campo.ReferenciaDeArquivoCpf
                            select valor.SegundoValor).FirstOrDefault();

            foreach (var campoBatido in resultadoBatimento.Campos)
            {
                if (campoBatido.Indexacao.Campo.ReferenciaArquivo == Campo.ReferenciaDeArquivoNumeroDocumentoIdentificacao)
                {
                    var numeroDi = campoBatido.Indexacao.SegundoValor;

                    if (valorCpf == numeroDi)
                    {
                        campoBatido.Batido = false;
                    }

                    break;
                }
            }

            return(resultadoBatimento);
        }
예제 #2
0
        private ResultadoBatimentoDocumento RealizarBatimentoPorCampoNaoBatido(
            ImagemReconhecida imagemReconhecida,
            ResultadoBatimentoDocumento resultadoBatimento,
            List <CampoBatido> camposNaoBatidos)
        {
            foreach (var campoNaoBatido in camposNaoBatidos)
            {
                var batimentoCampo = this.batimentoCampoFactory.Criar(campoNaoBatido.Indexacao);

                var resultadoDoCampo = batimentoCampo.Entre(campoNaoBatido.Indexacao, imagemReconhecida.Palavras);

                resultadoBatimento.AdicionarOuEditar(resultadoDoCampo);
            }

            return(resultadoBatimento);
        }
예제 #3
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);
        }