private List <TodoLog> GetTodoLogs() { var list = new List <TodoLog>(); DayLogs.ForEach(x => list.AddRange(x.TodoLogs)); return(list); }
public async Task Remove(TodoLog item) { if (item == null) { return; } //检查是否存在 var data = LoadLogs(item.ProjcectId); var log = data.Logs.FirstOrDefault(x => x.Key == item.Key); var daylog = DayLogs.FirstOrDefault(x => x.TodoLogs.Count(y => y.Key == item.Key) > 0); //移除项目 daylog.TodoLogs.Remove(log); if (daylog.TodoLogs.Count == 0) { //移除项目 DayLogs.Remove(daylog); //移除索引 DataIndex.DayLogs.Remove(daylog.Key); await Remove(daylog.Key); } else { await Save(daylog); } await Save(DataIndex); MessageAction?.Invoke(MessageTypeUpdate); }
private async Task LoadDayLog() { using var db = await NewDb; DayLogs = db.DayLogs.ToList(); DayLogs.Select(x => x.TodoLogs).ToList().ForEach(x => { IndexProject.DayLogs.AddRange(x.Where(y => string.IsNullOrWhiteSpace(y.ProjcectId)).Select(y => y.Key)); }); }
/// <summary> /// 更新数据 /// </summary> /// <param name="item"></param> public async Task Update(TodoLog item) { if (item == null) { return; } var daykey = item.Created.GetDayId(); var p = DayLogs.FirstOrDefault(x => x.Date == daykey); if (p == null) { //创建新的日期 var daylog = new DayLog { Date = daykey, TodoLogs = new List <TodoLog>() }; Created(daylog); Created(item); daylog.TodoLogs.Add(item); DayLogs.Add(daylog); DataIndex.DayLogs.AddUniq(daylog.Key); await Save(daylog); await Save(DataIndex); } else { //检查记录是否存在 var tl = p.TodoLogs.FirstOrDefault(x => x.Key == item.Key && x.ProjcectId == item.ProjcectId && x.TodoId == item.TodoId); if (tl == null) { Created(item); //创建新记录 p.TodoLogs.Add(item); } else { //更新 tl.Update(item); } await Save(p); } MessageAction?.Invoke(MessageTypeUpdate); }
public void SetLog(int selectedLogType, DateTime?logdate = null) { if (!logdate.HasValue) { logdate = DateTime.Now; } var daylog = DayLogs.First(); switch (selectedLogType) { case 1: { daylog.AMIN = daylog.AMIN.HasValue ? throw new InvalidOperationException("Redundant Log is not allowed!") : logdate.Value; break; } case 2: { daylog.AMOUT = daylog.AMOUT.HasValue ? throw new InvalidOperationException("Redundant Log is not allowed!") : logdate.Value; break; } case 3: { daylog.PMIN = daylog.PMIN.HasValue ? throw new InvalidOperationException("Redundant Log is not allowed!") : logdate.Value; break; } case 4: { daylog.PMOUT = daylog.PMOUT.HasValue ? throw new InvalidOperationException("Redundant Log is not allowed!") : logdate.Value; break; } } }
private async Task Init() { //加载索引 DataIndex = await Load <DataIndex>(dataIndexKey); if (DataIndex == null) { //首次使用 DataIndex = new DataIndex { Key = dataIndexKey, Created = DateTime.Now, Creator = Operator.Name }; return; } //加载数据 foreach (var item in DataIndex.Projects) { var dat = await Load <Project>(item); if (dat == null) { continue; } Projects.Add(dat); } foreach (var item in DataIndex.Todos) { var dat = await Load <Todo>(item); if (dat == null) { continue; } Todos.Add(dat); if (string.IsNullOrWhiteSpace(dat.ProjcectId)) { IndexProject.Todos.Add(dat.Key); } } foreach (var item in DataIndex.DayLogs) { var dat = await Load <DayLog>(item); if (dat == null) { continue; } DayLogs.Add(dat); dat.TodoLogs.ForEach(x => { if (string.IsNullOrWhiteSpace(x.ProjcectId)) { IndexProject.DayLogs.Add(x.Key); } }); } foreach (var item in DataIndex.Reports) { var dat = await Load <Report>(item); if (dat == null) { continue; } Reports.Add(dat); } MessageAction?.Invoke(MessageTypeUpdate); }