OSDN Git Service

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