Beispiel #1
0
        /// <summary>
        /// 初期処理
        /// </summary>
        private void Initialize()
        {
            // コマンドを設定
            this.PrevDayCommand        = new DelegateCommand(PrevDayClick);
            this.NextDayCommand        = new DelegateCommand(NextDayClick);
            this.NewTodoCommand        = new DelegateCommand(NewTodoClick);
            this.SelectTemplateCommand = new DelegateCommand(SelectTemplateClick);
            this.EmptyTodoCommand      = new DelegateCommand(EmptyTodoClick);
            this.CalendarCommand       = new DelegateCommand(CalendarClick);
            this.EditCategoryCommand   = new DelegateCommand(EditCategoryClick, () => true);
            this.EditTemplateCommand   = new DelegateCommand(EditTemplateClick, () => true);
            this.DeleteCommand         = new DelegateCommand(DeleteClick, () => HasData);
            this.SelectDatabaseCommand = new DelegateCommand(SelectDatabaseClick);
            this.AddLogCommand         = new DelegateCommandWithParam <long>(AddLogClick);
            this.DeleteTodoCommand     = new DelegateCommandWithParam <int>(DeleteTodoClick);
            this.AddTempLogCommand     = new DelegateCommand(AddTempLogClick);
            this.DeleteTempLogCommand  = new DelegateCommandWithParam <int>(DeleteTempLogClick);

            // 初期データを表示
            this.RecordedOn = DateTime.Now.ToString(DateFormat);
            this.ShowDataByRecordedOn();
            var repo = new MyLogRepo();

            this.TempLogList = repo.SelectTempLogList();
        }
Beispiel #2
0
        /// <summary>
        /// 一時ログ追加クリック
        /// </summary>
        private void AddTempLogClick()
        {
            var repo = new MyLogRepo();
            var data = repo.InsertEmptyTempLogRow(this.TempLogList.Count);

            this.TempLogList.Add(data);
        }
Beispiel #3
0
        /// <summary>
        /// 実績時間変更イベント
        /// </summary>
        /// <param name="id">id</param>
        /// <param name="start">開始時刻</param>
        /// <param name="end">終了時刻</param>
        /// <param name="span">時間</param>
        public void EndTimeChanged(long id, string start, string end, int span)
        {
            var repo = new MyLogRepo();

            try {
                repo.UpdateActualTimeById(id, start, end, span);
                if ((0 < end.Length || 0 < span))
                {
                    foreach (var data in this.LogData.LogList)
                    {
                        if (data.Id == id)
                        {
                            if (data.Result == Component.ResultButton.ResultState.None)
                            {
                                data.Result = Component.ResultButton.ResultState.Done;
                                ResultChanged(id, (int)data.Result);
                            }
                            break;
                        }
                    }
                }
            } catch (Exception ex) {
                Message.ShowError(this._window, Message.ErrId.Err003, ex.Message);
            }
        }
Beispiel #4
0
        /// <summary>
        /// Todo追加クリック時の処理
        /// </summary>
        /// <param name="categoryId">カテゴリID</param>
        private void AddLogClick(long categoryId)
        {
            var foundHeader = false;
            var repo        = new MyLogRepo();
            var detailData  = repo.InsertEmptyRow(this.LogData.Id, categoryId, -1);

            foreach (var(log, index) in this.LogData.LogList.Select((log, index) => (log, index)))
            {
                if (log.IsCategory && log.CategoryId == categoryId)
                {
                    foundHeader = true;
                    continue;
                }
                if (foundHeader && log.CategoryId != categoryId)
                {
                    // 該当するカテゴリの末尾に追加する
                    this.LogData.LogList.Insert(index, detailData);
                    this.SetPriority();
                    return;
                }
            }
            if (foundHeader)
            {
                // 対象が最後のカテゴリのケース
                this.LogData.LogList.Add(detailData);
            }
            this.SetPriority();
        }
Beispiel #5
0
 /// <summary>
 /// 空のTODO作成クリック時の処理
 /// </summary>
 private void EmptyTodoClick()
 {
     try {
         var repo = new MyLogRepo();
         this.LogData = repo.CreateEmptyLog(this.RecordedOn);
     } catch (Exception ex) {
         Message.ShowError(this._window, Message.ErrId.Err003, ex.Message);
     }
 }
