|
@@ -7,9 +7,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;
|
|
@@ -53,13 +55,17 @@ namespace TEAMModelOS.SDK
|
|
|
public string creatorId { get; set; }
|
|
|
public string scode { get; set; }
|
|
|
public string type { get; set; }
|
|
|
- public string examType { get; set; }
|
|
|
+ public Custom examType { get; set; } = new Custom();
|
|
|
|
|
|
public List<ExamSubject> subjects { get; set; } = new List<ExamSubject>();
|
|
|
-
|
|
|
+ //返回科目内容
|
|
|
+ public List<string> subs { get; set; } = new List<string>();
|
|
|
+ //返回字段
|
|
|
+ public List<string> classIds { get; set; } = new List<string>();
|
|
|
public List<string> classes { get; set; } = new List<string>();
|
|
|
public List<string> stuLists { get; set; } = new List<string>();
|
|
|
public List<string> tchLists { get; set; } = new List<string>();
|
|
|
+ public List<JsonElement> targets { get; set; } = new List<JsonElement>();
|
|
|
public long createTime { get; set; } = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
|
public Dictionary<string, JsonElement> ext { get; set; } = new Dictionary<string, JsonElement>();
|
|
|
/// 评分状态,0,未评分, 1已评分
|
|
@@ -90,7 +96,7 @@ namespace TEAMModelOS.SDK
|
|
|
/// <param name="azureRedis"></param>
|
|
|
public static async Task<List<StudentActivity>> FindActivity(JsonElement request, string userId, string userScope, List<string> groupListIds, List<string> subjects, string school, List<string> types, AzureCosmosFactory _azureCosmos)
|
|
|
{
|
|
|
- string filed = "c.id ,c.code,c.owner,c.pk,c.qamode,c.name,c.school,c.startTime,c.endTime,c.classes,c.stuLists,c.tchLists,c.createTime,c.creatorId,c.isSub,c.mustSubmit,c.sStatus,c.scope,c.source,c.subjects";
|
|
|
+ string filed = "c.id ,c.code,c.owner,c.pk as type,c.examType,c.targets,c.qamode,c.name,c.school,c.startTime,c.endTime,c.classes,c.stuLists,c.tchLists,c.createTime,c.creatorId,c.isSub,c.mustSubmit,c.sStatus,c.scope,c.source,c.subjects";
|
|
|
if (string.IsNullOrWhiteSpace(school))
|
|
|
{
|
|
|
if (request.TryGetProperty("school", out JsonElement schooljson))
|
|
@@ -136,7 +142,7 @@ namespace TEAMModelOS.SDK
|
|
|
throw new Exception("名单为空");
|
|
|
}
|
|
|
|
|
|
- List<StudentActivity> activities = new List<StudentActivity>();
|
|
|
+ List<StudentActivity> datas = new List<StudentActivity>();
|
|
|
if (types.IsEmpty() || types.Contains("Exam"))
|
|
|
{
|
|
|
string subjectSQL = "";
|
|
@@ -144,22 +150,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} ");
|
|
|
+ StringBuilder SQL = new StringBuilder($"select distinct {filed} from c {subjectJoin} where c.pk='Exam' {subjectSQL} {groupListSQL} and c.startTime>={stime} and c.startTime <= {etime} and c.qamode != 2 ");
|
|
|
//获取学校发布的活动
|
|
|
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);
|
|
|
+ datas.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);
|
|
|
+ datas.AddRange(activity);
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
if (types.IsEmpty() || types.Contains("Vote"))
|
|
@@ -170,12 +181,61 @@ namespace TEAMModelOS.SDK
|
|
|
if (userScope.Equals(Constant.ScopeStudent) && !string.IsNullOrWhiteSpace(school))
|
|
|
{
|
|
|
var resultSchool = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<StudentActivity>($"{SQL.ToString()} and c.owner='school' ", $"Vote-{school}");
|
|
|
- activities.AddRange(resultSchool.list);
|
|
|
+ if (resultSchool.list.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (var vote in resultSchool.list)
|
|
|
+ {
|
|
|
+ vote.scode = vote.code;
|
|
|
+ List<string> sub = new();
|
|
|
+ if (vote.tchLists.Count == 0)
|
|
|
+ {
|
|
|
+ if (vote.targets.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (var course in vote.targets)
|
|
|
+ {
|
|
|
+ var info = course.ToObject<List<string>>();
|
|
|
+ if (info.Count > 1)
|
|
|
+ {
|
|
|
+ sub.Add(info[0]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ vote.subs = sub;
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ datas.AddRange(resultSchool.list);
|
|
|
}
|
|
|
//获取教师发布的活动(个人名单,学校名单)
|
|
|
{
|
|
|
var resultTeacher = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<StudentActivity>($"{SQL.ToString()} and c.owner='teacher' ");
|
|
|
- activities.AddRange(resultTeacher.list);
|
|
|
+ if (resultTeacher.list.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (var vote in resultTeacher.list)
|
|
|
+ {
|
|
|
+ vote.scode = vote.code;
|
|
|
+
|
|
|
+ List<string> sub = new();
|
|
|
+ if (vote.tchLists.Count == 0)
|
|
|
+ {
|
|
|
+ if (vote.targets.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (var course in vote.targets)
|
|
|
+ {
|
|
|
+ var info = course.ToObject<List<string>>();
|
|
|
+ if (info.Count > 1)
|
|
|
+ {
|
|
|
+ sub.Add(info[0]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ vote.subs = sub;
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ datas.AddRange(resultTeacher.list);
|
|
|
}
|
|
|
}
|
|
|
if (types.IsEmpty() || types.Contains("Survey"))
|
|
@@ -186,12 +246,59 @@ namespace TEAMModelOS.SDK
|
|
|
if (userScope.Equals(Constant.ScopeStudent) && !string.IsNullOrWhiteSpace(school))
|
|
|
{
|
|
|
var resultSchool = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<StudentActivity>($"{SQL.ToString()} and c.owner='school' ", $"Survey-{school}");
|
|
|
- activities.AddRange(resultSchool.list);
|
|
|
+ if (resultSchool.list.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (var survey in resultSchool.list)
|
|
|
+ {
|
|
|
+ survey.scode = survey.code;
|
|
|
+ List<string> sub = new();
|
|
|
+ if (survey.tchLists.Count == 0)
|
|
|
+ {
|
|
|
+ if (survey.targets.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (var course in survey.targets)
|
|
|
+ {
|
|
|
+ var info = course.ToObject<List<string>>();
|
|
|
+ if (info.Count > 1)
|
|
|
+ {
|
|
|
+ sub.Add(info[0]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ survey.subs = sub;
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ datas.AddRange(resultSchool.list);
|
|
|
}
|
|
|
//获取教师发布的活动(个人名单,学校名单)
|
|
|
{
|
|
|
var resultTeacher = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<StudentActivity>($"{SQL.ToString()} and c.owner='teacher' ");
|
|
|
- activities.AddRange(resultTeacher.list);
|
|
|
+ if (resultTeacher.list.Count > 0) {
|
|
|
+ foreach (var survey in resultTeacher.list) {
|
|
|
+ survey.scode = survey.code;
|
|
|
+
|
|
|
+ List<string> sub = new();
|
|
|
+ if (survey.tchLists.Count == 0)
|
|
|
+ {
|
|
|
+ if (survey.targets.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (var course in survey.targets)
|
|
|
+ {
|
|
|
+ var info = course.ToObject<List<string>>();
|
|
|
+ if (info.Count > 1)
|
|
|
+ {
|
|
|
+ sub.Add(info[0]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ survey.subs = sub;
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ datas.AddRange(resultTeacher.list);
|
|
|
}
|
|
|
}
|
|
|
if (types.IsEmpty() || types.Contains("Homework"))
|
|
@@ -202,12 +309,62 @@ namespace TEAMModelOS.SDK
|
|
|
if (userScope.Equals(Constant.ScopeStudent) && !string.IsNullOrWhiteSpace(school))
|
|
|
{
|
|
|
var resultSchool = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<StudentActivity>($"{SQL.ToString()} and c.owner='school' ", $"Homework-{school}");
|
|
|
- activities.AddRange(resultSchool.list);
|
|
|
+ if (resultSchool.list.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (var work in resultSchool.list)
|
|
|
+ {
|
|
|
+ work.classIds = work.classes;
|
|
|
+ work.scode = work.code;
|
|
|
+ List<string> sub = new();
|
|
|
+ if (work.tchLists.Count == 0)
|
|
|
+ {
|
|
|
+ if (work.targets.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (var course in work.targets)
|
|
|
+ {
|
|
|
+ var info = course.ToObject<List<string>>();
|
|
|
+ if (info.Count > 1)
|
|
|
+ {
|
|
|
+ sub.Add(info[0]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ work.subs = sub;
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ datas.AddRange(resultSchool.list);
|
|
|
}
|
|
|
//获取教师发布的活动(个人名单,学校名单)
|
|
|
{
|
|
|
var resultTeacher = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<StudentActivity>($"{SQL.ToString()} and c.owner='teacher' ");
|
|
|
- activities.AddRange(resultTeacher.list);
|
|
|
+ if (resultTeacher.list.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (var work in resultTeacher.list)
|
|
|
+ {
|
|
|
+ work.scode = work.code;
|
|
|
+ work.classIds = work.stuLists;
|
|
|
+ List<string> sub = new();
|
|
|
+ if (work.tchLists.Count == 0)
|
|
|
+ {
|
|
|
+ if (work.targets.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (var course in work.targets)
|
|
|
+ {
|
|
|
+ var info = course.ToObject<List<string>>();
|
|
|
+ if (info.Count > 1)
|
|
|
+ {
|
|
|
+ sub.Add(info[0]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ work.subs = sub;
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ datas.AddRange(resultTeacher.list);
|
|
|
}
|
|
|
}
|
|
|
if (types.IsEmpty() || types.Contains("Art"))
|
|
@@ -217,19 +374,42 @@ 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} ");
|
|
|
+ StringBuilder SQL = new($"select distinct {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}");
|
|
|
- activities.AddRange(resultSchool.list);
|
|
|
+ var resultSchool = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<StudentActivity>($"{SQL} and c.school='{school}' ", $"Art-{school}");
|
|
|
+ if (resultSchool.list.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (var stu in resultSchool.list)
|
|
|
+ {
|
|
|
+ stu.classIds = stu.classes;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ datas.AddRange(resultSchool.list);
|
|
|
}
|
|
|
}
|
|
|
+ if (types.IsEmpty() || types.Contains("Study"))
|
|
|
+ {
|
|
|
+
|
|
|
+ StringBuilder SQL = new StringBuilder($"select {filed} from c where c.pk='Study' {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' ", $"Study-{school}");
|
|
|
+ datas.AddRange(resultSchool.list);
|
|
|
+ }
|
|
|
+ /* //获取教师发布的活动(个人名单,学校名单)
|
|
|
+ {
|
|
|
+ var resultTeacher = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<StudentActivity>($"{SQL.ToString()} and c.owner='teacher' ");
|
|
|
+ datas.AddRange(resultTeacher.list);
|
|
|
+ }*/
|
|
|
+ }
|
|
|
//作答 记录recordUrl taskStatus
|
|
|
- return activities;
|
|
|
+ return datas;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -264,21 +444,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)
|
|
|
{
|
|
@@ -289,84 +469,54 @@ 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,
|
|
|
stuId = userId,
|
|
|
userType = userScope,
|
|
|
- type = "Exam",
|
|
|
+ type = "Exam",
|
|
|
name = x.name,
|
|
|
source = x.source,
|
|
|
startTime = x.startTime,
|
|
|
endTime = x.endTime,
|
|
|
scope = x.scope,
|
|
|
school = x.school,
|
|
|
- scode = x.scode,
|
|
|
+ scode = x.code,
|
|
|
creatorId = x.creatorId,
|
|
|
subjects = x.subjects,
|
|
|
owner = x.owner,
|
|
|
- classes = x.classes,
|
|
|
+ classIds = x.classes.Count > 0 ? x.classes : x.stuLists,
|
|
|
code = x.code,
|
|
|
createTime = x.createTime,
|
|
|
qamode = x.qamode,
|
|
|
- ext = new Dictionary<string, JsonElement>() { { "type", x.examType.ToJsonString().ToObject<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
|
|
|
+ examType = x.examType,
|
|
|
+ //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 = 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;
|
|
|
}
|