public void Executar(AcaoDeSeparacao acao, LoteParaSeparacaoViewModel loteParaSeparacao)
        {
            var documentacaoGeral = this.documentoRepositorio
                                    .ObterPorProcessoETipo(loteParaSeparacao.ProcessoId, TipoDocumento.CodigoDocumentoGeral)
                                    .FirstOrDefault();

            if (documentacaoGeral == null || documentacaoGeral.Id < 1)
            {
                return;
            }

            var pagina            = this.paginaRepositorio.ObterPorId(acao.PrimeiraPagina);
            var documentoOriginal = this.documentoRepositorio.ObterPorId(pagina.Documento.Id);

            pagina.Status    = PaginaStatus.StatusExcluida;
            pagina.Documento = new Documento {
                Id = documentacaoGeral.Id
            };

            this.paginaRepositorio.Salvar(pagina);

            this.documentoRepositorio.AlterarMarca(documentoOriginal.Id, Documento.MarcaDeAlteradoNaSeparacao);
            ////this.documentoRepositorio.AlterarStatus(documentoOriginal.Id, DocumentoStatus.TransmissaoOk);
            loteParaSeparacao.MarcaDocumentoManipulado(documentoOriginal.Id);

            this.gravaLogDaPaginaServico.Executar(LogPagina.AcaoPaginaExcluida,
                                                  pagina.Id,
                                                  pagina.Documento.Id,
                                                  "Página removida na separação. MDoc Anterior #" + documentoOriginal.Id);

            this.gravaLogDoDocumentoServico.Executar(
                LogDocumento.AcaoPaginaRemovida,
                documentoOriginal.Id,
                string.Format("Página #{0} foi removida na separação manual", pagina.Id));
        }
        private void MarcaDocumentoAlterado(Documento documento, LoteParaSeparacaoViewModel loteParaSeparacao)
        {
            this.documentoRepositorio.AlterarMarca(documento.Id, Documento.MarcaDeAlteradoNaSeparacao);

            if (documento.TipoDocumento.Id != TipoDocumento.CodigoDocumentoGeral)
            {
                this.documentoRepositorio.AlterarStatus(documento.Id, DocumentoStatus.StatusParaReconhecimento);
            }

            loteParaSeparacao.MarcaDocumentoManipulado(documento.Id);
        }
예제 #3
0
        private void SalvarPaginas(Documento documento, AcaoDeSeparacao acao, LoteParaSeparacaoViewModel loteParaSeparacao)
        {
            var listaDocumentacaoGeral = this.documentoRepositorio.ObterDocumentosDoLotePorTipo(documento.Lote.Id, TipoDocumento.CodigoDocumentoGeral).Select(x => x.Id).ToList();

            foreach (var paginaId in acao.Paginas)
            {
                var pagina            = this.paginaRepositorio.ObterPorId(paginaId);
                var documentoOriginal = this.documentoRepositorio.ObterPorId(pagina.Documento.Id);

                //// manda refazer o PDF do documento original, se for diferente de 27
                if (listaDocumentacaoGeral.Any(x => x == documentoOriginal.Id) == false)
                {
                    loteParaSeparacao.MarcaDocumentoManipulado(documentoOriginal.Id);
                }

                var paginaParaSeparacaoAtual = loteParaSeparacao.ObterPagina(paginaId).Status;
                var paginaEstavaExcluida     = paginaParaSeparacaoAtual == null ||
                                               loteParaSeparacao.ObterPagina(paginaId).Status == PaginaStatus.StatusExcluida;

                if ((documentoOriginal.TipoDocumento.Id == TipoDocumento.CodigoDocumentoGeral &&
                     documentoOriginal.Status == DocumentoStatus.Excluido) ||
                    paginaEstavaExcluida)
                {
                    pagina.Status = PaginaStatus.StatusExcluida;
                }

                pagina.Documento = documento;
                this.paginaRepositorio.Salvar(pagina);

                documento.Paginas.Add(pagina);

                this.documentoRepositorio.AlterarMarca(documentoOriginal.Id, Documento.MarcaDeAlteradoNaSeparacao);

                this.gravaLogDaPaginaServico.Executar(LogPagina.AcaoDocumentoCriadoNaSeparacao,
                                                      pagina.Id,
                                                      pagina.Documento.Id,
                                                      string.Format("Página movida para documento #{0}, documento anterior era #{1}", documento.Id, documentoOriginal.Id));

                loteParaSeparacao.ObterPagina(paginaId).NovoDocumentoId = documento.Id;
            }
        }