Exemple #1
0
        public MemoryStream GerarPdf(Titulo titulo, BancoDeDados banco = null)
        {
            if ((titulo.Modelo.Arquivo.Id ?? 0) <= 0)
            {
                return(null);
            }

            ArquivoBus busArquivo  = new ArquivoBus(eExecutorTipo.Interno);
            Arquivo    templatePdf = busArquivo.Obter(titulo.Modelo.Arquivo.Id.Value);

            //Carrega as atividades para o ObterDadosPdf;
            if (titulo.Atividades == null || titulo.Atividades.Count == 0)
            {
                titulo.Atividades = _da.ObterAtividades(titulo.Id);
            }

            IEspecificidadeBus busEspecificiade = EspecificiadadeBusFactory.Criar(titulo.Modelo.Codigo.Value);

            titulo.Especificidade = busEspecificiade.Obter(titulo.Id) as Especificidade;
            titulo.ToEspecificidade();
            IConfiguradorPdf configurador = busEspecificiade.ObterConfiguradorPdf(titulo.Especificidade) ?? new ConfiguracaoDefault();

            configurador.ExibirSimplesConferencia = (titulo.Situacao.Id == (int)eTituloSituacao.Cadastrado) || (titulo.Situacao.Id == (int)eTituloSituacao.EmCadastro);

            Object dataSource = busEspecificiade.ObterDadosPdf(titulo.Especificidade, banco);

            GeradorAspose gerador = new GeradorAspose(configurador);

            #region Assinantes

            List <TituloAssinante> assinantes = _da.ObterAssinantes(titulo.Id);

            if (busEspecificiade.CargosOrdenar != null && busEspecificiade.CargosOrdenar.Count > 0)
            {
                assinantes = assinantes.OrderByDescending(assinante => busEspecificiade.CargosOrdenar.IndexOf((eCargo)assinante.FuncionarioCargoCodigo)).ToList();
            }

            configurador.Assinantes = assinantes.Select(x =>
                                                        (IAssinante) new AssinanteDefault()
            {
                Nome = x.FuncionarioNome, Cargo = x.FuncionarioCargoNome
            }
                                                        ).ToList();

            //Adiciona os assinantes da Especificidade
            configurador.Assinantes.AddRange((((dynamic)dataSource).Titulo as IAssinanteDataSource).AssinanteSource);

            #endregion

            MemoryStream msPdf = gerador.Pdf(templatePdf, dataSource);

            if (dataSource is Tecnomapas.Blocos.Entities.Etx.ModuloRelatorio.IAnexoPdf)
            {
                Tecnomapas.Blocos.Entities.Etx.ModuloRelatorio.IAnexoPdf dataAnexos = dataSource as Tecnomapas.Blocos.Entities.Etx.ModuloRelatorio.IAnexoPdf;
                msPdf = GeradorAspose.AnexarPdf(msPdf, dataAnexos.AnexosPdfs);
            }

            return(msPdf);
        }
        public MemoryStream GerarPdf(Titulo titulo, BancoDeDados banco = null)
        {
            if ((titulo.Modelo.Arquivo.Id ?? 0) <= 0)
            {
                return(null);
            }

            ArquivoBus busArquivo  = new ArquivoBus(eExecutorTipo.Interno);
            Arquivo    templatePdf = busArquivo.Obter(titulo.Modelo.Arquivo.Id.Value);

            //Carrega as atividades para o ObterDadosPdf;
            if (titulo.Atividades == null || titulo.Atividades.Count == 0)
            {
                titulo.Atividades = _da.ObterAtividades(titulo.Id);
            }

            IEspecificidadeBus busEspecificiade = EspecificiadadeBusFactory.Criar(titulo.Modelo.Codigo.Value);

            titulo.Especificidade = busEspecificiade.Obter(titulo.Id) as Especificidade;
            titulo.ToEspecificidade();
            IConfiguradorPdf configurador = busEspecificiade.ObterConfiguradorPdf(titulo.Especificidade) ?? new ConfiguracaoDefault();

            configurador.ExibirSimplesConferencia = (titulo.Situacao.Id == (int)eTituloSituacao.Cadastrado) || (titulo.Situacao.Id == (int)eTituloSituacao.EmCadastro) || (titulo.Situacao.Id == (int)eTituloSituacao.AguardandoPagamento);

            Object dataSource = busEspecificiade.ObterDadosPdf(titulo.Especificidade, banco);

            #region Condicionantes

            var dataSourceTitulo = (((dynamic)dataSource).Titulo as DataSourceBase);

            if (titulo.Modelo.Regra(eRegra.Condicionantes))
            {
                if (dataSourceTitulo.Condicionantes == null || dataSourceTitulo.Condicionantes.Count == 0)
                {
                    EspecificidadeDa daEsp = new EspecificidadeDa();
                    dataSourceTitulo.Condicionantes = daEsp.ObterCondicionantes(titulo.Id);
                }
            }

            IConfiguracaoEvent cnfEvent = configurador as IConfiguracaoEvent;

            if (cnfEvent != null)
            {
                if (!titulo.Modelo.Regra(eRegra.Condicionantes) || dataSourceTitulo.Condicionantes == null || dataSourceTitulo.Condicionantes.Count == 0)
                {
                    cnfEvent.AddLoadAcao((doc, dataSourceCnf) =>
                    {
                        Table tabela = doc.FindTable("«TableStart:Titulo.Condicionantes»");
                        if (tabela != null)
                        {
                            if (configurador.CondicionanteRemovePageBreakAnterior)
                            {
                                tabela.RemovePageBreakAnterior();
                            }

                            AsposeExtensoes.RemoveTables(new List <Table>()
                            {
                                tabela
                            });
                        }
                    });
                }
                else
                {
                    cnfEvent.AddExecutedAcao((doc, dataSourceCnf) =>
                    {
                        Table tabela = doc.LastTable("«remover»");

                        while (tabela != null)
                        {
                            AsposeExtensoes.RemoveTables(new List <Table> {
                                tabela
                            });
                            tabela = doc.LastTable("«remover»");
                        }
                    });
                }
            }

            #endregion

            GeradorAspose gerador = new GeradorAspose(configurador);

            #region Assinantes

            List <TituloAssinante> assinantes = _da.ObterAssinantes(titulo.Id);

            if (busEspecificiade.CargosOrdenar != null && busEspecificiade.CargosOrdenar.Count > 0)
            {
                assinantes = assinantes.OrderByDescending(assinante => busEspecificiade.CargosOrdenar.IndexOf((eCargo)assinante.FuncionarioCargoCodigo)).ToList();
            }

            configurador.Assinantes = assinantes.Select(x =>
                                                        (IAssinante) new AssinanteDefault()
            {
                Nome = x.FuncionarioNome, Cargo = x.FuncionarioCargoNome
            }
                                                        ).ToList();

            //Adiciona os assinantes da Especificidade
            configurador.Assinantes.AddRange((((dynamic)dataSource).Titulo as IAssinanteDataSource).AssinanteSource);

            #endregion

            MemoryStream msPdf = gerador.Pdf(templatePdf, dataSource);

            if (dataSource is Tecnomapas.Blocos.Entities.Etx.ModuloRelatorio.IAnexoPdf)
            {
                Tecnomapas.Blocos.Entities.Etx.ModuloRelatorio.IAnexoPdf dataAnexos = dataSource as Tecnomapas.Blocos.Entities.Etx.ModuloRelatorio.IAnexoPdf;
                msPdf = GeradorAspose.AnexarPdf(msPdf, dataAnexos.AnexosPdfs);
            }

            return(msPdf);
        }