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); } } } }
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."); }
/// <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); } } }
/// <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"); } }
/// <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); }
//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); } } }
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); } }