OSDN Git Service

version 1.1
[kybernetes/Kybernetes.git] / KyberNetes / command / CRUD / 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\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 \r
19             if (data.Contents == null)\r
20             {\r
21                 data.Contents = form.showInputBox("実施事項を入力してください。",ImeMode.Hiragana);\r
22                 if (data.Contents == null || data.Contents == string.Empty)\r
23                 {\r
24                     message = "処理を中断しました。";\r
25                     return false;\r
26                 }\r
27             }\r
28             if (data.DoDate == null)\r
29             {\r
30                 string dateStr =\r
31                     form.showInputBox("日付をyyyyMMddかMMddで入力してください。空の場合は今日とします。");\r
32                 if (dateStr == null)\r
33                 {\r
34                     message = "処理を中断しました。";\r
35                     return false;\r
36                 }\r
37 \r
38                 if (dateStr == string.Empty)\r
39                 {\r
40                     dateStr = SettingDataAccessor.getObject.getToday().getDateString("yyyyMMdd");\r
41                 }\r
42                 try\r
43                 {\r
44                     data.DoDate = new data.DateComponent(dateStr);\r
45                 }\r
46                 catch (Exception e)\r
47                 {\r
48                     message = "日付に不備がありました。お手数ですが最初からやり直してください。";\r
49                     return false;\r
50                 }\r
51                 \r
52             }\r
53             if (data.TimeArea == null)\r
54             {\r
55                 TimeComponent now = TimeComponent.justNow();\r
56                 string defaultTimeArea = TimeAreaDataAccessor.getObject.getDefaultTimeArea(now);\r
57                 if (defaultTimeArea == null || defaultTimeArea == string.Empty)\r
58                 {\r
59                     defaultTimeArea = SettingDataAccessor.getObject.getDefaultTimeArea();\r
60                 }\r
61                 string wkTimeArea = form.showInputBox("タイムエリアを選択してください(A-Z)",defaultTimeArea);\r
62                 \r
63                 if (wkTimeArea == null || wkTimeArea == string.Empty)\r
64                 {\r
65                     message = "処理を中断しました。";\r
66                     return false;\r
67                 }\r
68                 data.TimeArea = wkTimeArea.ToUpper();\r
69             }\r
70             if (data.Category == null)\r
71             {\r
72                 CategoryDataAccessor dataAccessor = CategoryDataAccessor.getObject;\r
73                 //string wkStr = form.showInputBox("カテゴリを記入してください。");\r
74                 List<CategoryData> allList = dataAccessor.getAllCategory();\r
75                 List<SimpleDataBean> dropdownList = new List<SimpleDataBean>();\r
76                 \r
77                 foreach (CategoryData categList in allList)\r
78                 {\r
79                     dropdownList.Add(categList.dataForDropDown);\r
80                 }\r
81                 string wkStr = form.showDropBoxInputBox(dropdownList,"カテゴリを入力してください。");\r
82 \r
83                 if (wkStr == null)\r
84                 {\r
85                     message = "処理を中断しました。";\r
86                     return false;\r
87                 }\r
88 \r
89                 CategoryData categData = dataAccessor.getCategoryFromName(wkStr);\r
90                 if (categData != null)\r
91                 {\r
92                     data.CategID = categData.CategId;\r
93                 }\r
94                 else\r
95                 {\r
96                     data.CategID = 0;\r
97                 }\r
98             }\r
99             else\r
100             {\r
101                 data.CategID = addArgs.CategoryID;\r
102             }\r
103             if (data.ForecastMin == 0)\r
104             {\r
105                 string wkFrcstMin = form.showInputBox("見積時間を分単位で入力してください。","0");\r
106                 if (wkFrcstMin == null)\r
107                 {\r
108                     message = "処理を中断しました。";\r
109                     return false;\r
110                 }\r
111                 if (wkFrcstMin == string.Empty)\r
112                 {\r
113                     wkFrcstMin = "0";\r
114                     \r
115                 }\r
116                 if (wkFrcstMin.ToLower().EndsWith("h"))\r
117                 {\r
118                     decimal forcastTime;\r
119                     string timestr = wkFrcstMin.Substring(0, wkFrcstMin.Length - 1);\r
120                     if (decimal.TryParse(timestr, out forcastTime))\r
121                     {\r
122                         data.ForecastMin = decimal.ToInt32(forcastTime * 60);\r
123                     }\r
124                 }\r
125                 else\r
126                 {\r
127                     data.ForecastMin = Convert.ToInt32(wkFrcstMin);                    \r
128                 }\r
129 \r
130 \r
131             }\r
132 \r
133             //DBへの追加\r
134             TaskDataAccessor taskAccessor = TaskDataAccessor.getObject;\r
135             data.TaskID = taskAccessor.getMaxTaskID();\r
136             if (data.SortID == 0)\r
137             {\r
138                 data.SortID = taskAccessor.getMaxSortID();\r
139             }\r
140             if (taskAccessor.insertTask(data))\r
141             {\r
142                 message = "タスクNo." + data.SortID + "「" + data.Contents + "」を追加しました。";\r
143                 return true;\r
144             }\r
145             else\r
146             {\r
147                 message = "処理途中でエラーが発生しました。";\r
148                 return false;\r
149             }\r
150         }\r
151         protected override string turnMessage()\r
152         {\r
153             return message;\r
154         }\r
155 \r
156         protected override string turnErrorMessage()\r
157         {\r
158             if (string.IsNullOrEmpty(message))\r
159             {\r
160                 return base.DefaultErrorMessage;\r
161             }\r
162             else\r
163             {\r
164                 return message;\r
165             }\r
166         }\r
167 \r
168         protected override string turnSplitErrorMessage()\r
169         {\r
170             return base.DefaultSplitErrorMessage;\r
171         }\r
172     }\r
173 }\r