示例#1
0
        private void barBtnExportarTodos_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (gridView1.IsSelectOneRowWarning())
            {
                var anexos = gridView1.GetItens <AnexoLancamento>();

                var destiny = Path.Combine(FileManagerIts.DeskTopPath,
                                           "Anexos" + DateTime.Now.ToString("dd-MM-yyyy"));

                FileManagerIts.CreateDirectory(destiny);
                foreach (var anexo in anexos)
                {
                    string name = anexo.IdentificacaoAnexo.Replace("/", "-")
                                  + anexo.Extensao;
                    string fileName = Path.Combine(destiny, name);

                    if (FileManagerIts.WriteBytesToFile(fileName, anexo.DataFile))
                    {
                        XMessageIts.Mensagem("Anexo salvo com sucesso!");
                    }
                    else
                    {
                        XMessageIts.Erro("Falha ao salvar anexo!\n" + anexo.PathFile);
                    }
                }
            }
        }
示例#2
0
        public static void ExportDashboardList(List <DashboardImage> reports)
        {
            string outReports = Path.Combine(FileManagerIts.DeskTopPath, "Dashboards ITS");

            if (!Directory.Exists(outReports))
            {
                FileManagerIts.CreateDirectory(outReports);
            }

            bool flag = false;

            foreach (var rpt in reports)
            {
                var novo = new DashboardImage();
                //gera um novo
                novo.Update(rpt);


                string file = outReports + "\\" + rpt.ReportName + ".itsdsh";

                //serializa p relatorio
                var bytes = SerializeIts.SerializeObject(novo);
                flag = FileManagerIts.WriteBytesToFile(file, bytes);
            }
            if (flag)
            {
                XMessageIts.Mensagem("Dashboards exportados com sucesso!");
            }
            else
            {
                XMessageIts.Erro("Dashboards exportados com erro!");
            }
        }
        /// <summary>
        /// Log no arquivo de log
        /// </summary>
        /// <param name="ex"></param>
        public static void GenerateLogs(Exception ex, params string[] msg)
        {
            var logs     = "C:\\logs\\its\\excecoes";
            var fileName = logs + "\\" + ex.GetType() + "-" + DateTime.Now.ToString("dd-MM-yyyy") + ".txt";

            FileManagerIts.CreateDirectory(logs);
            File.Delete(fileName);
            FileManagerIts.AppendTextFileException(fileName, ex, msg);;
            WriteOnEventViewer(ex, msg);
        }
        /// <summary>
        /// Log no arquivo de log
        /// </summary>
        /// <param name="ex"></param>
        public static void GenerateLogs(Exception ex)
        {
            var logs     = "C:\\logs\\its\\excecoes";
            var fileName = logs + "\\" + ex.GetType() + "-" + DateTime.Now.ToString("dd-MM-yyyy-HH-mm-ss") + ".txt";

            FileManagerIts.CreateDirectory(logs);

            //esreve ou concatena o log
            FileManagerIts.AppendTextFileException(fileName, ex);

            //escrever no eventviewer.. gercy campos, em 30/06/2017
            WriteOnEventViewer(ex, "Exceção lançãda!\nContate o administrador.");
        }
示例#5
0
        /// <summary>
        /// Cria um XtraReport a partir do nome do relatório salvo no banco.
        /// </summary>
        /// <param name="reportName"></param>
        /// <param name="showParams"></param>
        /// <returns></returns>
        public static XtraReport CreateReportByName(string reportName, bool showParams = true)
        {
            using (var ctx = new ReportContext())
            {
                try
                {
                    var    current = ctx.ReportImageDao.First(r => r.ReportName == reportName);
                    string dir     = Path.GetTempPath().Replace("Temp", "Reports");

                    FileManagerIts.CreateDirectory(dir);

                    string path = Path.Combine(dir, current.ReportName + ".repx");

                    //salva o report no disco
                    FileManagerIts.WriteBytesToFile(path, current.ReportImageData);

                    //carregue a estrutura do relatório
                    XtraReport report = XtraReport.FromFile(path, true);


                    if (showParams == false)
                    {
                        //nao exibe
                        foreach (var p in report.Parameters)
                        {
                            p.Visible = false;
                        }
                    }

                    //objeto para chamar a tela de parametros
                    ReportPrintTool reportPrintTool = new ReportPrintTool(report);

                    ReportUtil.SetParamDataSource(report.DataSource as SqlDataSource, AppConfigManager.Configuration.AppConfig);
                    //criar o documento
                    report.CreateDocument();

                    //libera memoria da ferramenta
                    reportPrintTool.Dispose();

                    //retorna o relatorio
                    return(report);
                }
                catch (Exception ex)
                {
                    XMessageIts.ExceptionMessageDetails(ex, "Impossível gerar relatório !", "Falha ao gerar relatório");
                    LoggerUtilIts.GenerateLogs(ex);
                    return(null);
                }
            }
        }
