Browse Source

Merge branch 'develop3.0' of http://106.12.23.251:10080/TEAMMODEL/TEAMModelOS into develop3.0

CrazyIter_Bin 4 years ago
parent
commit
abc7828d93
1 changed files with 34 additions and 6 deletions
  1. 34 6
      TEAMModelOS/Controllers/Client/HiTeachController.cs

+ 34 - 6
TEAMModelOS/Controllers/Client/HiTeachController.cs

@@ -133,11 +133,25 @@ namespace TEAMModelOS.Controllers.Client
                     }
                 }
 
+                //取得老師個人評測 (HiTeach只取source='1'(課中评量))
+                List<object> exams = new List<object>();
+                await foreach (var exam in client.GetContainer("TEAMModelOS", "Common").GetItemQueryStreamIterator(queryText: $"SELECT c.code, c.id, c.name, c.startTime, c.endTime ,c.year, c.source, c.type, c.progress, c.stuCount, c.scope FROM c WHERE c.source = '1'", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Exam-{id}") }))
+                {
+                    using var json = await JsonDocument.ParseAsync(exam.ContentStream);
+                    if (json.RootElement.TryGetProperty("_count", out JsonElement count) && count.GetUInt16() > 0)
+                    {
+                        foreach (var obj in json.RootElement.GetProperty("Documents").EnumerateArray())
+                        {
+                            exams.Add(obj.ToObject<object>());
+                        }
+                    }
+                }
+
                 //取得Teacher Blob 容器位置及SAS 
                 var container = _azureStorage.GetBlobContainerClient(id);
                 await container.CreateIfNotExistsAsync(PublicAccessType.None); //嘗試創建Teacher私有容器,如存在則不做任何事,保障容器一定存在
                 var (blob_uri, blob_sas) = _azureStorage.GetBlobContainerSAS(id, BlobContainerSasPermissions.Write | BlobContainerSasPermissions.Read | BlobContainerSasPermissions.List | BlobContainerSasPermissions.Delete);
-                return Ok(new { blob_uri, blob_sas, schools, defaultschool, courses });
+                return Ok(new { blob_uri, blob_sas, schools, defaultschool, courses, exams });
 
             }
             catch (Exception ex)
@@ -304,11 +318,25 @@ namespace TEAMModelOS.Controllers.Client
                     }
                 }
 
+                //取得校園評測 (HiTeach只取source='1'(課中评量))
+                List<object> exams = new List<object>();
+                await foreach (var exam in client.GetContainer("TEAMModelOS", "Common").GetItemQueryStreamIterator(queryText: $"SELECT c.code, c.id, c.name, c.startTime, c.endTime ,c.year, c.source, c.type, c.progress, c.stuCount, c.scope FROM c WHERE c.source = '1'", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Exam-{school_code}") }))
+                {
+                    using var json = await JsonDocument.ParseAsync(exam.ContentStream);
+                    if (json.RootElement.TryGetProperty("_count", out JsonElement count) && count.GetUInt16() > 0)
+                    {
+                        foreach (var obj in json.RootElement.GetProperty("Documents").EnumerateArray())
+                        {
+                            exams.Add(obj.ToObject<object>());
+                        }
+                    }
+                }
+
                 //取得School Blob 容器位置及SAS
                 string school_code_blob = school_code.GetString().ToLower();
                 var (blob_uri, blob_sas) = _azureStorage.GetBlobContainerSAS(school_code_blob, BlobContainerSasPermissions.Read | BlobContainerSasPermissions.List);
 
-                return Ok(new { blob_uri, blob_sas, periods, grades, subjects, courses, examTypes });
+                return Ok(new { blob_uri, blob_sas, periods, grades, subjects, courses, examTypes, exams });
             }
             catch (Exception ex)
             {
@@ -742,15 +770,15 @@ namespace TEAMModelOS.Controllers.Client
 
 
                 if (!request.TryGetProperty("exam", out JsonElement exam)) return BadRequest();
-                if (!request.TryGetProperty("examResult", out JsonElement examResult)) return BadRequest();
+                //if (!request.TryGetProperty("examResult", out JsonElement examResult)) return BadRequest();
                 if (!request.TryGetProperty("examClassResult", out JsonElement examClassResult)) return BadRequest();
 
                 ExamInfo dbExamInfo = exam.ToObject<ExamInfo>();
-                ExamResult dbExamResult = examResult.ToObject<ExamResult>();
+                //ExamResult dbExamResult = examResult.ToObject<ExamResult>();
                 List<ExamClassResult> dbExamClassResultList = examClassResult.ToObject<List<ExamClassResult>>();
 
-                var examResponse = await _azureCosmos.GetCosmosClient().GetContainer("TEAMModelOS", "Common").UpsertItemAsync(dbExamInfo, new PartitionKey(dbExamInfo.code));
-                var examResultResponse = await _azureCosmos.GetCosmosClient().GetContainer("TEAMModelOS", "Common").UpsertItemAsync(dbExamResult, new PartitionKey(dbExamResult.code));
+                var examResponse = _azureCosmos.GetCosmosClient().GetContainer("TEAMModelOS", "Common").UpsertItemAsync(dbExamInfo, new PartitionKey(dbExamInfo.code)).GetAwaiter().GetResult();
+                //var examResultResponse = await _azureCosmos.GetCosmosClient().GetContainer("TEAMModelOS", "Common").UpsertItemAsync(dbExamResult, new PartitionKey(dbExamResult.code));
                 foreach (ExamClassResult examClassResultRow in dbExamClassResultList)
                 {
                     var examClassResultResponse = await _azureCosmos.GetCosmosClient().GetContainer("TEAMModelOS", "Common").UpsertItemAsync(examClassResultRow, new PartitionKey(examClassResultRow.code));