public bool GenerateSpoolFromReport(ReportImage report) { try { using (var ctx = new ReportContext()) { //zipar a imagem var imageZipped = ZipUtil.ZipFromBytes(report.ReportImageData); //criaçao do relatorio var imgSave = new ReportSpool(DateTime.Now, report.ReportName, imageZipped); return(ctx.ReportSpoolDao.Save(imgSave)); } } catch (Exception ex) { Console.WriteLine("Falha na geração do spool"); LoggerUtilIts.GenerateLogs(ex, "Falha na geração do spool do relatório"); return(false); } }
/// <summary> /// Gera um relatório para o Spool de relatórios /// </summary> /// <param name="id">ID do relatório</param> /// <returns></returns> public void PrintReportSpool(int id, bool visualizar = true) { try { var ctx = new ReportContext(); var imageReport = ctx.ReportImageDao.Find(id); var path = Application.StartupPath + "\\temp.repx"; var pathPrnx = Application.StartupPath + "\\tempPrnx.prnx"; var isCanceled = false; //download do *.repx do banco FileManagerIts.WriteBytesToFile(path, imageReport.ReportImageData); //carregue a estrutura do relatório XtraReport report = XtraReport.FromFile(path, true); //tela personalizado de parametros var parameters = new XFrmReportParams_DEV(report.Parameters); //se o relatorio tem parametros.... if (report.Parameters.Count >= 1) { report.RequestParameters = false; //chame a tela de paramentros parameters.ShowDialog(); report.Parameters.Clear(); foreach (var item in parameters.NewParametros) { report.Parameters.Add(item); } isCanceled = parameters._isCanceled; } #region Processamento do relatório //se a geração nao foi cancelada em //XFrmReportParams, continue com a geração if (isCanceled == false) { //criar o documento ReportPrintTool reportPrintTool = new ReportPrintTool(report); report.CreateDocument(); //salva o documento gerado em prnx report.PrintingSystem.SaveDocument(pathPrnx); //carrega o relatório gerado para bytes[] var image = FileManagerIts.ReadBytesFromFile(pathPrnx); //zipar a imagem var imageZipped = ZipUtil.ZipFromBytes(image); //criaçao do relatorio var imgSave = new ReportSpool(DateTime.Now, report.DisplayName, imageZipped); var result = ctx.ReportSpoolDao.Save(imgSave); if (result && visualizar) { GerarRelatorioFromSpool(imgSave.IdSpool, TypeGeracaoSpool.PreVisualizar); } else if (result && !visualizar) { XMessageIts.Mensagem("Relatório gerado com sucesso!", "Sucesso"); } else { XMessageIts.Advertencia("Falha ao gerar relatório.\n\n" + "Contate o adminstrador do sistema", "Atenção"); } //Remova o relatorio temporario FileManagerIts.DeleteFile(path); FileManagerIts.DeleteFile(pathPrnx); } #endregion //se não passar pelo if, a geração foi cancelada, então Task<bool> = false } catch (Exception ex) { LoggerUtilIts.ShowExceptionLogs(ex); throw ex; } }