예제 #1
0
        public void Executar(LoteParaSeparacaoViewModel loteParaSeparacao)
        {
            var paginas = loteParaSeparacao.ObterPaginas();
            var listaDocumentacaoGeral = this.documentoRepositorio.ObterDocumentosDoLotePorTipo(loteParaSeparacao.LoteId, TipoDocumento.CodigoDocumentoGeral).Select(x => x.Id).ToList();

            foreach (var documento in loteParaSeparacao.Documentos)
            {
                if (paginas.Any(x => x.DocumentoAtualId() == documento.Id))
                {
                    if (documento.Manipulado && listaDocumentacaoGeral.Any(x => x == documento.Id) == false)
                    {
                        this.documentoRepositorio.AlterarRecognitionService(documento.Id, DocumentoStatus.TransmissaoOk, false);
                    }

                    continue;
                }

                this.Excluir(documento.Id);

                var documentosFilhos = this.documentoRepositorio.ObterFilhos(loteParaSeparacao.LoteId, documento.Id);

                foreach (var documentoFilho in documentosFilhos)
                {
                    this.Excluir(documentoFilho.Id);
                }
            }
        }
        private IEnumerable <DocumentoParaSeparacaoViewModel> ObterDocumentosOrdenados(LoteParaSeparacaoViewModel loteParaSeparacao)
        {
            var paginas = loteParaSeparacao.ObterPaginas();
            //// começa sempre na 2 (a primeira é capa m2sys)
            var ordemDocumento    = 2;
            var listaDeDocumentos = new List <DocumentoParaSeparacaoViewModel>();

            var listaDeDocumentacaoGeral = this.documentoRepositorio
                                           .ObterDocumentosDoLotePorTipo(loteParaSeparacao.LoteId, TipoDocumento.CodigoDocumentoGeral);

            foreach (var pagina in paginas.OrderBy(x => x.Ordem))
            {
                var documentoId = pagina.DocumentoAtualId();

                if (listaDeDocumentos.Any(x => x.Id == documentoId) ||
                    listaDeDocumentacaoGeral.Any(x => x.Id == documentoId))
                {
                    continue;
                }

                var documento = this.ObterDocumento(documentoId, loteParaSeparacao);
                documento.NovaOrdem = ordemDocumento;

                listaDeDocumentos.Add(documento);
                ordemDocumento++;
            }

            return(listaDeDocumentos);
        }