瀏覽代碼

1. 修正HTeach取得學校資訊API 一班多科的評測活動計算完成班級時會報錯問題
2. 變更學校名稱API 追加變更學校中間件資料(BIRel)

jeff 2 年之前
父節點
當前提交
2d20f6f27a
共有 2 個文件被更改,包括 20 次插入4 次删除
  1. 8 1
      TEAMModelOS/Controllers/Client/HabbController.cs
  2. 12 3
      TEAMModelOS/Controllers/Client/HiTeachController.cs

+ 8 - 1
TEAMModelOS/Controllers/Client/HabbController.cs

@@ -26,7 +26,7 @@ using Microsoft.Extensions.Hosting;
 using static TEAMModelOS.SDK.SchoolService;
 using TEAMModelOS.SDK;
 using Microsoft.AspNetCore.Hosting;
-
+using TEAMModelOS.SDK.Models.Cosmos.BI.BISchool;
 
 namespace TEAMModelOS.Controllers.Client
 {
@@ -170,6 +170,7 @@ namespace TEAMModelOS.Controllers.Client
                 //取得學校基本資料
                 var client = _azureCosmos.GetCosmosClient();
                 School school_base = await client.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>($"{schoolCode}", new PartitionKey("Base"));
+                BIRelation school_BIRelation = await client.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<BIRelation>($"{schoolCode}", new PartitionKey("BIRel"));
                 //取得管理員資訊
                 int adminCnt = 0;
                 await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryStreamIterator(queryText: $"SELECT c.id FROM c WHERE ARRAY_CONTAINS(c.roles, 'admin', true)", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Teacher-{schoolCode}") }))
@@ -197,6 +198,12 @@ namespace TEAMModelOS.Controllers.Client
                     {
                         await client.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync(school_base, school_base.id, new PartitionKey("Base"));
                     }
+                    //BIRelation中間件變更
+                    if (updFlg && !string.IsNullOrWhiteSpace(school_BIRelation.id) && !updName.Equals(school_BIRelation.name))
+                    {
+                        school_BIRelation.name = updName;
+                        await client.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync(school_BIRelation, school_BIRelation.id, new PartitionKey("BIRel"));
+                    }
                     return Ok(new { err, msg, updSchoolResult });
                 }
                 else //未變更任何學校

+ 12 - 3
TEAMModelOS/Controllers/Client/HiTeachController.cs

@@ -865,7 +865,7 @@ namespace TEAMModelOS.Controllers.Client
                 }
                 //取得有作答的評測班級
                 Dictionary<string, List<string>> examClassFinDic = new Dictionary<string, List<string>>();
-                await foreach (var exam in client.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryStreamIterator(queryText: $"SELECT  c.examId, c.info.id as classId FROM c WHERE ARRAY_CONTAINS({JsonSerializer.Serialize(examIdList)}, c.examId) AND c.progress=true", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"ExamClassResult-{school_code}") }))
+                await foreach (var exam in client.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryStreamIterator(queryText: $"SELECT c.examId, c.info.id as classId FROM c WHERE ARRAY_CONTAINS({JsonSerializer.Serialize(examIdList)}, c.examId) AND c.progress=true", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"ExamClassResult-{school_code}") }))
                 {
                     var jsonecr = await JsonDocument.ParseAsync(exam.ContentStream);
                     if (jsonecr.RootElement.TryGetProperty("_count", out JsonElement count) && count.GetUInt16() > 0)
@@ -874,9 +874,12 @@ namespace TEAMModelOS.Controllers.Client
                         {
                             string examId = obj.GetProperty("examId").ToString();
                             string classId = obj.GetProperty("classId").ToString();
-                            if (examClassFinDic.ContainsKey(examId) && !examClassFinDic[examId].Contains(classId))
+                            if (examClassFinDic.ContainsKey(examId))
                             {
-                                examClassFinDic[examId].Add(classId);
+                                if(!examClassFinDic[examId].Contains(classId))
+                                {
+                                    examClassFinDic[examId].Add(classId);
+                                }
                             }
                             else
                             {
@@ -1987,6 +1990,12 @@ namespace TEAMModelOS.Controllers.Client
             public string id { get; set; }
             public string name { get; set; }
         }
+        //get-school-info輸出 exams.finishClassesSub(各班級已完成評測的科目列表)
+        private class GetSchInfoExamFinishClassesSub
+        {
+            public string classId { get; set; }
+            public List<string> subjectIds { get; set; }
+        }
 
     }
 }