|
@@ -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
|
|
//取得Teacher Blob 容器位置及SAS
|
|
var container = _azureStorage.GetBlobContainerClient(id);
|
|
var container = _azureStorage.GetBlobContainerClient(id);
|
|
await container.CreateIfNotExistsAsync(PublicAccessType.None); //嘗試創建Teacher私有容器,如存在則不做任何事,保障容器一定存在
|
|
await container.CreateIfNotExistsAsync(PublicAccessType.None); //嘗試創建Teacher私有容器,如存在則不做任何事,保障容器一定存在
|
|
var (blob_uri, blob_sas) = _azureStorage.GetBlobContainerSAS(id, BlobContainerSasPermissions.Write | BlobContainerSasPermissions.Read | BlobContainerSasPermissions.List | BlobContainerSasPermissions.Delete);
|
|
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)
|
|
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
|
|
//取得School Blob 容器位置及SAS
|
|
string school_code_blob = school_code.GetString().ToLower();
|
|
string school_code_blob = school_code.GetString().ToLower();
|
|
var (blob_uri, blob_sas) = _azureStorage.GetBlobContainerSAS(school_code_blob, BlobContainerSasPermissions.Read | BlobContainerSasPermissions.List);
|
|
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)
|
|
catch (Exception ex)
|
|
{
|
|
{
|
|
@@ -742,15 +770,15 @@ namespace TEAMModelOS.Controllers.Client
|
|
|
|
|
|
|
|
|
|
if (!request.TryGetProperty("exam", out JsonElement exam)) return BadRequest();
|
|
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();
|
|
if (!request.TryGetProperty("examClassResult", out JsonElement examClassResult)) return BadRequest();
|
|
|
|
|
|
ExamInfo dbExamInfo = exam.ToObject<ExamInfo>();
|
|
ExamInfo dbExamInfo = exam.ToObject<ExamInfo>();
|
|
- ExamResult dbExamResult = examResult.ToObject<ExamResult>();
|
|
|
|
|
|
+ //ExamResult dbExamResult = examResult.ToObject<ExamResult>();
|
|
List<ExamClassResult> dbExamClassResultList = examClassResult.ToObject<List<ExamClassResult>>();
|
|
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)
|
|
foreach (ExamClassResult examClassResultRow in dbExamClassResultList)
|
|
{
|
|
{
|
|
var examClassResultResponse = await _azureCosmos.GetCosmosClient().GetContainer("TEAMModelOS", "Common").UpsertItemAsync(examClassResultRow, new PartitionKey(examClassResultRow.code));
|
|
var examClassResultResponse = await _azureCosmos.GetCosmosClient().GetContainer("TEAMModelOS", "Common").UpsertItemAsync(examClassResultRow, new PartitionKey(examClassResultRow.code));
|