OSDN Git Service

構成変更のためファイルを置き直し。
[kybernetes/Kybernetes.git] / TaskControlCommand / command / Control / CheckCommand.cs
diff --git a/TaskControlCommand/command/Control/CheckCommand.cs b/TaskControlCommand/command/Control/CheckCommand.cs
new file mode 100644 (file)
index 0000000..cdafbf7
--- /dev/null
@@ -0,0 +1,155 @@
+using System;\r
+using System.Collections.Generic;\r
+using System.Linq;\r
+using System.Text;\r
+using com.andoutomo.kybernetes.data.accessor;\r
+using com.andoutomo.kybernetes.data;\r
+using com.andoutomo.kybernetes.data.DAO;\r
+using System.Windows.Forms;\r
+\r
+namespace com.andoutomo.kybernetes.command.Control\r
+{\r
+    class CheckCommand:AbCommand\r
+    {\r
+        CheckCommandArg param;\r
+        protected override bool execute()\r
+        {\r
+            TaskDataAccessor accessor = TaskDataAccessor.getObject;\r
+\r
+            param = (CheckCommandArg)argument;\r
+            TaskData target = accessor.getTask(param.sortID);\r
+            if (param.AutoMode)\r
+            {\r
+\r
+                if (target != null)\r
+                {\r
+                    TimeComponent lastEndtime = accessor.getNextStartTime(target.DoDate);\r
+                    if (lastEndtime != null && lastEndtime.IsValid)\r
+                    {\r
+                        if (accessor.startTask(target.SortID, lastEndtime))\r
+                        {\r
+                            if (accessor.endTask(target.SortID, lastEndtime))\r
+                            {\r
+                                string endingComment = form.showInputBox("本タスクへのコメントをどうぞ。", ImeMode.Hiragana);\r
+                                if (!string.IsNullOrEmpty(endingComment))\r
+                                {\r
+                                    CommentData data = new CommentData();\r
+                                    data.TaskID = target.TaskID;\r
+                                    data.Comment = endingComment;\r
+\r
+                                    CommentDataAccessor.getObject.insertComment(data);\r
+                                }\r
+                                return repeatCheck(target);\r
+                            }\r
+                            else\r
+                            {\r
+                                return true;\r
+                            }\r
+                        }\r
+                        else\r
+                        {\r
+                            return false;\r
+                        }\r
+                    }\r
+                    else\r
+                    {\r
+                        message = "終了しているタスクが無いため、自動設定できません。最初は時刻を手動設定してください。";\r
+                        return false;\r
+                    }\r
+                }\r
+                else\r
+                {\r
+                    base.errorType = ErrorType.DataNotFound;\r
+                    return false;\r
+                }\r
+            }\r
+            else\r
+            {\r
+                if (accessor.startTask(param.sortID, param.reportTime))\r
+                {\r
+                    if (accessor.endTask(param.sortID, param.reportTime))\r
+                    {\r
+                        string endingComment = form.showInputBox("本タスクへのコメントをどうぞ。", ImeMode.Hiragana);\r
+                        if (!string.IsNullOrEmpty(endingComment))\r
+                        {\r
+                            CommentData data = new CommentData();\r
+                            data.TaskID = target.TaskID;\r
+                            data.Comment = endingComment;\r
+\r
+                            CommentDataAccessor.getObject.insertComment(data);\r
+                        }\r
+                        return repeatCheck(target);\r
+                    }\r
+                    else\r
+                    {\r
+                        return false;\r
+                    }\r
+                }\r
+                else\r
+                {\r
+                    return false;\r
+                }\r
+            }\r
+        }\r
+        string message;\r
+\r
+        protected override string turnMessage()\r
+        {\r
+            return "タスク " + param.sortID + " をチェック完了しました。";\r
+        }\r
+\r
+        protected override string turnErrorMessage()\r
+        {\r
+            if (string.IsNullOrEmpty(message))\r
+            {\r
+                return base.DefaultErrorMessage;\r
+            }\r
+            return message;\r
+        }\r
+\r
+        protected override string turnSplitErrorMessage()\r
+        {\r
+            return base.DefaultSplitErrorMessage;\r
+        }\r
+        /// <summary>\r
+        /// \r
+        /// </summary>\r
+        /// <param name="_newData"></param>\r
+        /// <returns></returns>\r
+        private bool repeatCheck(TaskData _newData)\r
+        {\r
+            if (TaskDataAccessor.getObject.isRepeatTask(param.sortID))\r
+            {\r
+                string nextDay = form.showInputBox("次回は何日後ですか?0の場合は繰り返しません。", "1");\r
+                if (nextDay != "0")\r
+                {\r
+                    _newData.DoDate.addDate(int.Parse(nextDay));\r
+                    _newData.TaskID = TaskDataAccessor.getObject.getMaxTaskID();\r
+                    _newData.SortID = TaskDataAccessor.getObject.getMaxSortID();\r
+\r
+\r
+                    //_newData.CategID = CategoryDataAccessor.getObject.getCategoryFromName(_newData.Category).CategId;\r
+\r
+                    TaskDataAccessor.getObject.insertTask(_newData);\r
+\r
+                    //リピート対象としたタスクは複製後もリピート対象とする。\r
+                    TaskDataAccessor.getObject.setRepeatTask(_newData.SortID, true);\r
+\r
+                    message = "タスク " + param.sortID + " を終了します。次回は" + _newData.DoDate.getDateString() + "です。";\r
+                    return true;\r
+                }\r
+                else\r
+                {\r
+                    //リピートしないと判断したならそこで終了。\r
+                    return true;\r
+                }\r
+            }\r
+            else\r
+            {\r
+                //リピート対象でないなら何もしない\r
+                return true;\r
+            }\r
+        }\r
+        \r
+    }\r
+}\r