|
@@ -348,13 +348,21 @@ namespace TEAMModelOS.Controllers
|
|
|
//classResult.studentAnswers[index] = ans;
|
|
|
if (index == -1)
|
|
|
{
|
|
|
+ List<double> ansPoint = new List<double>();
|
|
|
+ foreach (List<string> num in standard)
|
|
|
+ {
|
|
|
+ //ans.Add(new List<string>());
|
|
|
+ ansPoint.Add(-1);
|
|
|
+ }
|
|
|
result.studentIds.Add(studentId.ToString());
|
|
|
- result.studentScores.Add(new List<double>());
|
|
|
+ result.studentScores.Add(ansPoint);
|
|
|
result.studentAnswers.Add(new List<string>());
|
|
|
+ result.sum.Add(0);
|
|
|
}
|
|
|
+ int newIndex = result.studentIds.IndexOf(studentId.ToString());
|
|
|
string FileName = result.examId + "/" + result.subjectId+"/" +studentId ;
|
|
|
string blob = await _azureStorage.UploadFileByContainer(school.ToString(), ans.ToJsonString(), "exam", FileName +"/"+ "ans.json");
|
|
|
- result.studentAnswers[index].Add(blob);
|
|
|
+ result.studentAnswers[newIndex].Add(blob);
|
|
|
|
|
|
for (int i = 0; i < ans.Count; i++)
|
|
|
{
|
|
@@ -368,11 +376,11 @@ namespace TEAMModelOS.Controllers
|
|
|
{
|
|
|
if (standard[i].Contains(right))
|
|
|
{
|
|
|
- result.studentScores[index][i] = points[i];
|
|
|
+ result.studentScores[newIndex][i] = points[i];
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- result.studentScores[index][i] = 0;
|
|
|
+ result.studentScores[newIndex][i] = 0;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -382,87 +390,94 @@ namespace TEAMModelOS.Controllers
|
|
|
if (rule > 0)
|
|
|
{
|
|
|
int falseCount = 0;
|
|
|
- foreach (string obj in ans[i])
|
|
|
+ if (ans[i].Count > 0)
|
|
|
{
|
|
|
- if (!standard[i].Contains(obj))
|
|
|
+ foreach (string obj in ans[i])
|
|
|
{
|
|
|
- falseCount++;
|
|
|
- }
|
|
|
- }
|
|
|
- switch (rule)
|
|
|
- {
|
|
|
- case 1:
|
|
|
- if (ans[i].Count == standard[i].Count)
|
|
|
+ if (!standard[i].Contains(obj))
|
|
|
{
|
|
|
- if (falseCount == 0)
|
|
|
+ falseCount++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ switch (rule)
|
|
|
+ {
|
|
|
+ case 1:
|
|
|
+ if (ans[i].Count == standard[i].Count)
|
|
|
{
|
|
|
- result.studentScores[index][i] = points[i];
|
|
|
+ if (falseCount == 0)
|
|
|
+ {
|
|
|
+ result.studentScores[newIndex][i] = points[i];
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ result.studentScores[newIndex][i] = 0;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- result.studentScores[index][i] = 0;
|
|
|
+ result.studentScores[newIndex][i] = 0;
|
|
|
}
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- result.studentScores[index][i] = 0;
|
|
|
- }
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- if (falseCount > 0)
|
|
|
- {
|
|
|
- result.studentScores[index][i] = 0;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if (ans[i].Count == standard[i].Count)
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ if (falseCount > 0)
|
|
|
{
|
|
|
- result.studentScores[index][i] = points[i];
|
|
|
+ result.studentScores[newIndex][i] = 0;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- result.studentScores[index][i] = points[i] / 2;
|
|
|
- }
|
|
|
+ if (ans[i].Count == standard[i].Count)
|
|
|
+ {
|
|
|
+ result.studentScores[newIndex][i] = points[i];
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ result.studentScores[newIndex][i] = points[i] / 2;
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- if (falseCount > 0)
|
|
|
- {
|
|
|
- result.studentScores[index][i] = 0;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if (ans[i].Count == standard[i].Count)
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ if (falseCount > 0)
|
|
|
{
|
|
|
- result.studentScores[index][i] = points[i];
|
|
|
+ result.studentScores[newIndex][i] = 0;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- result.studentScores[index][i] = System.Math.Round((double)ans[i].Count / standard[i].Count * points[i], 1);
|
|
|
- }
|
|
|
+ if (ans[i].Count == standard[i].Count)
|
|
|
+ {
|
|
|
+ result.studentScores[newIndex][i] = points[i];
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ result.studentScores[newIndex][i] = System.Math.Round((double)ans[i].Count / standard[i].Count * points[i], 1);
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
- break;
|
|
|
- case 4:
|
|
|
- if (ans[i].Count == standard[i].Count)
|
|
|
- {
|
|
|
- result.studentScores[index][i] = points[i];
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- double persent = (double)(standard[i].Count - 2 * falseCount) / standard[i].Count;
|
|
|
- if (persent <= 0)
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ if (ans[i].Count == standard[i].Count)
|
|
|
{
|
|
|
- result.studentScores[index][i] = 0;
|
|
|
+ result.studentScores[newIndex][i] = points[i];
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- result.studentScores[index][i] = System.Math.Round(persent * points[i], 1);
|
|
|
+ double persent = (double)(standard[i].Count - 2 * falseCount) / standard[i].Count;
|
|
|
+ if (persent <= 0)
|
|
|
+ {
|
|
|
+ result.studentScores[newIndex][i] = 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ result.studentScores[newIndex][i] = System.Math.Round(persent * points[i], 1);
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- break;
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
+ else {
|
|
|
+ result.studentScores[newIndex][i] = 0;
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -495,7 +510,7 @@ namespace TEAMModelOS.Controllers
|
|
|
});
|
|
|
await client.GetContainer("TEAMModelOS", "Common").ReplaceItemAsync(exam, id.ToString(), new PartitionKey($"Exam-{school}"));
|
|
|
}
|
|
|
- result.sum[index] = result.studentScores[index].Sum();
|
|
|
+ result.sum[newIndex] = result.studentScores[newIndex].Sum();
|
|
|
classResult = await client.GetContainer("TEAMModelOS", "Common").ReplaceItemAsync(result, result.id, new PartitionKey($"{result.code}"));
|
|
|
}
|
|
|
|