|
@@ -1688,7 +1688,6 @@ namespace TEAMModelOS.Controllers.Both
|
|
|
if ($"{scope}".Equals(Constant.ScopeStudent))
|
|
|
{
|
|
|
memberType = 2;
|
|
|
- // Student student = await client.GetContainer(Constant.TEAMModelOS, "Student").ReadItemAsync<Student>(userid, new PartitionKey($"Base-{school}"));
|
|
|
}
|
|
|
if ($"{scope}".Equals(Constant.ScopeTmdUser))
|
|
|
{
|
|
@@ -1700,18 +1699,16 @@ namespace TEAMModelOS.Controllers.Both
|
|
|
}
|
|
|
List<GroupListGrp> groups = await GroupListService.GetMemberInGroupList(_coreAPIHttpService, client, _dingDing, userid, memberType, school, new List<string> { "class", "teach" });
|
|
|
if (groups.IsNotEmpty()) {
|
|
|
+ List<string> groupIds = groups.Select(x => x.id).ToList();
|
|
|
switch (true)
|
|
|
{
|
|
|
//学生应参与的课程
|
|
|
case bool when $"{grant_type}".Equals("attend", StringComparison.OrdinalIgnoreCase):
|
|
|
- string sql = $"SELECT distinct value c FROM c join b in c.schedules where c.pk='CourseTask' and b.groupId in() ";
|
|
|
- List<KeyValuePair<string, CourseTask>> schoolTeacherTask = new List<KeyValuePair<string, CourseTask>>();
|
|
|
- List<KeyValuePair<string, CourseTask>> schoolAssistantTask = new List<KeyValuePair<string, CourseTask>>();
|
|
|
-
|
|
|
- List<KeyValuePair<string, CourseTask>> privateTeacherTask = new List<KeyValuePair<string, CourseTask>>();
|
|
|
- List<KeyValuePair<string, CourseTask>> privateAssistantTask = new List<KeyValuePair<string, CourseTask>>();
|
|
|
- List<CourseDto> schoolCourses = new List<CourseDto>();
|
|
|
- List<CourseDto> teahcerCourses = new List<CourseDto>();
|
|
|
+ string sql = $"SELECT distinct value c FROM c join b in c.schedules where c.pk='CourseTask' and b.groupId in({string.Join(",", groups.Select(x=>$"'{x.id}'"))}) ";
|
|
|
+ List<KeyValuePair<string, CourseTask>> schoolGroupTask = new List<KeyValuePair<string, CourseTask>>();
|
|
|
+ List<KeyValuePair<string, CourseTask>> privateGroupTask = new List<KeyValuePair<string, CourseTask>>();
|
|
|
+ List<CourseStudentDto> schoolCourses = new List<CourseStudentDto>();
|
|
|
+ List<CourseStudentDto> teahcerCourses = new List<CourseStudentDto>();
|
|
|
if (!string.IsNullOrWhiteSpace(school))
|
|
|
{
|
|
|
School schoolBase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
|
|
@@ -1732,7 +1729,16 @@ namespace TEAMModelOS.Controllers.Both
|
|
|
var resultSchool = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).GetList<CourseTask>(sql, $"CourseTask-{school}");
|
|
|
if (resultSchool.list.IsNotEmpty())
|
|
|
{
|
|
|
-
|
|
|
+ resultSchool.list.ForEach(x => {
|
|
|
+ var schedulesGroup = x.schedules.Where(z => !string.IsNullOrWhiteSpace(z.groupId) &&groupIds.Contains(z.groupId));
|
|
|
+ if (schedulesGroup.Any())
|
|
|
+ {
|
|
|
+ courseIds.Add(x.courseId);
|
|
|
+ CourseTask courseTask = x.ToJsonString().ToObject<CourseTask>();
|
|
|
+ courseTask.schedules=schedulesGroup.ToList();
|
|
|
+ schoolGroupTask.Add(new KeyValuePair<string, CourseTask>(x.courseId, courseTask));
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
if (courseIds.Any())
|
|
|
{
|
|
@@ -1743,17 +1749,12 @@ namespace TEAMModelOS.Controllers.Both
|
|
|
foreach (var item in result.list)
|
|
|
{
|
|
|
List<CourseTaskDto> courseTaskDtos = new List<CourseTaskDto>();
|
|
|
- var teacher = schoolTeacherTask.Where(x => x.Key.Equals(item.id)).Select(z => new CourseTaskDto { courseTask=z.Value, type="teacher" });
|
|
|
- if (teacher.Any())
|
|
|
+ var group = schoolGroupTask.Where(x => x.Key.Equals(item.id)).Select(z => z.Value);
|
|
|
+ if (group.Any())
|
|
|
{
|
|
|
- courseTaskDtos.AddRange(teacher.ToList());
|
|
|
+ schoolCourses.Add(new CourseStudentDto { courseBase=item, courseTasks=group.ToList() });
|
|
|
}
|
|
|
- var assistant = schoolAssistantTask.Where(x => x.Key.Equals(item.id)).Select(z => new CourseTaskDto { courseTask=z.Value, type="assistant" });
|
|
|
- if (assistant.Any())
|
|
|
- {
|
|
|
- courseTaskDtos.AddRange(assistant.ToList());
|
|
|
- }
|
|
|
- schoolCourses.Add(new CourseDto { courseBase=item, courseTasks=courseTaskDtos });
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1762,10 +1763,39 @@ namespace TEAMModelOS.Controllers.Both
|
|
|
if (resultTeacher.list.IsNotEmpty())
|
|
|
{
|
|
|
HashSet<string> courseIds = new HashSet<string>();
|
|
|
+ resultTeacher.list.ForEach(x => {
|
|
|
+ var schedulesGroup = x.schedules.Where(z => !string.IsNullOrWhiteSpace(z.groupId) &&groupIds.Contains(z.groupId));
|
|
|
+ if (schedulesGroup.Any())
|
|
|
+ {
|
|
|
+ courseIds.Add(x.courseId);
|
|
|
+ CourseTask courseTask = x.ToJsonString().ToObject<CourseTask>();
|
|
|
+ courseTask.schedules=schedulesGroup.ToList();
|
|
|
+ privateGroupTask.Add(new KeyValuePair<string, CourseTask>(x.courseId, courseTask));
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+ if (courseIds.Any())
|
|
|
+ {
|
|
|
+ string sqlCourse = $"select value c from c where c.id in ({string.Join(",", courseIds.Select(b => $"'{b}'"))})";
|
|
|
+ var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).GetList<CourseBase>(sqlCourse, $"CourseBase");
|
|
|
+ if (result.list.IsNotEmpty())
|
|
|
+ {
|
|
|
+ foreach (var item in result.list)
|
|
|
|
|
|
+ {
|
|
|
+ List<CourseTaskDto> courseTaskDtos = new List<CourseTaskDto>();
|
|
|
+ var group = privateGroupTask.Where(x => x.Key.Equals(item.id)).Select(z => z.Value);
|
|
|
+ if (group.Any())
|
|
|
+ {
|
|
|
+ teahcerCourses.Add(new CourseStudentDto { courseBase=item, courseTasks=group.ToList() });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
return Ok(new { teahcerCourses, schoolCourses });
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1864,58 +1894,67 @@ namespace TEAMModelOS.Controllers.Both
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- var resultTeacher = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).GetList<CourseTask>(sql, $"CourseTask");
|
|
|
- if (resultTeacher.list.IsNotEmpty()){
|
|
|
+ {
|
|
|
HashSet<string> courseIds = new HashSet<string>();
|
|
|
- resultTeacher.list.ForEach(x => {
|
|
|
- var schedulesTeacher = x.schedules.Where(z => !string.IsNullOrWhiteSpace(z.teacherId) && z.teacherId.Equals(tmdid));
|
|
|
- if (schedulesTeacher.Any())
|
|
|
- {
|
|
|
- courseIds.Add(x.courseId);
|
|
|
- CourseTask courseTask = x.ToJsonString().ToObject<CourseTask>();
|
|
|
- courseTask.schedules=schedulesTeacher.ToList();
|
|
|
- privateTeacherTask.Add(new KeyValuePair<string,CourseTask >(x.courseId, courseTask));
|
|
|
- }
|
|
|
- var schedulesAssistant = x.schedules.Where(z => z.assistants.Contains(tmdid));
|
|
|
- if (schedulesAssistant.Any())
|
|
|
- {
|
|
|
- courseIds.Add(x.courseId);
|
|
|
- CourseTask courseTask = x.ToJsonString().ToObject<CourseTask>();
|
|
|
- courseTask.schedules=schedulesTeacher.ToList();
|
|
|
- privateAssistantTask.Add(new KeyValuePair<string,CourseTask >(x.courseId, courseTask));
|
|
|
- }
|
|
|
- });
|
|
|
- if (courseIds.Any())
|
|
|
+ string sqlCoursePrivate = "select value c.id from c ";
|
|
|
+ var resultCourseBasePrivate = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).GetList<string>(sqlCoursePrivate, $"CourseBase-{tmdid}");
|
|
|
+ if (resultCourseBasePrivate.list.IsNotEmpty())
|
|
|
+ {
|
|
|
+ courseIds=new HashSet<string>(resultCourseBasePrivate.list);
|
|
|
+ }
|
|
|
+ var resultTeacher = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).GetList<CourseTask>(sql, $"CourseTask");
|
|
|
+ if (resultTeacher.list.IsNotEmpty())
|
|
|
{
|
|
|
- string sqlCourse = $"select value c from c where c.id in ({string.Join(",", courseIds.Select(b => $"'{b}'"))})";
|
|
|
- var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).GetList<CourseBase>(sqlCourse, $"CourseBase");
|
|
|
- if (result.list.IsNotEmpty())
|
|
|
- {
|
|
|
- foreach (var item in result.list)
|
|
|
|
|
|
+ resultTeacher.list.ForEach(x => {
|
|
|
+ var schedulesTeacher = x.schedules.Where(z => !string.IsNullOrWhiteSpace(z.teacherId) && z.teacherId.Equals(tmdid));
|
|
|
+ if (schedulesTeacher.Any())
|
|
|
{
|
|
|
- List<CourseTaskDto> courseTaskDtos = new List<CourseTaskDto>();
|
|
|
- var teacher = privateTeacherTask.Where(x => x.Key.Equals(item.id)).Select(z => new CourseTaskDto { courseTask=z.Value, type="teacher" });
|
|
|
- if (teacher.Any())
|
|
|
- {
|
|
|
- courseTaskDtos.AddRange(teacher.ToList());
|
|
|
- }
|
|
|
- var assistant = privateAssistantTask.Where(x => x.Key.Equals(item.id)).Select(z => new CourseTaskDto { courseTask=z.Value, type="assistant" });
|
|
|
- if (assistant.Any())
|
|
|
+ courseIds.Add(x.courseId);
|
|
|
+ CourseTask courseTask = x.ToJsonString().ToObject<CourseTask>();
|
|
|
+ courseTask.schedules=schedulesTeacher.ToList();
|
|
|
+ privateTeacherTask.Add(new KeyValuePair<string, CourseTask>(x.courseId, courseTask));
|
|
|
+ }
|
|
|
+ var schedulesAssistant = x.schedules.Where(z => z.assistants.Contains(tmdid));
|
|
|
+ if (schedulesAssistant.Any())
|
|
|
+ {
|
|
|
+ courseIds.Add(x.courseId);
|
|
|
+ CourseTask courseTask = x.ToJsonString().ToObject<CourseTask>();
|
|
|
+ courseTask.schedules=schedulesTeacher.ToList();
|
|
|
+ privateAssistantTask.Add(new KeyValuePair<string, CourseTask>(x.courseId, courseTask));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (courseIds.Any())
|
|
|
+ {
|
|
|
+ string sqlCourse = $"select value c from c where c.id in ({string.Join(",", courseIds.Select(b => $"'{b}'"))})";
|
|
|
+ var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).GetList<CourseBase>(sqlCourse, $"CourseBase");
|
|
|
+ if (result.list.IsNotEmpty())
|
|
|
+ {
|
|
|
+ foreach (var item in result.list)
|
|
|
+
|
|
|
{
|
|
|
- courseTaskDtos.AddRange(assistant.ToList());
|
|
|
+ List<CourseTaskDto> courseTaskDtos = new List<CourseTaskDto>();
|
|
|
+ var teacher = privateTeacherTask.Where(x => x.Key.Equals(item.id)).Select(z => new CourseTaskDto { courseTask=z.Value, type="teacher" });
|
|
|
+ if (teacher.Any())
|
|
|
+ {
|
|
|
+ courseTaskDtos.AddRange(teacher.ToList());
|
|
|
+ }
|
|
|
+ var assistant = privateAssistantTask.Where(x => x.Key.Equals(item.id)).Select(z => new CourseTaskDto { courseTask=z.Value, type="assistant" });
|
|
|
+ if (assistant.Any())
|
|
|
+ {
|
|
|
+ courseTaskDtos.AddRange(assistant.ToList());
|
|
|
+ }
|
|
|
+ teahcerCourses.Add(new CourseDto { courseBase=item, courseTasks=courseTaskDtos });
|
|
|
}
|
|
|
- teahcerCourses.Add(new CourseDto { courseBase=item, courseTasks=courseTaskDtos });
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ //个人,
|
|
|
+ //学校,
|
|
|
+ //助教,学校。
|
|
|
+ //助教,个人。
|
|
|
+ return Ok(new { teahcerCourses, schoolCourses });
|
|
|
}
|
|
|
- //个人,
|
|
|
- //学校,
|
|
|
- //助教,学校。
|
|
|
- //助教,个人。
|
|
|
- return Ok(new { teahcerCourses , schoolCourses});
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
@@ -1926,7 +1965,12 @@ namespace TEAMModelOS.Controllers.Both
|
|
|
return Ok();
|
|
|
}
|
|
|
}
|
|
|
+ public class CourseStudentDto
|
|
|
+ {
|
|
|
+ public CourseBase courseBase { get; set; }
|
|
|
+ public List<CourseTask> courseTasks { get; set; }
|
|
|
|
|
|
+ }
|
|
|
public class CourseDto {
|
|
|
public CourseBase courseBase { get; set; }
|
|
|
public List<CourseTaskDto> courseTasks { get; set; }
|