OSDN Git Service

v1.1.6.6
[kybernetes/Kybernetes.git] / main / command / change / UpdateCommand.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using com.andoutomo.kybernetes.data.DAO;\r
4 using com.andoutomo.kybernetes.data.accessor;\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 UpdateCommand:AbCommand\r
11     {\r
12         string message;\r
13         protected override bool execute()\r
14         {\r
15             UpdateCommandArg param = (UpdateCommandArg)argument;\r
16             TaskData data = param.PreparedTaskData;\r
17 \r
18             TaskDataAccessor accessor = TaskDataAccessor.getObject;\r
19 \r
20             if (data == null)\r
21             {\r
22                 base.errorType = ErrorType.DataNotFound;\r
23                 return false;\r
24             }\r
25             if (param.changeDialog)\r
26             {\r
27                 #region 実施事項\r
28                 data.Contents = form.showInputBox("実施事項を入力してください。",data.Contents,ImeMode.Hiragana);\r
29                 if (data.Contents == null || data.Contents == string.Empty)\r
30                 {\r
31                     message = "処理を中断しました。";\r
32                     return false;\r
33                 }\r
34                 #endregion\r
35                 #region 実行日付\r
36                 string dateStr = form.showInputBox("日付をyyyyMMddかMMddで入力してください。空の場合は今日とします。",data.DoDate.getDateString("yyyyMMdd"));\r
37                 if (dateStr == null)\r
38                 {\r
39                     message = "処理を中断しました。";\r
40                     return false;\r
41                 }\r
42 \r
43                 if (dateStr == string.Empty)\r
44                 {\r
45                     dateStr = DateTime.Today.ToString("yyyyMMdd");\r
46                 }\r
47                 try\r
48                 {\r
49                     data.DoDate = new data.DateComponent(dateStr);\r
50                 }\r
51                 catch (Exception e)\r
52                 {\r
53                     message = "日付に不備がありました。お手数ですが最初からやり直してください。";\r
54                     return false;\r
55                 }\r
56                 #endregion\r
57                 #region タイムエリア\r
58 \r
59                 string wkTimeArea= form.showInputBox("タイムエリアを選択してください(A-Z)",data.TimeArea);\r
60                 if (wkTimeArea.Contains(":"))\r
61                 {\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                     data.TimeArea = wkTimeArea.ToUpper();\r
76                     if (data.TimeArea == null || data.TimeArea == string.Empty)\r
77                     {\r
78                         message = "処理を中断しました。";\r
79                         return false;\r
80                     }\r
81                 }\r
82                 #endregion\r
83                 #region カテゴリ\r
84                 CategoryDataAccessor dataAccessor = CategoryDataAccessor.getObject;\r
85                 //string wkStr = form.showInputBox("カテゴリを記入してください。");\r
86                 List<CategoryData> allList = dataAccessor.getAllCategory();\r
87                 List<SimpleDataBean> dropdownList = new List<SimpleDataBean>();\r
88                 bool wkIsOK;\r
89                 foreach (CategoryData categList in allList)\r
90                 {\r
91                     dropdownList.Add(categList.dataForDropDown);\r
92                 }\r
93 \r
94                 CategoryData selectedCategory = dataAccessor.getCategoryFromID(data.CategID);\r
95                 string wkStr;\r
96                 if (selectedCategory == null)\r
97                 {\r
98                     wkStr = form.showDropBoxInputBox(dropdownList, "カテゴリを入力してください。",out wkIsOK);\r
99                 }\r
100                 else\r
101                 {\r
102                     wkStr = form.showDropBoxInputBox(dropdownList, "カテゴリを入力してください。", selectedCategory.Category, out wkIsOK);\r
103                 }\r
104 \r
105                 if (!wkIsOK)\r
106                 {\r
107                     message = "処理を中断しました。";\r
108                     return false;\r
109 \r
110                 }\r
111 \r
112                 CategoryData categData = dataAccessor.getCategoryFromName(wkStr);\r
113                 if (categData != null)\r
114                 {\r
115                     data.CategID = categData.CategId;\r
116                 }\r
117                 else\r
118                 {\r
119                     data.CategID = 99;\r
120                 }\r
121                 #endregion\r
122 \r
123                 #region 見積もり時間\r
124                 string wkFrcstMin = form.showInputBox("見積時間を入力してください。",data.ForecastMin.ToString());\r
125                 if (wkFrcstMin == null || wkFrcstMin == string.Empty)\r
126                 {\r
127                     message = "処理を中断しました。";\r
128                     return false;\r
129 \r
130                 }\r
131                 if (wkFrcstMin.ToLower().EndsWith("h"))\r
132                 {\r
133                     decimal forcastTime;\r
134                     string timestr = wkFrcstMin.Substring(0, wkFrcstMin.Length - 1);\r
135                     if (decimal.TryParse(timestr, out forcastTime))\r
136                     {\r
137                         data.ForecastMin = decimal.ToInt32(forcastTime * 60);\r
138                     }\r
139                 }\r
140                 else\r
141                 {\r
142                     data.ForecastMin = Convert.ToInt32(wkFrcstMin);\r
143                 }\r
144                 #endregion\r
145 \r
146                 #region プロジェクト\r
147                  \r
148                 \r
149                 string wkProject = null;\r
150                 List<SimpleDataBean> beanList = accessor.getProjectList();\r
151                 wkProject = form.showDropBoxInputBox(beanList, "プロジェクトを入力してください。", data.Project, out wkIsOK);\r
152                 if (!wkIsOK)\r
153                 {\r
154                     message = "処理を中断しました。";\r
155                     return false;\r
156                 }\r
157                 data.Project = wkProject;\r
158                 #endregion\r
159                 \r
160                 #region タグ\r
161                 data.Tags = form.showInputBox("タグを入力してください", data.Tags);\r
162 \r
163                 #endregion\r
164 \r
165             }\r
166 \r
167 \r
168             \r
169             //成功した場合のメッセージをここで作っておく\r
170             message = "タスクNo." + data.SortID + "を更新しました。";\r
171             return accessor.updateTask(data);\r
172 \r
173         }\r
174 \r
175         protected override string turnMessage()\r
176         {\r
177             return message;\r
178         }\r
179 \r
180         protected override string turnErrorMessage()\r
181         {\r
182             if (message == string.Empty)\r
183             {\r
184                 return base.DefaultErrorMessage;\r
185             }\r
186             else\r
187             {\r
188                 return message;\r
189             }\r
190         }\r
191 \r
192         protected override string turnSplitErrorMessage()\r
193         {\r
194             return base.DefaultSplitErrorMessage;\r
195         }\r
196     }\r
197 }\r