示例#6
0
            /// <summary>
            /// Gera um mensagem gráfica com os dados da exceção.
            /// </summary>
            /// <param colName="ex"></param>
            public DebugDao(Exception ex, T t, bool errorMessage = true)
                : base(ex.Message)
            {
                var type   = ex.GetType();
                var classe = t.GetType();
                //Logs
                string dirLogDao = @"C:\logs\its\dao";
                string title     = "Relatório de logs\n";
                string excecao   = "Erros de persistência: " + type;
                string entity    = "\nClasse de ocorrência: " + classe;
                string data      = DateTime.Now.ToString("dd-MM-yyyy-HH-mm-ss");

                var inner = ex.InnerException == null
                              ? "Nenhuma exceção interna"
                              : ex.InnerException.Message + "";
                //Uso o método Write para escrever o arquivo que será adicionado no arquivo texto
                string msg = "Mensagem: " + ex.Message + "\n" +
                             "Pilha de erros: " + ex.StackTrace + "\n" +
                             "Exceção interna: " + inner;


                var fileName = type + "-" + data + ".txt";
                var pathLog  = Path.Combine(dirLogDao, fileName);

                //cria o dir
                FileManagerIts.CreateDirectory(dirLogDao);

                //write logs
                FileManagerIts.AppendTextFileException(pathLog, ex, new string[] { title, excecao, entity, data, msg });

                //exibe o log na saida padrao
                LoggerUtilIts.ShowExceptionLogs(ex);

                if (errorMessage)
                {
                    //avisa do erro
                    XMessageIts.ExceptionJustMessage(ex, null, "Falha crítica no banco de dados");
                }
            }
示例#7
0
        /// <summary>
        /// Exibe somente a mensagem que a exceção lançou e gera log da execeção.
        /// </summary>
        /// <param name="ex"></param>
        /// <param name="message"></param>
        /// <param name="title"></param>
        public static void ExceptionMessageDetails(Exception ex, string message, string title = null)
        {
            if (ex == null)
            {
                ex = new Exception();
            }
            var split  = (ex.Message + "").Split('.');
            var newMsg = "";

            foreach (var item in split)
            {
                newMsg += item + "\n";
            }

            string msg  = string.Format("{0}\n{1}\n{2}", message, newMsg, "Verifique o arquivo de logs na pasta its");
            var    logs = "C:\\logs\\its\\excecoes";

            FileManagerIts.CreateDirectory(logs);
            FileManagerIts.AppendTextFileException(logs + "\\" + ex.GetType()
                                                   + "-" + DateTime.Now.ToString("dd-MM-yyyy") + ".txt", ex);

            MessageBoxException.ShowException(message, ex, title);
        }
示例#8
0
        //Estou considerando que o pacote .zip é um pacote com dlls
        private void updateDLLs()
        {
            try
            {
                //pkg do arquivo zip
                var pkg = this._pacote.Anexos.FirstOrDefault();

                //nome do arquivo zip
                string zipResource = pkg.FileName;

                //extraindo atualização
                taskLog("Iniciando atualização: " + zipResource);

                if (Directory.Exists(_resourceDir))
                {
                    zipResource = _resourceDir;
                }
                else
                {
                    //raiz da instalação
                    var raiz = Path.GetPathRoot(_installDir);

                    //garante que o root de instalação e atualização sejam são iguais
                    //a atualização sera extraida no mesmo o root "=> Volume do disco Ex: C:
                    //Deve ser o mesmo root onde esta a instalação do programa
                    string resourceDir = Path.Combine(Path.GetPathRoot(raiz), "ite_package_update_" + Guid.NewGuid());

                    //cria o temporario para receber a atualização
                    FileManagerIts.CreateDirectory(resourceDir);

                    //agora eu tenho um diretorio entao gere um arquivo .zip
                    zipResource = resourceDir + "\\" + zipResource;

                    //gera o zip em disco
                    FileManagerIts.WriteBytesToFile(zipResource, pkg.DataFile);

                    //extrai as atualizações pra um temporario
                    ZipUtil.ExtractToDirectory(zipResource, resourceDir);
                }

                taskLog("Salvando instalação atual ...");
                //garante que exista somente um .bak
                FileManagerIts.DeleteDirectory(_installDir + ".bak");

                //faz a copia o da instalaçao atual
                FileManagerIts.DirectoryCopy(_installDir, _installDir + ".bak");

                taskLog("Diretório pronto para receber atualização ...");

                taskLog("Atualizando diretórios e dlls ... ");

                Task.Run(new Action(() =>
                {
                    foreach (var f in new FileManagerIts().ToFilesRecursive(_resourceDir))
                    {
                        //vo mostrar so o nome o temporario q gerei nao eh importante
                        taskLog("Atualizando: " + Path.GetFileName(f));
                    }
                }));

                //ilustrar dps
                _taskManager.UpdateSoftware(_resourceDir, _installDir);

                //apague o temporário
                FileManagerIts.DeleteDirectory(_resourceDir);
            }
            catch (Exception ex)
            {
                try
                {
                    cancelation();

                    taskLog("Falha no pacote de atualizações");
                    taskLog(ex.Message);
                    LoggerUtilIts.ShowExceptionLogs(ex, this);
                }

                catch (OperationCanceledException oc)
                {
                    Console.WriteLine("Operação cancelada=> " + oc.Message);
                }
            }
        }
