OSDN Git Service

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