Beispiel #6
0
        /// <summary>
        /// カテゴリも含めて 並び順を振り直す
        /// </summary>
        /// <remarks>歯抜けが発生することになるが順番は保たれるので問題ないはず</remarks>
        private void SetPriority()
        {
            foreach (var(log, index) in this.LogData.LogList.Select((log, index) => (log, index)))
            {
                log.Priority = index;
            }
            var repo = new MyLogRepo();

            repo.UpdateOrderById(this.LogData.LogList);
        }
Beispiel #7
0
 /// <summary>
 /// ログ削除クリック時の処理
 /// </summary>
 private void DeleteClick()
 {
     try {
         var repo = new MyLogRepo();
         repo.DeleteById(this.LogData.Id);
         this.LogData = null;
     } catch (Exception ex) {
         Message.ShowError(this._window, Message.ErrId.Err003, ex.Message);
     }
 }
Beispiel #8
0
        /// <summary>
        /// テンプログメモ変更 イベント
        /// </summary>
        /// <param name="id"></param>
        /// <param name="memo"></param>
        public void TempLogMemoChanged(long id, string memo)
        {
            var repo = new MyLogRepo();

            try {
                repo.UpdateTempMemoById(id, memo);
            } catch (Exception ex) {
                Message.ShowError(this._window, Message.ErrId.Err003, ex.Message);
            }
        }
Beispiel #9
0
        /// <summary>
        /// 予定時間変更イベント
        /// </summary>
        /// <param name="id">id</param>
        /// <param name="start">開始時刻</param>
        /// <param name="end">終了時刻</param>
        /// <param name="span">時間</param>
        public void StartTimeChanged(long id, string start, string end, int span)
        {
            var repo = new MyLogRepo();

            try {
                repo.UpdatePlanTimeById(id, start, end, span);
            } catch (Exception ex) {
                Message.ShowError(this._window, Message.ErrId.Err003, ex.Message);
            }
        }
Beispiel #10
0
        /// <summary>
        /// 結果変更時イベント
        /// </summary>
        /// <param name="id">id</param>
        /// <param name="memo">メモ</param>
        public void ResultChanged(long id, int result)
        {
            var repo = new MyLogRepo();

            try {
                repo.UpdateResultById(id, result);
            } catch (Exception ex) {
                Message.ShowError(this._window, Message.ErrId.Err003, ex.Message);
            }
        }
Beispiel #11
0
        /// <summary>
        /// ドロップイベント
        /// </summary>
        public void TempDropDone(int newIndex)
        {
            foreach (var(log, index) in this.TempLogList.Select((log, index) => (log, index)))
            {
                log.Priority = index;
            }
            var repo = new MyLogRepo();

            repo.UpdateTempOrderById(this.TempLogList);
        }
Beispiel #12
0
 /// <summary>
 /// 一時ログ削除クリック
 /// </summary>
 /// <param name="priority"></param>
 private void DeleteTempLogClick(int priority)
 {
     // Priorityは一意なので
     foreach (var(log, index) in this.TempLogList.Select((log, index) => (log, index)))
     {
         if (log.IsCategory)
         {
             continue;
         }
         if (priority == log.Priority)
         {
             var repo = new MyLogRepo();
             repo.DeleteTempLogById(log.Id);
             this.TempLogList.Remove(log);
             return;
         }
     }
 }
Beispiel #13
0
        /// <summary>
        /// テンプレートを選択してTODO作成をクリック
        /// </summary>
        private void SelectTemplateClick()
        {
            var window = new TemplateSelectWindow()
            {
                Owner = this._window
            };

            if (true != window.ShowDialog())
            {
                return;
            }
            var repo = new MyLogRepo();

            try {
                this.LogData = repo.CreateLogByTemplateId(window.SelectedTemplateId, this.RecordedOn);
            } catch (Exception ex) {
                Message.ShowError(this._window, Message.ErrId.Err003, ex.Message);
            }
        }
Beispiel #14
0
        /// <summary>
        /// 指定された日付のログデータを表示
        /// </summary>
        private void ShowDataByRecordedOn()
        {
            var repo = new MyLogRepo();

            this.LogData = repo.SelectByRecordedOn(this.RecordedOn);
        }