예제 #1
0
        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);
            }
        }
예제 #2
0
        /// <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;
            }
        }