Ejemplo n.º 1
0
 /// <summary>
 /// ログデータをエンティティん設定する
 /// </summary>
 /// <param name="data">ログデータ</param>
 internal void Set(LogDetailData data)
 {
     this.Id          = data.Id;
     this.LogId       = data.LogId;
     this.CategoryId  = data.CategoryId;
     this.Priority    = data.Priority;
     this.Result      = (int)data.Result;
     this.Todo        = data.Todo;
     this.PlanStart   = data.PlanStart;
     this.PlanEnd     = data.PlanEnd;
     this.PlanTime    = data.PlanTime;
     this.ActualStart = data.ActualStart;
     this.ActualEnd   = data.ActualEnd;
     this.ActualTime  = data.ActualTime;
     this.Memo        = data.Memo;
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 空行を作成する
        /// </summary>
        /// <param name="logId">ログ情報ID</param>
        /// <param name="categoryId">カテゴリID</param>
        /// <param name="order">並び順</param>
        /// <returns></returns>
        internal LogDetailData InsertEmptyRow(long logId, long categoryId, int order)
        {
            var result = new LogDetailData();

            using (var database = new MyLogDatabase(Constants.DatabaseFile())) {
                database.Open();
                database.BeginTrans();

                var entity = new LogDetailEntity(database)
                {
                    LogId      = logId,
                    CategoryId = categoryId,
                    Priority   = order
                };
                result.Id         = entity.Insert();
                result.LogId      = logId;
                result.CategoryId = categoryId;
                result.Priority   = order;
                database.CommitTrans();
            }
            return(result);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 記録日をキーとしてログ情報を取得
        /// </summary>
        /// <param name="recordedOn">記録日</param>
        /// <returns>取得結果(該当情報が存在しない場合はnullを返却)</returns>
        internal LogData SelectByRecordedOn(string recordedOn)
        {
            LogData result     = null;
            var     startIndex = 0;

            using (var database = new MyLogDatabase(Constants.DatabaseFile())) {
                database.Open();

                // ヘッダ情報を取得
                var logId        = 0L;
                var headerEntity = new LogEntity(database);
                using (var recset = headerEntity.SelectByRecordedOn(recordedOn)) {
                    if (!recset.Read())
                    {
                        return(result);
                    }
                    logId = recset.GetInt(LogEntity.Cols.Id);
                }
                result = new LogData {
                    Id         = logId,
                    RecordedOn = recordedOn,
                    LogList    = new ObservableCollection <LogDetailData>()
                };

                // カテゴリ情報を取得
                var categories     = new Dictionary <long, string>();
                var categoryEntity = new CategoryEntity(database);
                using (var recset = categoryEntity.SelectVisible()) {
                    while (recset.Read())
                    {
                        categories.Add(recset.GetLong(CategoryEntity.Cols.Id),
                                       recset.GetString(CategoryEntity.Cols.Name));
                    }
                }

                // 明細情報を取得
                var detailEntity = new LogDetailEntity(database);
                using (var recset = detailEntity.SelectByLogHId(logId)) {
                    var currentCategory = -1L;
                    while (recset.Read())
                    {
                        var detail = new LogDetailData {
                            Id          = recset.GetLong(LogDetailEntity.Cols.Id),
                            LogId       = recset.GetLong(LogDetailEntity.Cols.LogId),
                            CategoryId  = recset.GetLong(LogDetailEntity.Cols.CategoryId),
                            Priority    = recset.GetInt(LogDetailEntity.Cols.Priority),
                            Result      = (ResultState)recset.GetInt(LogDetailEntity.Cols.Result),
                            Todo        = recset.GetString(LogDetailEntity.Cols.Todo),
                            PlanStart   = recset.GetString(LogDetailEntity.Cols.PlanStart),
                            PlanEnd     = recset.GetString(LogDetailEntity.Cols.PlanEnd),
                            PlanTime    = recset.GetInt(LogDetailEntity.Cols.PlanTime).ToString(),
                            ActualStart = recset.GetString(LogDetailEntity.Cols.ActualStart),
                            ActualEnd   = recset.GetString(LogDetailEntity.Cols.ActualEnd),
                            ActualTime  = recset.GetInt(LogDetailEntity.Cols.ActualTime).ToString(),
                            Memo        = recset.GetString(LogDetailEntity.Cols.Memo)
                        };
                        detail.Priority   = recset.GetInt(LogDetailEntity.Cols.Priority);
                        detail.IsCategory = false;

                        if (currentCategory != detail.CategoryId)
                        {
                            for (var i = startIndex; i < categories.Count; i++)
                            {
                                var categoryId = categories.ElementAt(i).Key;
                                var category   = new LogDetailData {
                                    IsCategory   = true,
                                    CategoryId   = categoryId,
                                    CategoryName = categories[categoryId]
                                };
                                result.LogList.Add(category);
                                if (categoryId == detail.CategoryId)
                                {
                                    currentCategory = categoryId;
                                    startIndex      = i + 1;
                                    break;
                                }
                                currentCategory = categoryId;
                            }
                        }
                        result.LogList.Add(detail);
                    }

                    startIndex = -1;
                    for (var i = 0; i < categories.Count; i++)
                    {
                        if (currentCategory == categories.ElementAt((int)i).Key)
                        {
                            startIndex = i;
                            break;
                        }
                    }

                    for (var i = startIndex + 1; i < categories.Count; i++)
                    {
                        var categoryId = categories.ElementAt(i).Key;
                        if (currentCategory < categoryId)
                        {
                            var category = new LogDetailData {
                                IsCategory   = true,
                                CategoryId   = categoryId,
                                CategoryName = categories[categoryId]
                            };
                            result.LogList.Add(category);
                        }
                    }
                }
            }
            return(result);
        }