67 lines
2.1 KiB
C#
67 lines
2.1 KiB
C#
using MongoDB.Driver;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Newtonsoft.Json;
|
|
using System.IO.Compression;
|
|
|
|
namespace BuechermarktClient
|
|
{
|
|
public class Backup
|
|
{
|
|
public static void MakeBackup() {
|
|
string folder = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);
|
|
string backupfolder = folder + "\\backups";
|
|
if (!Directory.Exists(backupfolder)){
|
|
Directory.CreateDirectory(backupfolder);
|
|
}
|
|
string tbackupfoldername = "" + (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
|
|
string tbackupfolder = backupfolder + "\\" + tbackupfoldername;
|
|
Directory.CreateDirectory(tbackupfolder);
|
|
|
|
var bt = MainWindow.BookTypeCollection.Find(e => true).ToList();
|
|
var json = JsonConvert.SerializeObject(bt);
|
|
StringToFile(tbackupfolder + "\\BookTypes.json", json);
|
|
|
|
var b = MainWindow.BookCollection.Find(e => true).ToList();
|
|
json = JsonConvert.SerializeObject(b);
|
|
StringToFile(tbackupfolder + "\\Book.json", json);
|
|
|
|
var s = MainWindow.StudentCollection.Find(e => true).ToList();
|
|
json = JsonConvert.SerializeObject(s);
|
|
StringToFile(tbackupfolder + "\\Students.json", json);
|
|
|
|
ZipFile.CreateFromDirectory(tbackupfolder, tbackupfolder + ".zip");
|
|
DeleteDirectory(tbackupfolder);
|
|
}
|
|
|
|
private static void StringToFile(string filepath, string json)
|
|
{
|
|
//File.Create(filepath);
|
|
File.WriteAllText(filepath, json);
|
|
}
|
|
|
|
public static void DeleteDirectory(string target_dir)
|
|
{
|
|
string[] files = Directory.GetFiles(target_dir);
|
|
string[] dirs = Directory.GetDirectories(target_dir);
|
|
|
|
foreach (string file in files)
|
|
{
|
|
File.SetAttributes(file, FileAttributes.Normal);
|
|
File.Delete(file);
|
|
}
|
|
|
|
foreach (string dir in dirs)
|
|
{
|
|
DeleteDirectory(dir);
|
|
}
|
|
|
|
Directory.Delete(target_dir, false);
|
|
}
|
|
}
|
|
} |