|
@@ -6,9 +6,11 @@ using DocumentFormat.OpenXml.Office2010.Excel;
|
|
|
using DocumentFormat.OpenXml.Spreadsheet;
|
|
|
using DocumentFormat.OpenXml.VariantTypes;
|
|
|
using HTEXLib.COMM.Helpers;
|
|
|
+using HTEXLib.Helpers.ShapeHelpers;
|
|
|
using Microsoft.AspNetCore.Http;
|
|
|
using Microsoft.Extensions.Configuration;
|
|
|
using NUnit.Framework;
|
|
|
+using NUnit.Framework.Interfaces;
|
|
|
using OpenXmlPowerTools;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
@@ -143,22 +145,27 @@ namespace TEAMModelOS.SDK
|
|
|
if (subjects.IsNotEmpty())
|
|
|
{
|
|
|
subjectJoin = "join s in c.subjects";
|
|
|
- subjectSQL = $" and c.id in ({string.Join(",", subjects.Select(z => $"'{z}'"))}) ";
|
|
|
+ subjectSQL = $" and s.id in ({string.Join(",", subjects.Select(z => $"'{z}'"))}) ";
|
|
|
}
|
|
|
StringBuilder SQL = new StringBuilder($"select {filed} from c {subjectJoin} where c.pk='Exam' {subjectSQL} {groupListSQL} and c.startTime>={stime} and c.startTime <= {etime} ");
|
|
|
//获取学校发布的活动
|
|
|
if (userScope.Equals(Constant.ScopeStudent) && !string.IsNullOrWhiteSpace(school))
|
|
|
{
|
|
|
var resultSchool = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<StudentActivity>($"{SQL} and c.owner='school' ", $"Exam-{school}");
|
|
|
- List<StudentActivity> activity = await getStuActivity(_azureCosmos, resultSchool.list, school, userId, userScope);
|
|
|
- activities.AddRange(activity);
|
|
|
+ if (resultSchool.list.Count > 0) {
|
|
|
+ List<StudentActivity> activity = await getStuActivity(_azureCosmos, resultSchool.list, school, userId, userScope);
|
|
|
+ activities.AddRange(activity);
|
|
|
+ }
|
|
|
}
|
|
|
//获取教师发布的活动(个人名单,学校名单)
|
|
|
{
|
|
|
var resultTeacher = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<StudentActivity>($"{SQL} and c.owner='teacher' ");
|
|
|
- List<StudentActivity> activity = await getStuActivity(_azureCosmos, resultTeacher.list, school, userId, userScope);
|
|
|
- activities.AddRange(resultTeacher.list);
|
|
|
+ if(resultTeacher.list.Count > 0) {
|
|
|
+ List<StudentActivity> activity = await getStuActivity(_azureCosmos, resultTeacher.list, school, userId, userScope);
|
|
|
+ activities.AddRange(resultTeacher.list);
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
if (types.IsEmpty() || types.Contains("Vote"))
|
|
@@ -216,14 +223,14 @@ namespace TEAMModelOS.SDK
|
|
|
if (subjects.IsNotEmpty())
|
|
|
{
|
|
|
subjectJoin = "join s in c.subjects";
|
|
|
- subjectSQL = $" and c.id in ({string.Join(",", subjects.Select(z => $"'{z}'"))}) ";
|
|
|
+ subjectSQL = $" and s.id in ({string.Join(",", subjects.Select(z => $"'{z}'"))}) ";
|
|
|
}
|
|
|
|
|
|
StringBuilder SQL = new($"select {filed} from c {subjectJoin} where c.pk='Art' {subjectSQL} {groupListSQL} and c.startTime>={stime} and c.startTime <= {etime} ");
|
|
|
//获取学校发布的活动
|
|
|
if (userScope.Equals(Constant.ScopeStudent) && !string.IsNullOrWhiteSpace(school))
|
|
|
{
|
|
|
- var resultSchool = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<StudentActivity>($"{SQL} and c.school='school' ", $"Art-{school}");
|
|
|
+ var resultSchool = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<StudentActivity>($"{SQL} and c.school='{school}' ", $"Art-{school}");
|
|
|
activities.AddRange(resultSchool.list);
|
|
|
}
|
|
|
}
|
|
@@ -263,21 +270,21 @@ namespace TEAMModelOS.SDK
|
|
|
List<ExamClassResult> examClassResults = new();
|
|
|
|
|
|
await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryIterator<ExamClassResult>(
|
|
|
- queryText: $"select value(c) from c where c.examId = in ({string.Join(",", examIds.Select(z => $"'{z}'"))})' and c.pk = 'ExamClassResult'" ))
|
|
|
+ queryText: $"select value(c) from c where c.examId in ({string.Join(",", examIds.Select(z => $"'{z}'"))}) and c.pk = 'ExamClassResult'" ))
|
|
|
{
|
|
|
examClassResults.Add(item);
|
|
|
}
|
|
|
bool iss = false;
|
|
|
//标记学生作答状态
|
|
|
int ts = 0;
|
|
|
- List<Dictionary<string, int>> et = new();
|
|
|
- List<Dictionary<string, bool>> es = new();
|
|
|
+ List<(string eId, int status)> et = new();
|
|
|
+ List<(string eId, bool flag)> es = new();
|
|
|
if (examClassResults.Count > 0)
|
|
|
{
|
|
|
foreach (ExamClassResult exam in examClassResults)
|
|
|
{
|
|
|
- Dictionary<string, int> examTasks = new Dictionary<string, int>();
|
|
|
- Dictionary<string, bool> examStatus = new Dictionary<string, bool>();
|
|
|
+ //List<(string eId, int status)> examTasks = new();
|
|
|
+ //List<(string eId, bool flag)> examStatus = new();
|
|
|
int index = exam.studentIds.IndexOf(userId);
|
|
|
if (index != -1)
|
|
|
{
|
|
@@ -288,60 +295,27 @@ namespace TEAMModelOS.SDK
|
|
|
{
|
|
|
ts = 1;
|
|
|
iss = true;
|
|
|
- break;
|
|
|
+ //break;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
+ iss = false;
|
|
|
ts = 0;
|
|
|
}
|
|
|
+ et.Add((exam.examId, ts));
|
|
|
+ es.Add((exam.examId,iss));
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
ts = -1;
|
|
|
- }
|
|
|
- if (examTasks.ContainsKey(exam.examId))
|
|
|
- {
|
|
|
- if (ts == -1)
|
|
|
- {
|
|
|
- examTasks[exam.examId] = -1;
|
|
|
- }
|
|
|
- else if (examTasks[exam.examId] == -1)
|
|
|
- {
|
|
|
- examTasks[exam.examId] = -1;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- examTasks[exam.examId] = ts;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- examTasks[exam.examId] = ts;
|
|
|
- }
|
|
|
- if (examStatus.ContainsKey(exam.examId))
|
|
|
- {
|
|
|
- if (!iss)
|
|
|
- {
|
|
|
- examStatus[exam.examId] = false;
|
|
|
- }
|
|
|
- else if (examStatus[exam.examId] == false)
|
|
|
- {
|
|
|
- examStatus[exam.examId] = false;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- examStatus[exam.examId] = iss;
|
|
|
- }
|
|
|
- et.Add(examTasks);
|
|
|
- es.Add(examStatus);
|
|
|
+ iss = false;
|
|
|
+ et.Add((exam.examId, ts));
|
|
|
+ es.Add((exam.examId, iss));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- ts = -1;
|
|
|
- }
|
|
|
+
|
|
|
var stuActivity = activities.Select(x => new StudentActivity
|
|
|
{
|
|
|
id = x.id,
|
|
@@ -362,10 +336,12 @@ namespace TEAMModelOS.SDK
|
|
|
code = x.code,
|
|
|
createTime = x.createTime,
|
|
|
qamode = x.qamode,
|
|
|
- ext = new Dictionary<string, JsonElement>() { { "type", x.examType.ToJsonString().ToObject<JsonElement>() },
|
|
|
+ //taskStatus = et.Select(c => c[x.id]).FirstOrDefault(),
|
|
|
+ ext = new Dictionary<string, JsonElement>() { { "type", !string.IsNullOrEmpty(x.examType) ? x.examType.ToJsonString().ToObject<JsonElement>():new JsonElement() },
|
|
|
{ "subjects", x.subjects.ToJsonString().ToObject<JsonElement>() } },
|
|
|
- taskStatus = (int)(et.Where(c => c.Keys.Equals(x.id))?.FirstOrDefault()[x.id]),
|
|
|
- sStatus = (bool)es.Where(c => c.Keys.Equals(x.id))?.FirstOrDefault()[x.id] ? 1 : 0
|
|
|
+ taskStatus = et.Where(c => c.eId.Equals(x.id)).FirstOrDefault().status,
|
|
|
+ sStatus = es.Where(z => z.eId.Equals(x.id)).FirstOrDefault().flag ? 1 : 0
|
|
|
+ //sStatus = es.Select(c => c[x.id]).FirstOrDefault() ? 1 : 0
|
|
|
}).ToList();
|
|
|
return stuActivity;
|
|
|
}
|