Files
pecklist/util/FoodooImporter.cs
2018-06-28 23:08:13 +00:00

86 lines
2.6 KiB
C#

using System;
using System.Text;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using GZTW.Pecklist.Models;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.IO;
namespace GZTW.Pecklist.Util
{
public static class FoodooImporter
{
public static void Import(PecklistContext ct)
{
//open and read in the GZListServerBackup.bak file into a json object
//https://www.newtonsoft.com/json/help/html/LINQtoJSON.htm
string sfoo = GetBackupFile();
JArray jin = JArray.Parse(sfoo);
JArray jout = new JArray();
foreach (JObject i in jin)
{
JObject o = new JObject();
o["name"] = (string)i["name"];
o["id"] = Util.ShortId.Generate();
o["name_v"] = (long)i["name_v"];
o["v"] = (long)i["v"];
JArray oitems = new JArray();
foreach (JObject l in i["items"])
{
JObject oitem = new JObject();
oitem["id"] = Util.ShortId.Generate();
oitem["completed"] = (bool)l["completed"];
oitem["text"] = (string)l["text"];
oitem["v"] = (long)l["v"];
var highlight = (bool?)l["highlight"];
if (highlight == null)
{
oitem["priority"] = 1;//default priority
}
else
{
oitem["priority"] = 3;//highest priority
}
oitems.Add(oitem);
}
o["items"] = oitems;
jout.Add(o);
}
//write it into the db
ListData ldat = new ListData();
//this is the most compact way to write the json out as text
ldat.TheList = JsonConvert.SerializeObject(jout);
ct.ListData.Add(ldat);
ct.SaveChanges();
}
private static string GetBackupFile()
{
try
{ // Open the text file using a stream reader.
using (StreamReader sr = new StreamReader("./db/GZListServerBackup.bak"))
{
// Read the stream to a string, and write the string to the console.
String line = sr.ReadToEnd();
return line;
}
}
catch
{
return null;
}
}
//--------
}
}