buechermarkt/BuechermarktClient/Backup.cs
Fabian Stamm 129e0679cd Basic Implemetation of all needed function to take Books and create Students etc.
Missing is the automatic Server Identification and Signing Stuff
2017-05-18 12:57:50 +02:00

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);
}
}
}