|
@@ -71,9 +71,36 @@ namespace TEAMModelOS.SDK
|
|
|
continue;
|
|
|
}
|
|
|
List<string> classes = ExamService.getClasses(activity.classes, activity.stuLists);
|
|
|
+ List<ExamClassResult> classResults = new List<ExamClassResult>();
|
|
|
+ List<PaperSimple> standerAnswers = new List<PaperSimple>();
|
|
|
+ if (type.Equals("Exam")) {
|
|
|
+ if (groupChange.scope.Equals("school"))
|
|
|
+ {
|
|
|
+ await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryIterator<ExamClassResult>(queryText: $"select value(c) from c where c.examId = '{activity.id}'",
|
|
|
+ requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"ExamClassResult-{groupChange.school}") }))
|
|
|
+ {
|
|
|
+ classResults.Add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryIterator<ExamClassResult>(queryText: $"select value(c) from c where c.examId = '{activity.id}'",
|
|
|
+ requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"ExamClassResult-{groupChange.creatorId}") }))
|
|
|
+ {
|
|
|
+ classResults.Add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryIterator<PaperSimple>(
|
|
|
+ queryText: $"select A0.answers from c join A0 in c.papers where c.id = '{activity.id}'",
|
|
|
+ requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"{activity.code}") }))
|
|
|
+ {
|
|
|
+ standerAnswers.Add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
//stujoin新加入名单的
|
|
|
foreach (Member member in groupChange.stujoin)
|
|
|
{
|
|
|
+ await updateClassResulte(client, classResults, standerAnswers, member.id);
|
|
|
var stucourse = new StuActivity
|
|
|
{
|
|
|
id = activity.id,
|
|
@@ -100,6 +127,7 @@ namespace TEAMModelOS.SDK
|
|
|
//tmdjoin新加入的
|
|
|
foreach (Member member in groupChange.tmdjoin)
|
|
|
{
|
|
|
+ await updateClassResulte(client, classResults, standerAnswers, member.id);
|
|
|
var stucourse = new StuActivity
|
|
|
{
|
|
|
id = activity.id,
|
|
@@ -125,6 +153,7 @@ namespace TEAMModelOS.SDK
|
|
|
//tchjoin新加入的
|
|
|
foreach (Member member in groupChange.tchjoin)
|
|
|
{
|
|
|
+ //await updateClassResulte(client, classResults, standerAnswers, member.id);
|
|
|
var stucourse = new StuActivity
|
|
|
{
|
|
|
id = activity.id,
|
|
@@ -151,7 +180,7 @@ namespace TEAMModelOS.SDK
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
-
|
|
|
+ await updateClassResulte(client, classResults, standerAnswers, member.id);
|
|
|
await client.GetContainer(Constant.TEAMModelOS, "Student").DeleteItemAsync<StuActivity>(activity.id, new PartitionKey($"Activity-{member.code.Replace("Base-", "")}-{member.id}"));
|
|
|
}
|
|
|
catch (CosmosException)
|
|
@@ -164,7 +193,7 @@ namespace TEAMModelOS.SDK
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
-
|
|
|
+ await updateClassResulte(client, classResults, standerAnswers, member.id);
|
|
|
await client.GetContainer(Constant.TEAMModelOS, "Student").DeleteItemAsync<StuActivity>(activity.id, new PartitionKey($"Activity-{member.id}"));
|
|
|
}
|
|
|
catch (CosmosException)
|
|
@@ -378,7 +407,54 @@ namespace TEAMModelOS.SDK
|
|
|
await Task.WhenAll(tasks);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ public static async Task updateClassResulte(CosmosClient client,List<ExamClassResult> classResults, List<PaperSimple> standerAnswers, string id)
|
|
|
+ {
|
|
|
+ if (classResults.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (var item in classResults)
|
|
|
+ {
|
|
|
+ int index = item.studentIds.IndexOf(id);
|
|
|
+ if (index == -1)
|
|
|
+ {
|
|
|
+ List<List<string>> standard = new List<List<string>>();
|
|
|
+ foreach (PaperSimple simple in standerAnswers)
|
|
|
+ {
|
|
|
+ standard = simple.answers;
|
|
|
+ }
|
|
|
+ List<double> ansPoint = new List<double>();
|
|
|
+ List<List<string>> anc = new List<List<string>>();
|
|
|
+ List<List<Details>> mark = new List<List<Details>>();
|
|
|
+ foreach (List<string> num in standard)
|
|
|
+ {
|
|
|
+ List<string> newAns = new List<string>();
|
|
|
+ foreach (string san in num)
|
|
|
+ {
|
|
|
+ newAns.Add(san);
|
|
|
+ }
|
|
|
+ anc.Add(newAns);
|
|
|
+ ansPoint.Add(-1);
|
|
|
+ mark.Add(new List<Details>());
|
|
|
+ }
|
|
|
+ item.mark.Add(mark);
|
|
|
+ item.ans.Add(anc);
|
|
|
+ item.studentIds.Add(id);
|
|
|
+ item.studentScores.Add(ansPoint);
|
|
|
+ item.studentAnswers.Add(new List<string>());
|
|
|
+ item.sum.Add(0);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ item.mark.RemoveAt(index);
|
|
|
+ item.ans.RemoveAt(index);
|
|
|
+ item.studentIds.RemoveAt(index);
|
|
|
+ item.studentScores.RemoveAt(index);
|
|
|
+ item.studentAnswers.RemoveAt(index);
|
|
|
+ item.sum.RemoveAt(index);
|
|
|
+ }
|
|
|
+
|
|
|
+ await client.GetContainer(Constant.TEAMModelOS, "Common").ReplaceItemAsync(item, item.id, new PartitionKey($"{item.code}"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
public static async Task DeleteActivity(CoreAPIHttpService _coreAPIHttpService, CosmosClient client, DingDing _dingDing, ActivityList activityList) {
|
|
|
List<(string pId, List<string> gid)> ps = new List<(string pId, List<string> gid)>();
|
|
|
if (activityList.groupLists.Count > 0)
|
|
@@ -482,7 +558,7 @@ namespace TEAMModelOS.SDK
|
|
|
}
|
|
|
return "";
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
public class ActivityList
|
|
|
{
|