OSDN Git Service

Kybernetes1.1.6.8リリース
[kybernetes/Kybernetes.git] / main / command / change / AddCommand.cs
1 using System;\r
2 using com.andoutomo.kybernetes.data.accessor;\r
3 using com.andoutomo.kybernetes.data.DAO;\r
4 using System.Collections.Generic;\r
5 using System.Windows.Forms;\r
6 using com.andoutomo.kybernetes.data;\r
7 \r
8 namespace com.andoutomo.kybernetes.command.change\r
9 {\r
10     class AddCommand:AbCommand\r
11     {\r
12 \r
13         private string message;\r
14         protected override bool execute()\r
15         {\r
16             AddCommandArgs addArgs = (AddCommandArgs)base.argument;\r
17             TaskData data = addArgs.PreparedTaskData;\r
18             TaskDataAccessor taskAccessor = TaskDataAccessor.getObject;\r
19 \r
20             if (data.Contents == null)\r
21             {\r
22                 data.Contents = form.showInputBox("実施事項を入力してください。",ImeMode.Hiragana);\r
23                 if (data.Contents == null || data.Contents == string.Empty)\r
24                 {\r
25                     message = "処理を中断しました。";\r
26                     return false;\r
27                 }\r
28             }\r
29             if (data.DoDate == null)\r
30             {\r
31                 string dateStr =\r
32                     form.showInputBox("日付をyyyyMMddかMMddで入力してください。空の場合は今日とします。");\r
33                 if (dateStr == null)\r
34                 {\r
35                     message = "処理を中断しました。";\r
36                     return false;\r
37                 }\r
38 \r
39                 if (dateStr == string.Empty)\r
40                 {\r
41                     dateStr = SettingDataAccessor.getObject.getToday().getDateString("yyyyMMdd");\r
42                 }\r
43                 try\r
44                 {\r
45                     data.DoDate = new data.DateComponent(dateStr);\r
46                 }\r
47                 catch (Exception e)\r
48                 {\r
49                     message = "日付に不備がありました。お手数ですが最初からやり直してください。";\r
50                     return false;\r
51                 }\r
52                 \r
53             }\r
54             if (data.TimeArea == null)\r
55             {\r
56                 TimeComponent now = TimeComponent.justNow();\r
57                 string defaultTimeArea = TimeAreaDataAccessor.getObject.getDefaultTimeArea(now);\r
58 \r
59                 string wkTimeArea = form.showInputBox("タイムエリア(A-Z)または開始時間を入力してください", defaultTimeArea);\r
60                 //時刻入力された場合はタイムエリアを判定し、時間をタイトルに付与して続行\r
61                 if (wkTimeArea.Contains(":"))\r
62                 {\r
63                     TimeComponent wkTimeAreaComp = new TimeComponent(wkTimeArea);\r
64                     string wkEstimatedTimeArea = TimeAreaDataAccessor.getObject.getDefaultTimeArea(wkTimeAreaComp);\r
65                     if (string.IsNullOrEmpty(wkEstimatedTimeArea))\r
66                     {\r
67                         message = "処理を中断しました。";\r
68                         return false;\r
69                     }\r
70                     data.TimeArea = wkEstimatedTimeArea;\r
71                     data.Contents = data.Contents + "(" + wkTimeAreaComp.ToString() + ")";\r
72                 }\r
73                 else\r
74                 {\r
75 \r
76                     if (string.IsNullOrEmpty(wkTimeArea))\r
77                     {\r
78                         message = "処理を中断しました。";\r
79                         return false;\r
80                     }\r
81                     data.TimeArea = wkTimeArea.ToUpper();\r
82                 }\r
83             }\r
84             if (data.CategID == 0)\r
85             {\r
86                 if (data.Category == null)\r
87                 {\r
88                     CategoryDataAccessor dataAccessor = CategoryDataAccessor.getObject;\r
89                     //string wkStr = form.showInputBox("カテゴリを記入してください。");\r
90                     List<CategoryData> allList = dataAccessor.getAllCategory();\r
91                     List<SimpleDataBean> dropdownList = new List<SimpleDataBean>();\r
92                     bool wkIsOK;\r
93 \r
94                     foreach (CategoryData categList in allList)\r
95                     {\r
96                         dropdownList.Add(categList.dataForDropDown);\r
97                     }\r
98                     string wkStr = form.showDropBoxInputBox(dropdownList, "カテゴリを入力してください。", out wkIsOK);\r
99 \r
100                     if (!wkIsOK)\r
101                     {\r
102                         message = "処理を中断しました。";\r
103                         return false;\r
104                     }\r
105                     if (string.IsNullOrEmpty(wkStr))\r
106                     {\r
107                         message = "処理を中断しました。";\r
108                         return false;\r
109                     }\r
110 \r
111                     CategoryData categData = dataAccessor.getCategoryFromName(wkStr);\r
112                     if (categData != null)\r
113                     {\r
114                         data.CategID = categData.CategId;\r
115                     }\r
116                     else\r
117                     {\r
118                         data.CategID = 0;\r
119                     }\r
120                 }\r
121                 else\r
122                 {\r
123                     data.CategID = addArgs.CategoryID;\r
124                 }\r
125             }\r
126             if (data.ForecastMin == 0)\r
127             {\r
128                 string wkFrcstMin = form.showInputBox("見積時間を分単位で入力してください。","0");\r
129                 if (wkFrcstMin == null)\r
130                 {\r
131                     message = "処理を中断しました。";\r
132                     return false;\r
133                 }\r
134                 if (wkFrcstMin == string.Empty)\r
135                 {\r
136                     wkFrcstMin = "0";\r
137                     \r
138                 }\r
139                 if (wkFrcstMin.ToLower().EndsWith("h"))\r
140                 {\r
141                     decimal forcastTime;\r
142                     string timestr = wkFrcstMin.Substring(0, wkFrcstMin.Length - 1);\r
143                     if (decimal.TryParse(timestr, out forcastTime))\r
144                     {\r
145                         data.ForecastMin = decimal.ToInt32(forcastTime * 60);\r
146                     }\r
147                 }\r
148                 else\r
149                 {\r
150                     data.ForecastMin = Convert.ToInt32(wkFrcstMin);                    \r
151                 }\r
152             }\r
153             if (data.Project == null)\r
154             {\r
155                 bool wkIsOK;\r
156                 string wkProject = null;\r
157                 List<SimpleDataBean> beanList = taskAccessor.getProjectList();\r
158                 wkProject = form.showDropBoxInputBox(beanList, "プロジェクトを入力してください。",out wkIsOK);\r
159                 if (!wkIsOK)\r
160                 {\r
161                     message = "処理を中断しました。";\r
162                     return false;\r
163                 }\r
164                 data.Project = wkProject;\r
165             }\r
166             if (data.Tags == null)\r
167             {\r
168                 bool wkIsOK;\r
169                 string wkTag = null;\r
170                 List<SimpleDataBean> beanList = taskAccessor.getTagList();\r
171                 wkTag = form.showDropBoxInputBox(beanList, "タグを入力してください。",out wkIsOK);\r
172                 if (!wkIsOK)\r
173                 {\r
174                     message = "処理を中断しました。";\r
175                     return false;\r
176                 }\r
177                 data.Tags = wkTag;\r
178             }\r
179 \r
180             //DBへの追加\r
181             data.TaskID = taskAccessor.getMaxTaskID();\r
182             if (data.SortID == 0)\r
183             {\r
184                 data.SortID = taskAccessor.getMaxSortID();\r
185             }\r
186             if (taskAccessor.insertTask(data))\r
187             {\r
188                 message = "タスクNo." + data.SortID + "「" + data.Contents + "」を追加しました。";\r
189                 return true;\r
190             }\r
191             else\r
192             {\r
193                 message = "処理途中でエラーが発生しました。";\r
194                 return false;\r
195             }\r
196         }\r
197         protected override string turnMessage()\r
198         {\r
199             return message;\r
200         }\r
201 \r
202         protected override string turnErrorMessage()\r
203         {\r
204             if (string.IsNullOrEmpty(message))\r
205             {\r
206                 return base.DefaultErrorMessage;\r
207             }\r
208             else\r
209             {\r
210                 return message;\r
211             }\r
212         }\r
213 \r
214         protected override string turnSplitErrorMessage()\r
215         {\r
216             return base.DefaultSplitErrorMessage;\r
217         }\r
218     }\r
219 }\r