/// <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(); }
/// <summary> /// 一時ログ追加クリック /// </summary> private void AddTempLogClick() { var repo = new MyLogRepo(); var data = repo.InsertEmptyTempLogRow(this.TempLogList.Count); this.TempLogList.Add(data); }
/// <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); } }
/// <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(); }
/// <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); } }
/// <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); }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); }
/// <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; } } }
/// <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); } }
/// <summary> /// 指定された日付のログデータを表示 /// </summary> private void ShowDataByRecordedOn() { var repo = new MyLogRepo(); this.LogData = repo.SelectByRecordedOn(this.RecordedOn); }