OSDN Git Service

47b54fe3f9a6073c789cfe6cc14a882b0b9dcddf
[kybernetes/Kybernetes.git] / TaskControlCommand / command / Control / ReportCommand.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.DAO;\r
7 using com.andoutomo.kybernetes.data;\r
8 using com.andoutomo.kybernetes.view;\r
9 using System.Windows.Forms;\r
10 \r
11 namespace com.andoutomo.kybernetes.command.Control\r
12 {\r
13     class ReportCommand:AbCommand\r
14     {\r
15         string message;\r
16         ReportCommandArg param;\r
17         protected override bool execute()\r
18         {\r
19             param = (ReportCommandArg)argument;\r
20 \r
21             TaskData _newData = TaskDataAccessor.getObject.getTask(param.sortID);\r
22             if (_newData == null)\r
23             {\r
24                 base.errorType = ErrorType.DataNotFound;\r
25                 return false;\r
26             }\r
27             if (_newData.StartTime == null || _newData.StartTime.IsValid == false)\r
28             {\r
29                 TaskDataAccessor.getObject.startTask(_newData.SortID, TaskDataAccessor.getObject.getNextStartTime(_newData.DoDate));\r
30             }\r
31             if(_newData.EndTime != null && _newData.EndTime.IsValid == true){\r
32                 if (!YesNoDialog.show("本タスクは既に終了しています。終了時間を更新しますか?"))\r
33                 {\r
34                     message = "処理を中断しました。";\r
35                     return true;\r
36                 }\r
37             }\r
38             if (TaskDataAccessor.getObject.endTask(param.sortID, param.reportTime))\r
39             {\r
40                 string endingComment = form.showInputBox("お疲れ様でした。本タスクへのコメントをどうぞ。", ImeMode.Hiragana);\r
41                 if (!string.IsNullOrEmpty(endingComment))\r
42                 {\r
43                     CommentData data = new CommentData();\r
44                     data.TaskID = _newData.TaskID;\r
45                     data.Comment = endingComment;\r
46 \r
47                     CommentDataAccessor.getObject.insertComment(data);\r
48                 }\r
49                 if (TaskDataAccessor.getObject.isRepeatTask(param.sortID))\r
50                 {\r
51                     string nextDay = form.showInputBox("次回は何日後ですか?0の場合は繰り返しません。","1");\r
52                     if (nextDay != "0")\r
53                     {\r
54                         _newData.DoDate.addDate(int.Parse(nextDay));\r
55                         _newData.TaskID = TaskDataAccessor.getObject.getMaxTaskID();\r
56                         _newData.SortID = TaskDataAccessor.getObject.getMaxSortID();\r
57 \r
58 \r
59                         //_newData.CategID = CategoryDataAccessor.getObject.getCategoryFromName(_newData.Category).CategId;\r
60 \r
61                         TaskDataAccessor.getObject.insertTask(_newData);\r
62 \r
63                         //リピート対象としたタスクは複製後もリピート対象とする。\r
64                         TaskDataAccessor.getObject.setRepeatTask(_newData.SortID, true);\r
65 \r
66                         message = "タスク " + param.sortID + " を終了します。次回は" + _newData.DoDate.getDateString() + "です。";\r
67                         return true;\r
68                     }\r
69                 }\r
70                 message = "タスク " + param.sortID + " を終了します。";\r
71                 return true;\r
72             }\r
73             return false;\r
74         }\r
75 \r
76         protected override string turnMessage()\r
77         {\r
78             return message;\r
79         }\r
80 \r
81         protected override string turnErrorMessage()\r
82         {\r
83             return base.DefaultErrorMessage;\r
84         }\r
85 \r
86         protected override string turnSplitErrorMessage()\r
87         {\r
88             return base.DefaultSplitErrorMessage;\r
89         }\r
90     }\r
91 }\r