示例#9
0
        private void loadPackage(Package pacote)
        {
            this._pacote = pacote;
            this.wizardControl1.SelectedPageIndex = 1;
            try
            {
                groupControlInfoPackage.Visible = true;

                if (pacote.DataPublicacao.HasValue)
                {
                    lbDtPublish.Text   = pacote.DataPublicacao.Value.ToShortDateString();
                    labelControl6.Text = pacote.NumeroPacote;
                    memoEditDesc.Text  = pacote.Descricao;


                    if (pacote.Anexos.Any(a => a.Extensao == ".zip"))
                    {
                        var    firstPkg = pacote.Anexos.FirstOrDefault();
                        string zipName  = firstPkg.FileName;
                        //crie um temporario para receber os dados do pacote
                        this._resourceDir = Path.Combine(Path.GetTempPath(), Path.GetFileNameWithoutExtension(zipName));
                        FileManagerIts.DeleteDirectory(_resourceDir);
                        FileManagerIts.CreateDirectory(_resourceDir);

                        try
                        {
                            //arquivo zip
                            string zipFile = Path.Combine(Path.GetTempPath(), zipName);

                            //gera o zip em disco
                            FileManagerIts.WriteBytesToFile(zipFile, firstPkg.DataFile);

                            //extrai os dados pro temporario
                            ZipUtil.ExtractToDirectory(zipFile, this._resourceDir);
                            //todos os arquivos
                            foreach (string item in FileManagerIts.ToFiles(this._resourceDir, new string[] { ".sql" }, true))
                            {
                                if (item.EndsWith(".sql"))
                                {
                                    _containsSql = true;
                                }
                                else if (item.EndsWith(".dll"))
                                {
                                    _containsDll = true;
                                }
                            }
                            //ja extrai o pacote e nao preciso dele no disco, os dados ja foram extraidos
                            FileManagerIts.DeleteFile(zipFile);
                        }
                        catch (Exception ex)
                        {
                            string msg = "Falha na verificação de integridade do pacote.";
                            XMessageIts.ExceptionMessageDetails(ex, msg);
                            LoggerUtilIts.GenerateLogs(ex, msg);
                        }
                    }
                    else
                    {
                        int countSql = pacote.Anexos.Count(a => a.Extensao == ".sql");
                        int countDll = pacote.Anexos.Count(a => a.Extensao == ".dll");


                        this._containsSql = countSql > 0;
                        this._containsDll = countDll > 0;
                    }
                    this.pnlSql.Visible = _containsSql;

                    if (_containsDll)
                    {
                        this.pnlDlls.Visible = true;
                        detectInstallDir();
                        //this.groupControlInfoPackage.Location = new Point(17, 251);
                        //this.groupControlInfoPackage.Size = new Size(806, 242);
                    }
                    else
                    {
                        this.pnlDlls.Visible = false;
                        //this.groupControlInfoPackage.Location = new Point(17, 159);
                        //this.groupControlInfoPackage.Size = new Size(806, 344);
                    }
                    wizardPage1.AllowNext = true;
                }
                else
                {
                    XMessageIts.Erro("O pacote selecionado não foi publicado e não pode ser aplicado.");
                }
            }
            catch (Exception ex)
            {
                string msg = "O pacote de atualização informado é inválido!"
                             + "\n\nContate o administrador para aplicar atualização.";

                XMessageIts.ExceptionMessageDetails(ex, msg, "Atenção");

                LoggerUtilIts.GenerateLogs(ex, msg);
            }
        }