예제 #1
0
        private List <TodoLog> GetTodoLogs()
        {
            var list = new List <TodoLog>();

            DayLogs.ForEach(x => list.AddRange(x.TodoLogs));
            return(list);
        }
예제 #2
0
        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);
        }
예제 #3
0
 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));
     });
 }
예제 #4
0
        /// <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);
        }
예제 #5
0
파일: Employee.cs 프로젝트: PpYCha/Biomet
        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;
            }
            }
        }
예제 #6
0
        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);
        }