public MyData Clone() { var f = Path.GetTempFileName(); Save(f, true); var res = new MyData(); res.Load(f); return(res); }
public static void ConvertToStr(string fileName, bool all = true, bool previous = false) { MyData db = new MyData(); db.Load(fileName); var date1 = DateTime.Now.AddYears(-1000); if (!all) { date1 = Utils.PersianParse(Utils.PersianYear(DateTime.Now) + "/" + (Utils.PersianMonth(DateTime.Now) + (previous ? -1 : 0)) + "/1"); } var str = Utils.DateString(DateTime.Now) + " - " + Utils.TimeString(DateTime.Now) + "\r\nformat:\r\n >>> PROJECT NAME\r\n Date Duration >> ( start1 - duration1, start2 - duration2, start3 - duration3, ...)\r\n\r\n"; var day = DateTime.Now.Date; foreach (var p in db.Projects) { if (p.Times.Count > 0) { str += " >>> " + p.Name + " [" + p.code + "]:\r\n"; var times_of_day = new List <Time_>(); foreach (var t in p.Times) { if (t.Start >= date1) { if (t.Start.Date != day) { if (times_of_day.Count > 0) { var sum = 0; foreach (var t_d in times_of_day) { sum += t_d.Duration.sec; } if (sum > 10) { str += Utils.DateString(day).PadLeft(10, ' ') + " " + new TSpan(sum) + " >> ( "; foreach (var t_d in times_of_day) { str += Utils.TimeString(t_d.Start) + " - " + t_d.Duration + ", "; } str += " )\r\n"; } } times_of_day.Clear(); day = t.Start.Date; } times_of_day.Add(t); } } str += "\r\n"; } } File.WriteAllText(fileName + ".txt", str); }
public void Save(string fileName, bool evenIfEmptye = false, DateTime?start = null, DateTime?end = null, bool compressed = false) { if (ReadOnlyMode) { return; } if (evenIfEmptye || !IsEmpty()) { Serialize(fileName + ".tmp", this, compressed); if (start == null && end == null) { SafelyRename(fileName + ".tmp", fileName); } else { var db = new MyData(); // a clone of data db.Load(fileName + ".tmp", start, end); db.Save(fileName, evenIfEmptye, compressed: compressed); } } }
public MyData GetBackUp(string user) { var tmp = Path.GetTempFileName(); try { DownloadFile("backup", tmp, "act", "get", "user", user); var db = new MyData(); db.Load(tmp); return(db); } catch { return(null); } finally { try { File.Delete(tmp); } catch { } } }