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); }