forked from ischool-desktop/K12.Data
/
School.cs
195 lines (163 loc) · 5.97 KB
/
School.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
using System;
using System.Xml;
using K12.Data.Configuration;
using System.Collections.Generic;
namespace K12.Data
{
/// <summary>
/// 提供學校相關資訊。
/// </summary>
public class School
{
private static ConfigurationManager _configuration = null;
private static ConfigurationManager _globalconfiguration = null;
/// <summary>
/// 取得學校的組態資料。
/// </summary>
public static ConfigurationManager Configuration
{
get
{
if (_configuration == null)
{
_configuration = new ConfigurationManager(new ConfigProvider_App());
_configuration.ConfigurationUpdated += new EventHandler<ItemUpdatedEventArgs>(Configuration_ConfigurationUpdated);
}
return _configuration;
}
}
public static ConfigurationManager GlobalConfiguration
{
get
{
if (_globalconfiguration == null)
{
_globalconfiguration = new ConfigurationManager(new ConfigProvider_Global());
_globalconfiguration.ConfigurationUpdated += new EventHandler<ItemUpdatedEventArgs>(Configuration_ConfigurationUpdated);
}
return _globalconfiguration;
}
}
private static void Configuration_ConfigurationUpdated(object sender, ItemUpdatedEventArgs e)
{
if (e.PrimaryKeys.Contains("系統設定"))
SysConfig = null;
if (e.PrimaryKeys.Contains("學校資訊"))
SchoolConfig = null;
}
//系統設定
protected static XmlElement SysConfig = null;
protected static XmlElement SchoolConfig = null;
/// <summary>
/// 取得所有國小學校列表
/// </summary>
/// <returns></returns>
[SelectMethod("K12.School.SelectElementarySchools", "學籍.國小列表")]
public static List<SchoolRecord> SelectElementarySchools()
{
List<SchoolRecord> SchoolRecs = new List<SchoolRecord>();
// 讀取國小資料
ConfigData cd = GlobalConfiguration["SchoolListElementary"];
XmlDocument doc = new XmlDocument();
doc.LoadXml(cd["XmlData"]);
foreach (XmlElement xe in doc.SelectSingleNode("SchoolList"))
{
SchoolRecord SchoolRec = new SchoolRecord();
SchoolRec.Load(xe);
SchoolRecs.Add(SchoolRec);
}
return SchoolRecs;
}
/// <summary>
/// 取得學所有國中學校列表
/// </summary>
/// <returns></returns>
[SelectMethod("K12.School.SelectJuniorSchools", "學籍.國中列表")]
public static List<SchoolRecord> SelectJuniorSchools()
{
List<SchoolRecord> SchoolRecs = new List<SchoolRecord>();
// 讀取國中資料
ConfigData cd = GlobalConfiguration["SchoolListJunior"];
XmlDocument doc = new XmlDocument();
doc.LoadXml(cd["XmlData"]);
foreach (XmlElement xe in doc.SelectSingleNode("SchoolList"))
{
SchoolRecord SchoolRec = new SchoolRecord();
SchoolRec.Load(xe);
SchoolRecs.Add(SchoolRec);
}
return SchoolRecs;
}
/// <summary>
/// 取得學校代碼。
/// </summary>
public static string Code
{
get { return GetConfigurationString(ref SchoolConfig, "學校資訊", "Code"); }
}
/// <summary>
/// 取得預設學年度。
/// </summary>
public static string DefaultSchoolYear
{
get { return GetConfigurationString(ref SysConfig, "系統設定", "DefaultSchoolYear"); }
}
/// <summary>
/// 取得預設學期。
/// </summary>
public static string DefaultSemester
{
get { return GetConfigurationString(ref SysConfig, "系統設定", "DefaultSemester"); }
}
/// <summary>
/// 取得學校中文名稱。
/// </summary>
public static string ChineseName
{
get { return GetConfigurationString(ref SchoolConfig, "學校資訊", "ChineseName"); }
}
/// <summary>
/// 取得學校英文名稱。
/// </summary>
public static string EnglishName
{
get { return GetConfigurationString(ref SchoolConfig, "學校資訊", "EnglishName"); }
}
/// <summary>
/// 取得學校地址。
/// </summary>
public static string Address
{
get { return GetConfigurationString(ref SchoolConfig, "學校資訊", "Address"); }
}
/// <summary>
/// 取得學生電話資料。
/// </summary>
public static string Telephone
{
get { return GetConfigurationString(ref SchoolConfig, "學校資訊", "Telephone"); }
}
/// <summary>
/// 取得學校傳真。
/// </summary>
public static string Fax
{
get { return GetConfigurationString(ref SchoolConfig, "學校資訊", "Fax"); }
}
protected static string GetConfigurationString(ref XmlElement xmlObject, string configName, string xpath)
{
if (xmlObject == null)
{
Configuration.Cache.SyncData(configName);
xmlObject = Configuration[configName].PreviousData;
}
if (xmlObject == null)
throw new InvalidOperationException("系統規格可能已改變。");
XmlElement n = xmlObject.SelectSingleNode(xpath) as XmlElement;
if (n == null)
return string.Empty;
else
return n.InnerText;
}
}
}