|
@@ -2109,79 +2109,71 @@ namespace TEAMModelOS.Controllers
|
|
}
|
|
}
|
|
//TODO 此API需處理對應前端返回的相關數據
|
|
//TODO 此API需處理對應前端返回的相關數據
|
|
[ProducesDefaultResponseType]
|
|
[ProducesDefaultResponseType]
|
|
- [AuthToken(Roles = "student")]
|
|
|
|
|
|
+ [AuthToken(Roles = "student,teacher")]
|
|
[HttpPost("get-school-info")]
|
|
[HttpPost("get-school-info")]
|
|
-
|
|
|
|
- public async Task<IActionResult> GetSchoolInfo(JsonElement requert)
|
|
|
|
|
|
+ public async Task<IActionResult> GetSchoolInfo(JsonElement request)
|
|
{
|
|
{
|
|
try
|
|
try
|
|
{
|
|
{
|
|
var (id, _, _, school) = HttpContext.GetAuthTokenInfo();
|
|
var (id, _, _, school) = HttpContext.GetAuthTokenInfo();
|
|
var client = _azureCosmos.GetCosmosClient();
|
|
var client = _azureCosmos.GetCosmosClient();
|
|
- List<string> roles = new List<string>();
|
|
|
|
- List<string> permissions = new List<string>();
|
|
|
|
- int size = 0;
|
|
|
|
- var response = await client.GetContainer("TEAMModelOS", "Student").ReadItemStreamAsync(id, new PartitionKey($"Base-{school}"));
|
|
|
|
- if (response.Status == 200)
|
|
|
|
|
|
+ /// tmdid, schoolid
|
|
|
|
+ var userType = "schoolid";
|
|
|
|
+ if (request.TryGetProperty("userType", out JsonElement usertype))
|
|
{
|
|
{
|
|
- using var json = await JsonDocument.ParseAsync(response.ContentStream);
|
|
|
|
- if (json.RootElement.TryGetProperty("size", out JsonElement _size) && _size.ValueKind == JsonValueKind.Number)
|
|
|
|
|
|
+ if (!usertype.ValueKind.Equals(JsonValueKind.Undefined) && !usertype.ValueKind.Equals(JsonValueKind.Null) && usertype.ValueKind.Equals(JsonValueKind.String))
|
|
{
|
|
{
|
|
- size = _size.GetInt32();
|
|
|
|
|
|
+ userType = usertype.GetString();
|
|
}
|
|
}
|
|
- if (json.RootElement.TryGetProperty("roles", out JsonElement _roles) && _roles.ValueKind != JsonValueKind.Null)
|
|
|
|
- {
|
|
|
|
- foreach (var obj in _roles.EnumerateArray())
|
|
|
|
- {
|
|
|
|
- roles.Add(obj.GetString());
|
|
|
|
|
|
+ }
|
|
|
|
+ if (string.IsNullOrEmpty(school)) {
|
|
|
|
+ if (userType.Equals("tmdid")) {
|
|
|
|
+ Teacher teacher = await client.GetContainer("TEAMModelOS", "School").ReadItemAsync<Teacher>(id, new PartitionKey("Base"));
|
|
|
|
+ if (teacher.schools.IsNotEmpty()) {
|
|
|
|
+ var tech= teacher.schools.Find(x => x.status.Equals("join"));
|
|
|
|
+ if (tech == null)
|
|
|
|
+ {
|
|
|
|
+ school = teacher.schools[0].schoolId;
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ school = tech.schoolId;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if (json.RootElement.TryGetProperty("permissions", out JsonElement _permissions) && _permissions.ValueKind != JsonValueKind.Null)
|
|
|
|
|
|
+ }
|
|
|
|
+ if (!string.IsNullOrEmpty(school))
|
|
|
|
+ {
|
|
|
|
+ object school_base = null;
|
|
|
|
+ var response = await client.GetContainer("TEAMModelOS", "School").ReadItemStreamAsync(school, new PartitionKey("Base"));
|
|
|
|
+ if (response.Status == 200)
|
|
{
|
|
{
|
|
- foreach (var obj in _permissions.EnumerateArray())
|
|
|
|
|
|
+ using var json = await JsonDocument.ParseAsync(response.ContentStream);
|
|
|
|
+ school_base = json.RootElement.ToObject<object>();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //取得班级
|
|
|
|
+ List<object> school_classes = new List<object>();
|
|
|
|
+ await foreach (var item in client.GetContainer("TEAMModelOS", "School").GetItemQueryStreamIterator(queryText: $"SELECT c.id,c.x,c.y,c.name,c.year,c.teacher,c.periodId,c.gradeId,c.room,c.sn,c.no,c.style,c.status,c.openType,c.scope, ARRAY_LENGTH(c.students) AS studCount FROM c", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Class-{school}") }))
|
|
|
|
+ {
|
|
|
|
+ var jsonc = await JsonDocument.ParseAsync(item.ContentStream);
|
|
|
|
+ foreach (var classeinfo in jsonc.RootElement.GetProperty("Documents").EnumerateArray())
|
|
{
|
|
{
|
|
- permissions.Add(obj.GetString());
|
|
|
|
|
|
+ school_classes.Add(classeinfo.ToObject<object>());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- }
|
|
|
|
- else //無此學校資料
|
|
|
|
- {
|
|
|
|
- return Ok(new { status = 404 });
|
|
|
|
- }
|
|
|
|
- if (roles.Count == 0)
|
|
|
|
- {
|
|
|
|
-
|
|
|
|
- roles.Add("student");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //TODO JJ,调整为取得学校基础设置数据,取代下方學校學制、年級
|
|
|
|
- object school_base = null;
|
|
|
|
- response = await client.GetContainer("TEAMModelOS", "School").ReadItemStreamAsync(school, new PartitionKey("Base"));
|
|
|
|
- if (response.Status == 200)
|
|
|
|
- {
|
|
|
|
- using var json = await JsonDocument.ParseAsync(response.ContentStream);
|
|
|
|
- school_base = json.RootElement.ToObject<object>();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //取得班级
|
|
|
|
- List<object> school_classes = new List<object>();
|
|
|
|
- await foreach (var item in client.GetContainer("TEAMModelOS", "School").GetItemQueryStreamIterator(queryText: $"SELECT c.id,c.x,c.y,c.name,c.year,c.teacher,c.periodId,c.gradeId,c.room,c.sn,c.no,c.style,c.status,c.openType,c.scope, ARRAY_LENGTH(c.students) AS studCount FROM c", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Class-{school}") }))
|
|
|
|
- {
|
|
|
|
- var jsonc = await JsonDocument.ParseAsync(item.ContentStream);
|
|
|
|
- foreach (var classeinfo in jsonc.RootElement.GetProperty("Documents").EnumerateArray())
|
|
|
|
|
|
+ //取得教室
|
|
|
|
+ List<Room> school_rooms = new List<Room>();
|
|
|
|
+ await foreach (var item in client.GetContainer("TEAMModelOS", "School").GetItemQueryIterator<Room>(queryText: $"select value(c) from c ",
|
|
|
|
+ requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"Room-{school}") }))
|
|
{
|
|
{
|
|
- school_classes.Add(classeinfo.ToObject<object>());
|
|
|
|
|
|
+ school_rooms.Add(item);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ return Ok(new { school_base, school_classes, school_rooms, status = 200 });
|
|
}
|
|
}
|
|
- //取得教室
|
|
|
|
- List<Room> school_rooms = new List<Room>();
|
|
|
|
- await foreach (var item in client.GetContainer("TEAMModelOS", "School").GetItemQueryIterator<Room>(queryText: $"select value(c) from c ",
|
|
|
|
- requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"Room-{school}") }))
|
|
|
|
- {
|
|
|
|
- school_rooms.Add(item);
|
|
|
|
|
|
+ else {
|
|
|
|
+ return Ok(new { status = 404 }); ;
|
|
}
|
|
}
|
|
-
|
|
|
|
- return Ok(new { school_base, school_classes, school_rooms, status = 200 });
|
|
|
|
}
|
|
}
|
|
catch (CosmosException ex)
|
|
catch (CosmosException ex)
|
|
{
|
|
{
|