|
@@ -478,7 +478,7 @@ namespace TEAMModelOS.SDK
|
|
|
/// <param name="schoolId"></param>
|
|
|
/// <param name="students"></param>
|
|
|
/// <returns></returns>
|
|
|
- private static (Dictionary<string, (string name, string no, int year, string salt, string pw, string classNo, string className, string periodId, int classYear, string guardian, string gName, string gPhone)> studs,
|
|
|
+ private static (Dictionary<string, (string name, string no, int year, string salt, string pw, string classNo, string className, string periodId, int classYear, string guardian, string gName, string gPhone,string imei, List<StudentGuardian> guardians)> studs,
|
|
|
Dictionary<string, (string className, string periodId, int year, string no)> classInfo,
|
|
|
Dictionary<string, List<(string id, string no)>> classStudNo,
|
|
|
List<string> errorYear,
|
|
@@ -487,8 +487,8 @@ namespace TEAMModelOS.SDK
|
|
|
//批量匯入 檢查輸入數據 確認座號 確認教室(創建教室) 確認學生存不存在或是要不要更新
|
|
|
|
|
|
//存放輸入的學生資訊 key:stud id value:學生詳細資料
|
|
|
- Dictionary<string, (string name, string no, int year, string salt, string pw, string classNo, string className, string periodId, int classYear, string guardian, string gName, string gPhone) > dicStuds =
|
|
|
- new Dictionary<string, (string name, string no, int year, string salt, string pw, string classNo, string className, string periodId, int classYear, string guardian, string gName, string gPhone)>();
|
|
|
+ Dictionary<string, (string name, string no, int year, string salt, string pw, string classNo, string className, string periodId, int classYear, string guardian, string gName, string gPhone, string imei, List<StudentGuardian> guardians) > dicStuds =
|
|
|
+ new Dictionary<string, (string name, string no, int year, string salt, string pw, string classNo, string className, string periodId, int classYear, string guardian, string gName, string gPhone, string imei, List<StudentGuardian> guardians)>();
|
|
|
|
|
|
//存放教室資訊用 key:classNo value:className
|
|
|
Dictionary<string, (string className, string periodId, int year, string classNo)> dicClassInfo = new Dictionary<string, (string className, string periodId, int year, string classNo)>();
|
|
@@ -524,7 +524,7 @@ namespace TEAMModelOS.SDK
|
|
|
dicStuds.Remove(id);
|
|
|
}
|
|
|
|
|
|
- (string name, string no, int year, string salt, string pw, string classNo, string className, string periodId, int classYear,string guardian,string gName,string gPhone) studentInfo = (null, null, 0, null, null, null, null, null, 0,null,null, null);
|
|
|
+ (string name, string no, int year, string salt, string pw, string classNo, string className, string periodId, int classYear, string guardian, string gName, string gPhone, string imei, List<StudentGuardian> guardians) studentInfo = (null, null, 0, null, null, null, null, null, 0, null, null, null, null, null) ;
|
|
|
|
|
|
if (student.TryGetProperty("name", out var tmpName) && !string.IsNullOrWhiteSpace(tmpName.GetString())) studentInfo.name = tmpName.GetString();
|
|
|
|
|
@@ -576,7 +576,7 @@ namespace TEAMModelOS.SDK
|
|
|
{ dicClassInfo.Add($"{studentInfo.periodId}_{year}_{tmpClassNo.GetString()}", (tmpClassName.GetString(), studentInfo.periodId, year, tmpClassNo.GetString())); }
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ ///导入的时候
|
|
|
if (student.TryGetProperty("guardian", out var guardian) && !string.IsNullOrWhiteSpace($"{guardian}")) {
|
|
|
studentInfo.guardian =$"{guardian}";
|
|
|
student.TryGetProperty("gName", out var gName);
|
|
@@ -584,6 +584,12 @@ namespace TEAMModelOS.SDK
|
|
|
studentInfo.gName = $"{gName}";
|
|
|
studentInfo.gPhone = $"{gPhone}";
|
|
|
}
|
|
|
+ //更新的时候
|
|
|
+ if (student.TryGetProperty("guardians", out var _guardians) && _guardians.ValueKind.Equals(JsonValueKind.Array)) {
|
|
|
+ List<StudentGuardian> guardians = _guardians.Deserialize<List<StudentGuardian>>();
|
|
|
+ studentInfo.guardians = guardians;
|
|
|
+ }
|
|
|
+ if (student.TryGetProperty("imei", out var tmpImei) && !string.IsNullOrWhiteSpace($"{tmpImei}")) studentInfo.imei = tmpImei.GetString();
|
|
|
//將最後結果加到字典內
|
|
|
dicStuds.Add(id, studentInfo);
|
|
|
}
|
|
@@ -780,6 +786,14 @@ namespace TEAMModelOS.SDK
|
|
|
tmpStudInfo.gradeId = classNoId[stud.Value.classNo + "_" + stud.Value.classYear].gradeId;
|
|
|
tmpStudInfo.periodId = classNoId[stud.Value.classNo + "_" + stud.Value.classYear].periodId;
|
|
|
}
|
|
|
+
|
|
|
+ if (!string.IsNullOrWhiteSpace(stud.Value.imei))
|
|
|
+ {
|
|
|
+ writerNew.WriteString("imei", stud.Value.imei);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ writerNew.WriteNull("imei");
|
|
|
+ }
|
|
|
if (string.IsNullOrWhiteSpace(stud.Value.no))
|
|
|
{
|
|
|
writerNew.WriteNull("no");
|
|
@@ -802,7 +816,7 @@ namespace TEAMModelOS.SDK
|
|
|
writerNew.WriteEndObject();
|
|
|
writerNew.WriteEndArray();
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
writerNew.WriteEndObject();
|
|
|
writerNew.Flush();
|
|
|
|
|
@@ -842,6 +856,10 @@ namespace TEAMModelOS.SDK
|
|
|
{
|
|
|
student.periodId = stud.Value.periodId;
|
|
|
}
|
|
|
+ if (!string.IsNullOrWhiteSpace(stud.Value.imei))
|
|
|
+ {
|
|
|
+ student.imei = stud.Value.imei;
|
|
|
+ }
|
|
|
if (!isUpPwDone)
|
|
|
{
|
|
|
student.pw = stud.Value.pw;
|
|
@@ -861,8 +879,10 @@ namespace TEAMModelOS.SDK
|
|
|
student.guardians.Add(new StudentGuardian { mobile = stud.Value.gPhone, name = stud.Value.gName, relation = stud.Value.guardian });
|
|
|
}
|
|
|
}
|
|
|
+ if (stud.Value.guardians.IsNotEmpty()) {
|
|
|
+ student.guardians=stud.Value.guardians;
|
|
|
+ }
|
|
|
await cosmosContainer.ReplaceItemAsync(student, stud.Key, new PartitionKey($"Base-{schoolId}"));
|
|
|
-
|
|
|
}
|
|
|
catch (CosmosException ex)
|
|
|
{
|
|
@@ -933,7 +953,8 @@ namespace TEAMModelOS.SDK
|
|
|
writer.WriteNull("mail");
|
|
|
writer.WriteNull("mobile");
|
|
|
writer.WriteNull("country");
|
|
|
-
|
|
|
+ if (string.IsNullOrWhiteSpace(studCreateInfo.imei)) writer.WriteNull("imei");
|
|
|
+ else writer.WriteString("periodId", studCreateInfo.imei);
|
|
|
//Password,若沒給則使用學號當密碼
|
|
|
string salt = Utils.CreatSaltString(8);
|
|
|
string hashPw = string.IsNullOrWhiteSpace(studCreateInfo.pw)
|
|
@@ -956,7 +977,27 @@ namespace TEAMModelOS.SDK
|
|
|
}
|
|
|
writer.WriteNull("groupId");
|
|
|
writer.WriteNull("groupName");
|
|
|
+ if (studCreateInfo.guardians.IsNotEmpty())
|
|
|
+ {
|
|
|
+ writer.WriteStartArray("guardians");
|
|
|
|
|
|
+ foreach (var guardian in studCreateInfo.guardians)
|
|
|
+ {
|
|
|
+ writer.WriteStartObject();
|
|
|
+ writer.WriteString("relation", guardian.relation);
|
|
|
+ writer.WriteString("name", guardian.name);
|
|
|
+ writer.WriteString("mobile", guardian.mobile);
|
|
|
+ writer.WriteEndObject();
|
|
|
+ }
|
|
|
+ writer.WriteEndArray();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ writer.WriteStartArray("guardians");
|
|
|
+ writer.WriteStartObject();
|
|
|
+ writer.WriteEndObject();
|
|
|
+ writer.WriteEndArray();
|
|
|
+ }
|
|
|
writer.WriteEndObject();
|
|
|
writer.Flush();
|
|
|
|
|
@@ -1701,7 +1742,7 @@ namespace TEAMModelOS.SDK
|
|
|
|
|
|
//Key:id Value:學生基本資訊
|
|
|
var studentInfos
|
|
|
- = new Dictionary<string, (string salt, string pw, string name, int year, string picture, string gender, string mail, string mobile, string classId, string no, string periodId, string irs)>();
|
|
|
+ = new Dictionary<string, (string salt, string pw, string name, int year, string picture, string gender, string mail, string mobile, string classId, string no, string periodId, string irs,string imei, List<StudentGuardian> guardians)>();
|
|
|
//用於進行座號是否重複查詢時使用
|
|
|
var classStuds
|
|
|
= new Dictionary<string, List<(string id, string salt, string pw, string name, int year, string picture, string gender, string mail, string mobile, string classId, string no, string periodId)>>();
|
|
@@ -1736,8 +1777,9 @@ namespace TEAMModelOS.SDK
|
|
|
classId = null,
|
|
|
periodId = null,
|
|
|
irs = null,
|
|
|
+ imei = null,
|
|
|
no = null;
|
|
|
-
|
|
|
+ List<StudentGuardian> guardians = null;
|
|
|
int year = 0;
|
|
|
//有給pw欄位才進行處理
|
|
|
if (student.TryGetProperty("pw", out var tmpPw))
|
|
@@ -1764,13 +1806,17 @@ namespace TEAMModelOS.SDK
|
|
|
if (student.TryGetProperty("year", out var tmpYear)) year = tmpYear.GetInt32();
|
|
|
if (student.TryGetProperty("periodId", out var tmpperiodId)) periodId = tmpperiodId.GetString();
|
|
|
if (student.TryGetProperty("irs", out var tmpIrs)) irs = tmpIrs.GetString();
|
|
|
+ if (student.TryGetProperty("imei", out var tmpImei)) imei = tmpImei.GetString();
|
|
|
if (student.TryGetProperty("classId", out var tmpclassId)) classId = tmpclassId.GetString();
|
|
|
else
|
|
|
{
|
|
|
errorClassId.Add(id.GetString());
|
|
|
continue;
|
|
|
}
|
|
|
-
|
|
|
+ if (student.TryGetProperty("guardians", out var _guardians) && _guardians.ValueKind.Equals(JsonValueKind.Array) )
|
|
|
+ {
|
|
|
+ guardians = _guardians.Deserialize<List<StudentGuardian>>();
|
|
|
+ }
|
|
|
//如果有給該欄位,且是給空的,代表要清空
|
|
|
if (student.TryGetProperty("no", out var tmpNo)) no = tmpNo.GetString();
|
|
|
|
|
@@ -1797,7 +1843,7 @@ namespace TEAMModelOS.SDK
|
|
|
}
|
|
|
|
|
|
//picture,mail,mobile暫不支持批量更新
|
|
|
- studentInfos.Add(id.GetString(), (salt, pw, name, year, null, gender, null, null, classId, no, periodId, irs));
|
|
|
+ studentInfos.Add(id.GetString(), (salt, pw, name, year, null, gender, null, null, classId, no, periodId, irs,imei, guardians));
|
|
|
|
|
|
//先將id加進去後面再做刪除動作
|
|
|
nonexistentIds.Add(id.GetString());
|
|
@@ -1887,8 +1933,8 @@ namespace TEAMModelOS.SDK
|
|
|
account.TryGetProperty("irs", out JsonElement irsjson);
|
|
|
string irs = $"{irsjson}";
|
|
|
//用來記錄最後更改完的資料
|
|
|
- (string salt, string pw, string name, int year, string picture, string gender, string mail, string mobile, string classId, string no, string periodId, string irs) tmpData
|
|
|
- = (studentInfos[id].salt, studentInfos[id].pw, studentInfos[id].name, studentInfos[id].year, studentInfos[id].picture, studentInfos[id].gender, studentInfos[id].mail, studentInfos[id].mobile, studentInfos[id].classId, studentInfos[id].no, studentInfos[id].periodId, studentInfos[id].irs);
|
|
|
+ (string salt, string pw, string name, int year, string picture, string gender, string mail, string mobile, string classId, string no, string periodId, string irs , List<StudentGuardian> guardians) tmpData
|
|
|
+ = (studentInfos[id].salt, studentInfos[id].pw, studentInfos[id].name, studentInfos[id].year, studentInfos[id].picture, studentInfos[id].gender, studentInfos[id].mail, studentInfos[id].mobile, studentInfos[id].classId, studentInfos[id].no, studentInfos[id].periodId, studentInfos[id].irs, studentInfos[id]. guardians);
|
|
|
|
|
|
bool isUpPwDone = false;
|
|
|
bool isWrong = false;
|
|
@@ -2027,6 +2073,23 @@ namespace TEAMModelOS.SDK
|
|
|
writer.WriteString("irs", studentInfos[id].irs);
|
|
|
}
|
|
|
break;
|
|
|
+ case bool _ when element.Name.Equals("imei", StringComparison.Ordinal):
|
|
|
+ //移除座號的話會給空的
|
|
|
+ if (studentInfos[id].imei != null && studentInfos[id].imei.Length == 0)
|
|
|
+ {
|
|
|
+ writer.WriteNull("imei");
|
|
|
+ tmpData.irs = null;
|
|
|
+ }
|
|
|
+ else if (string.IsNullOrWhiteSpace(studentInfos[id].imei))
|
|
|
+ {
|
|
|
+ element.WriteTo(writer);
|
|
|
+ tmpData.irs = element.Value.GetString();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ writer.WriteString("imei", studentInfos[id].imei);
|
|
|
+ }
|
|
|
+ break;
|
|
|
case bool _ when element.Name.StartsWith("_", StringComparison.Ordinal):
|
|
|
break;
|
|
|
default:
|
|
@@ -2045,12 +2108,38 @@ namespace TEAMModelOS.SDK
|
|
|
{
|
|
|
writer.WriteString("irs", studentInfos[id].irs);
|
|
|
}
|
|
|
+ if (!account.TryGetProperty("imei", out JsonElement _imei) || _imei.ValueKind.Equals(JsonValueKind.Undefined))
|
|
|
+ {
|
|
|
+ writer.WriteString("imei", studentInfos[id].imei);
|
|
|
+ }
|
|
|
//若密碼和鹽沒有更新,就把舊的資料寫回去
|
|
|
if (!isUpPwDone)
|
|
|
{
|
|
|
writer.WriteString("salt", account.GetProperty("salt").GetString());
|
|
|
writer.WriteString("pw", account.GetProperty("pw").GetString());
|
|
|
}
|
|
|
+ if (studentInfos[id].guardians.IsNotEmpty())
|
|
|
+ {
|
|
|
+ writer.WriteStartArray("guardians");
|
|
|
+
|
|
|
+ foreach (var guardian in studentInfos[id].guardians) {
|
|
|
+ writer.WriteStartObject();
|
|
|
+ writer.WriteString("relation", guardian.relation);
|
|
|
+ writer.WriteString("name", guardian.name);
|
|
|
+ writer.WriteString("mobile", guardian.mobile);
|
|
|
+ writer.WriteString("mail", guardian.mail);
|
|
|
+ writer.WriteString("picture", guardian.picture);
|
|
|
+ writer.WriteString("tmdid", guardian.tmdid);
|
|
|
+ writer.WriteEndObject();
|
|
|
+ }
|
|
|
+ writer.WriteEndArray();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ writer.WriteStartArray("guardians");
|
|
|
+ writer.WriteStartObject();
|
|
|
+ writer.WriteEndObject();
|
|
|
+ writer.WriteEndArray();
|
|
|
+ }
|
|
|
writer.WriteEndObject();
|
|
|
writer.Flush();
|
|
|
|
|
@@ -2229,7 +2318,7 @@ namespace TEAMModelOS.SDK
|
|
|
|
|
|
public struct studCreateInfo
|
|
|
{
|
|
|
- public studCreateInfo(string id, string name, string gender, int year, string pw, string classId, string no, string periodId)
|
|
|
+ public studCreateInfo(string id, string name, string gender, int year, string pw, string classId, string no, string periodId,string imei, List<StudentGuardian> guardians)
|
|
|
{
|
|
|
this.id = id;
|
|
|
this.name = name;
|
|
@@ -2239,6 +2328,9 @@ namespace TEAMModelOS.SDK
|
|
|
this.classId = classId;
|
|
|
this.no = no;
|
|
|
this.periodId = periodId;
|
|
|
+ this.imei = imei;
|
|
|
+ this.guardians = guardians;
|
|
|
+
|
|
|
}
|
|
|
public string id { get; }
|
|
|
public string name { get; }
|
|
@@ -2248,6 +2340,8 @@ namespace TEAMModelOS.SDK
|
|
|
public string classId { get; }
|
|
|
public string no { get; }
|
|
|
public string periodId { get; set; }
|
|
|
+ public string imei { get; set; }
|
|
|
+ public List<StudentGuardian> guardians { get; set; }
|
|
|
}
|
|
|
}
|
|
|
}
|