|
@@ -58,6 +58,9 @@ namespace TEAMModelOS.Controllers
|
|
|
classroom.code = "Class-" + classroom.school;
|
|
|
if (string.IsNullOrEmpty(classroom.id))
|
|
|
{
|
|
|
+ if (classroom.graduate != 0) {
|
|
|
+ return BadRequest("已毕业的班级不能被编辑");
|
|
|
+ }
|
|
|
List<string> resultIds = new List<string>();
|
|
|
await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryStreamIterator(queryText: $"select c.id from c where c.periodId = '{classroom.periodId}' and c.no = '{classroom.no}' and c.year = '{classroom.year}' ", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey(classroom.code) }))
|
|
|
{
|
|
@@ -86,6 +89,10 @@ namespace TEAMModelOS.Controllers
|
|
|
{
|
|
|
using var json = await JsonDocument.ParseAsync(response.ContentStream);
|
|
|
Class @class = json.ToObject<Class>();
|
|
|
+ if (classroom.graduate != 0)
|
|
|
+ {
|
|
|
+ return BadRequest("已毕业的班级不能被编辑");
|
|
|
+ }
|
|
|
if (!@class.no.Equals(classroom.no))
|
|
|
{
|
|
|
List<string> resultIds = new List<string>();
|
|
@@ -158,47 +165,65 @@ namespace TEAMModelOS.Controllers
|
|
|
}
|
|
|
|
|
|
}
|
|
|
-
|
|
|
+ /// <summary>
|
|
|
+ /// 已弃用
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="request"></param>
|
|
|
+ /// <returns></returns>
|
|
|
[ProducesDefaultResponseType]
|
|
|
- //[AuthToken(Roles = "teacher")]
|
|
|
[HttpPost("find")]
|
|
|
- [Authorize(Roles = "IES")]
|
|
|
+#if !DEBUG
|
|
|
+[Authorize(Roles = "IES")]
|
|
|
+#endif
|
|
|
public async Task<IActionResult> Find(JsonElement request)
|
|
|
{
|
|
|
- //ResponseBuilder builder = ResponseBuilder.custom();
|
|
|
if (!request.TryGetProperty("school_code", out JsonElement school_code)) return BadRequest();
|
|
|
try
|
|
|
- {
|
|
|
- var client = _azureCosmos.GetCosmosClient();
|
|
|
- List<object> classrooms = new List<object>();
|
|
|
- StringBuilder sql = new StringBuilder();
|
|
|
- sql.Append("select c.id,c.no,c.point,c.name,c.teacher,c.periodId,c.gradeId,c.sn,c.style,c.scope,c.type,c.code,c.openType,c.x,c.y,ARRAY_LENGTH(c.students) AS studCount from c ");
|
|
|
- Dictionary<string, object> dict = new Dictionary<string, object>();
|
|
|
- var emobj = request.EnumerateObject();
|
|
|
- while (emobj.MoveNext())
|
|
|
+ {
|
|
|
+ //增加毕业查询。当毕业查询字段1时,则需要传入入学年份。
|
|
|
+ int graduate = 0;
|
|
|
+ int inyear = 0;
|
|
|
+ //讀取該間學校所有的學生資訊
|
|
|
+ if (request.TryGetProperty("graduate", out JsonElement _graduate) && $"{_graduate}".Equals("1"))
|
|
|
{
|
|
|
- dict[emobj.Current.Name] = emobj.Current.Value;
|
|
|
+ if (request.TryGetProperty("year", out JsonElement _year) && _year.ValueKind.Equals(JsonValueKind.Number))
|
|
|
+ {
|
|
|
+ if (int.TryParse($"{_year}", out inyear) && inyear > 0)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return BadRequest("入学年份大于0");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return BadRequest("请输入毕业学生的入学年份");
|
|
|
+ }
|
|
|
}
|
|
|
- //处理code
|
|
|
- if (dict.TryGetValue("school_code", out object _))
|
|
|
- {
|
|
|
- dict.Remove("school_code");
|
|
|
+ string sql = "";
|
|
|
+ if (graduate == 0) {
|
|
|
+ sql = $"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.school, c.graduate, " +
|
|
|
+ $" ARRAY_LENGTH(c.students) AS studCount FROM c where c.graduate = 0 or IS_DEFINED(c.graduate) = false";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ sql = $"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.school, c.graduate, " +
|
|
|
+ $" ARRAY_LENGTH(c.students) AS studCount FROM c where c.graduate =1 and c.year ={inyear}";
|
|
|
}
|
|
|
- AzureCosmosQuery cosmosDbQuery = SQLHelper.GetSQL(dict, sql);
|
|
|
- await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryStreamIterator(queryDefinition: cosmosDbQuery.CosmosQueryDefinition, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Class-{school_code}") }))
|
|
|
+ List<object> school_classes = new List<object>();
|
|
|
+ var client = _azureCosmos.GetCosmosClient();
|
|
|
+ await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryStreamIterator
|
|
|
+ (queryText:sql,
|
|
|
+ requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Class-{school_code}") }))
|
|
|
{
|
|
|
- using var json = await JsonDocument.ParseAsync(item.ContentStream);
|
|
|
- if (json.RootElement.TryGetProperty("_count", out JsonElement count) && count.GetUInt16() > 0)
|
|
|
+ var jsonc = await JsonDocument.ParseAsync(item.ContentStream);
|
|
|
+ foreach (var classeinfo in jsonc.RootElement.GetProperty("Documents").EnumerateArray())
|
|
|
{
|
|
|
- foreach (var obj in json.RootElement.GetProperty("Documents").EnumerateArray())
|
|
|
- {
|
|
|
- classrooms.Add(obj.ToObject<object>());
|
|
|
- }
|
|
|
+ school_classes.Add(classeinfo.ToObject<object>());
|
|
|
}
|
|
|
}
|
|
|
- return Ok(new { classrooms });
|
|
|
- /*List<Classroom> sc = await _azureCosmos.FindByDict<Classroom>(request);
|
|
|
- return builder.Data(sc).build();*/
|
|
|
+ return Ok(new { school_classes });
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
@@ -218,7 +243,10 @@ namespace TEAMModelOS.Controllers
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- string school_code = code.ToString();
|
|
|
+ Class clssz = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<Class>($"{id}", new PartitionKey($"Class-{code}"));
|
|
|
+ if (clssz.graduate == 1) {
|
|
|
+ return BadRequest("已毕业的班级不能被删除。");
|
|
|
+ }
|
|
|
var client = _azureCosmos.GetCosmosClient();
|
|
|
List<Student> students = new List<Student>();
|
|
|
await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Student").GetItemQueryIterator<Student>(queryText: $"select * from c where c.classId='{id}' ", requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey($"Base-{code}") }))
|
|
@@ -247,60 +275,15 @@ namespace TEAMModelOS.Controllers
|
|
|
change.listid = $"{id}";
|
|
|
change.scope = "school";
|
|
|
change.originCode = $"{code}";
|
|
|
- change.school = $"{school_code}";
|
|
|
+ change.school = $"{code}";
|
|
|
change.type = "class";
|
|
|
change.status = "delete";
|
|
|
var messageChange = new ServiceBusMessage(change.ToJsonString());
|
|
|
messageChange.ApplicationProperties.Add("name", "GroupChange");
|
|
|
var ActiveTask = _configuration.GetValue<string>("Azure:ServiceBus:ActiveTask");
|
|
|
await _serviceBus.GetServiceBusClient().SendMessageAsync(ActiveTask, messageChange);
|
|
|
- //查询含有该班级的课程ID
|
|
|
-
|
|
|
- /*
|
|
|
- List<string> cids = new List<string>();
|
|
|
- await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryStreamIterator(
|
|
|
- queryText: $"select distinct c.id from c join A0 in c.schedule where A0.classId = '{id}'",
|
|
|
- requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey($"Course-{code}") }))
|
|
|
- {
|
|
|
- using var json = await JsonDocument.ParseAsync(item.ContentStream);
|
|
|
- if (json.RootElement.TryGetProperty("_count", out JsonElement count) && count.GetUInt16() > 0)
|
|
|
- {
|
|
|
- var accounts = json.RootElement.GetProperty("Documents").EnumerateArray();
|
|
|
- while (accounts.MoveNext())
|
|
|
- {
|
|
|
- JsonElement account = accounts.Current;
|
|
|
- cids.Add(account.GetProperty("id").GetString());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- List<Task<ItemResponse<Course>>> taskCourses = new List<Task<ItemResponse<Course>>>();
|
|
|
- List<Course> courses = new List<Course>();
|
|
|
- if(cids.IsNotEmpty())
|
|
|
- {
|
|
|
- await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<Course>(
|
|
|
- queryText: $"select value(c) from c where c.id in ({string.Join(",", cids.Select(o => $"'{o}'"))})",
|
|
|
- requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey($"Course-{code}") }))
|
|
|
- {
|
|
|
- courses.Add(item);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- foreach (Course course in courses)
|
|
|
- {
|
|
|
- for (int i =0;i< course.schedule.Count;i++) {
|
|
|
- if (!string.IsNullOrEmpty(course.schedule[i].classId)) {
|
|
|
- string classId = course.schedule[i].classId;
|
|
|
- if (classId.Equals(id.GetString())) {
|
|
|
- course.schedule.RemoveAt(i);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- taskCourses.Add(client.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync(course, course.id, new PartitionKey((course.code))));
|
|
|
- }
|
|
|
- await Task.WhenAll(taskCourses);
|
|
|
- */
|
|
|
await Task.WhenAll(tasks);
|
|
|
- Class classroom= await client.GetContainer(Constant.TEAMModelOS, "School").DeleteItemAsync<Class>(id.ToString(), new PartitionKey($"Class-{school_code}"));
|
|
|
+ Class classroom= await client.GetContainer(Constant.TEAMModelOS, "School").DeleteItemAsync<Class>(id.ToString(), new PartitionKey($"Class-{code}"));
|
|
|
return Ok(new { classroom });
|
|
|
}
|
|
|
catch (Exception ex)
|