public void ApartirDoReconhecimento(ResultadoBatimentoDocumento resultadoBatimentoDocumento)
        {
            var campoBatidos = resultadoBatimentoDocumento
                               .Campos
                               .Where(campo => campo.Batido);

            foreach (var campo in campoBatidos)
            {
                campo.Indexacao.PrimeiroValor = campo.Indexacao.SegundoValor;
                campo.Indexacao.ValorFinal    = campo.Indexacao.SegundoValor;
                campo.Indexacao.ValorUtilizadoParaValorFinal = ValorUtilizadoParaValorFinal.SegundoValor;
                campo.Indexacao.OcrComplementou       = true;
                campo.Indexacao.DataPrimeiraDigitacao = DateTime.Now;

                this.indexacaoRepositorio.Salvar(campo.Indexacao);

                var observacao = string.Format(
                    "Documento [{0}] Campo [{1}] complementado por [{2}]",
                    campo.Indexacao.Documento.Id,
                    campo.Indexacao.Campo.Description,
                    campo.TipoBatimento.ToString());

                Log.Application.DebugFormat(observacao);

                this.gravaLogDocumentoServico.Executar(
                    LogDocumento.AcaoDocumentoOcr,
                    campo.Indexacao.Documento.Id,
                    observacao);
            }
        }
        public void ApartirDoBatimentoComProvaZero(ResultadoBatimentoDocumento resultadoBatimento)
        {
            var campoBatidos = resultadoBatimento
                               .Campos
                               .Where(campo => campo.Batido);

            foreach (var campo in campoBatidos)
            {
                this.indexacaoRepositorio.SalvarValorFinalBatidoComOcr(campo.Indexacao.Id);
            }
        }
        public void Execute(Documento documento, ImagemReconhecida imagemReconhecida, ResultadoBatimentoDocumento resultadoBatimento)
        {
            Log.Application.InfoFormat("Inicio do batimento do documento {0}", documento.Id);

            if (this.TipoPodeFazerBatimento(documento.TipoDocumento))
            {
                return;
            }

            switch (documento.TipoDocumento.Id)
            {
            ////Por enquanto, no projeto Banco Original, não há necessidade de analisar por tipo de doc.
            ////case TipoDocumento.CodigoComprovanteDeResidencia:
            ////    this.batimentoEComplementacaoDocumentoServico =
            ////    IoC.Current.Resolve<BatimentoEComplementacaoComprovanteResidenciaServico>();
            ////    break;
            default:
                this.batimentoEComplementacaoDocumentoServico =
                    IoC.Current.Resolve <BatimentoEComplementacaoDocumentoServico>();
                break;
            }

            var camposJaBatidosId = (from x in resultadoBatimento.Campos where x.Batido select x.Indexacao.Campo.Id).ToList();

            this.batimentoEComplementacaoDocumentoServico.Execute(documento, imagemReconhecida, camposJaBatidosId);

            this.documentoRepositorio.Salvar(documento);
        }