示例#1
0
        public MyData Clone()
        {
            var f = Path.GetTempFileName();

            Save(f, true);
            var res = new MyData();

            res.Load(f);
            return(res);
        }
示例#2
0
        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);
        }
示例#3
0
 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);
         }
     }
 }
示例#4
0
        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 { }
            }
        }