OSDN Git Service

DBファイル追加
[kybernetes/Kybernetes.git] / TaskControlCommand / command / Control / CheckCommand.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Linq;\r
4 using System.Text;\r
5 using com.andoutomo.kybernetes.data.accessor;\r
6 using com.andoutomo.kybernetes.data;\r
7 using com.andoutomo.kybernetes.data.DAO;\r
8 using System.Windows.Forms;\r
9 \r
10 namespace com.andoutomo.kybernetes.command.Control\r
11 {\r
12     class CheckCommand:AbCommand\r
13     {\r
14         CheckCommandArg param;\r
15         protected override bool execute()\r
16         {\r
17             TaskDataAccessor accessor = TaskDataAccessor.getObject;\r
18 \r
19             param = (CheckCommandArg)argument;\r
20             TaskData target = accessor.getTask(param.sortID);\r
21             if (param.AutoMode)\r
22             {\r
23 \r
24                 if (target != null)\r
25                 {\r
26                     TimeComponent lastEndtime = accessor.getNextStartTime(target.DoDate);\r
27                     if (lastEndtime != null && lastEndtime.IsValid)\r
28                     {\r
29                         if (accessor.startTask(target.SortID, lastEndtime))\r
30                         {\r
31                             if (accessor.endTask(target.SortID, lastEndtime))\r
32                             {\r
33                                 string endingComment = form.showInputBox("本タスクへのコメントをどうぞ。", ImeMode.Hiragana);\r
34                                 if (!string.IsNullOrEmpty(endingComment))\r
35                                 {\r
36                                     CommentData data = new CommentData();\r
37                                     data.TaskID = target.TaskID;\r
38                                     data.Comment = endingComment;\r
39 \r
40                                     CommentDataAccessor.getObject.insertComment(data);\r
41                                 }\r
42                                 return repeatCheck(target);\r
43                             }\r
44                             else\r
45                             {\r
46                                 return true;\r
47                             }\r
48                         }\r
49                         else\r
50                         {\r
51                             return false;\r
52                         }\r
53                     }\r
54                     else\r
55                     {\r
56                         message = "終了しているタスクが無いため、自動設定できません。最初は時刻を手動設定してください。";\r
57                         return false;\r
58                     }\r
59                 }\r
60                 else\r
61                 {\r
62                     base.errorType = ErrorType.DataNotFound;\r
63                     return false;\r
64                 }\r
65             }\r
66             else\r
67             {\r
68                 if (accessor.startTask(param.sortID, param.reportTime))\r
69                 {\r
70                     if (accessor.endTask(param.sortID, param.reportTime))\r
71                     {\r
72                         string endingComment = form.showInputBox("本タスクへのコメントをどうぞ。", ImeMode.Hiragana);\r
73                         if (!string.IsNullOrEmpty(endingComment))\r
74                         {\r
75                             CommentData data = new CommentData();\r
76                             data.TaskID = target.TaskID;\r
77                             data.Comment = endingComment;\r
78 \r
79                             CommentDataAccessor.getObject.insertComment(data);\r
80                         }\r
81                         return repeatCheck(target);\r
82                     }\r
83                     else\r
84                     {\r
85                         return false;\r
86                     }\r
87                 }\r
88                 else\r
89                 {\r
90                     return false;\r
91                 }\r
92             }\r
93         }\r
94         string message;\r
95 \r
96         protected override string turnMessage()\r
97         {\r
98             return "タスク " + param.sortID + " をチェック完了しました。";\r
99         }\r
100 \r
101         protected override string turnErrorMessage()\r
102         {\r
103             if (string.IsNullOrEmpty(message))\r
104             {\r
105                 return base.DefaultErrorMessage;\r
106             }\r
107             return message;\r
108         }\r
109 \r
110         protected override string turnSplitErrorMessage()\r
111         {\r
112             return base.DefaultSplitErrorMessage;\r
113         }\r
114         /// <summary>\r
115         /// \r
116         /// </summary>\r
117         /// <param name="_newData"></param>\r
118         /// <returns></returns>\r
119         private bool repeatCheck(TaskData _newData)\r
120         {\r
121             if (TaskDataAccessor.getObject.isRepeatTask(param.sortID))\r
122             {\r
123                 string nextDay = form.showInputBox("次回は何日後ですか?0の場合は繰り返しません。", "1");\r
124                 if (nextDay != "0")\r
125                 {\r
126                     _newData.DoDate.addDate(int.Parse(nextDay));\r
127                     _newData.TaskID = TaskDataAccessor.getObject.getMaxTaskID();\r
128                     _newData.SortID = TaskDataAccessor.getObject.getMaxSortID();\r
129 \r
130 \r
131                     //_newData.CategID = CategoryDataAccessor.getObject.getCategoryFromName(_newData.Category).CategId;\r
132 \r
133                     TaskDataAccessor.getObject.insertTask(_newData);\r
134 \r
135                     //リピート対象としたタスクは複製後もリピート対象とする。\r
136                     TaskDataAccessor.getObject.setRepeatTask(_newData.SortID, true);\r
137 \r
138                     message = "タスク " + param.sortID + " を終了します。次回は" + _newData.DoDate.getDateString() + "です。";\r
139                     return true;\r
140                 }\r
141                 else\r
142                 {\r
143                     //リピートしないと判断したならそこで終了。\r
144                     return true;\r
145                 }\r
146             }\r
147             else\r
148             {\r
149                 //リピート対象でないなら何もしない\r
150                 return true;\r
151             }\r
152         }\r
153         \r
154     }\r
155 }\r