|
@@ -26,6 +26,7 @@ using DocumentFormat.OpenXml.Drawing.Charts;
|
|
|
using FastJSON;
|
|
|
using OpenXmlPowerTools;
|
|
|
using DocumentFormat.OpenXml.Drawing.Spreadsheet;
|
|
|
+using System.Text.RegularExpressions;
|
|
|
|
|
|
namespace TEAMModelOS.Controllers.Both
|
|
|
{
|
|
@@ -89,7 +90,7 @@ namespace TEAMModelOS.Controllers.Both
|
|
|
{
|
|
|
courseBases.Add(item);
|
|
|
}
|
|
|
- return Ok(new { courseBases });
|
|
|
+ return Ok(new { courseBases=courseBases.OrderByDescending(z=>z._ts) });
|
|
|
}
|
|
|
case bool when $"{grant_type}".Equals("delete", StringComparison.OrdinalIgnoreCase):
|
|
|
{
|
|
@@ -320,7 +321,283 @@ namespace TEAMModelOS.Controllers.Both
|
|
|
return Ok(new { courseTask });
|
|
|
}
|
|
|
}
|
|
|
- case bool when $"{grant_type}".Equals("insert-scheduleTask", StringComparison.OrdinalIgnoreCase)
|
|
|
+ case bool when $"{grant_type}".Equals("upsert-scheduleTask", StringComparison.OrdinalIgnoreCase):
|
|
|
+ {
|
|
|
+ List<ScheduleTaskDto> invalidCourseTask = new List<ScheduleTaskDto>();
|
|
|
+ JsonElement _year= default, _semesterId=default, _courseId=default, _periodId=default;
|
|
|
+
|
|
|
+ if (!request.TryGetProperty("datas", out JsonElement _datas) && !request.TryGetProperty("courseId", out _courseId))
|
|
|
+ {
|
|
|
+ return BadRequest();
|
|
|
+ }
|
|
|
+ if ($"{scope}".Equals("school", StringComparison.OrdinalIgnoreCase)) {
|
|
|
+ if (!request.TryGetProperty("periodId", out _periodId)) return BadRequest();
|
|
|
+ if ( !request.TryGetProperty("year", out _year)
|
|
|
+ && !request.TryGetProperty("semesterId", out _semesterId)) {
|
|
|
+ return BadRequest();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ string tbname = $"{scope}".Equals("school", StringComparison.OrdinalIgnoreCase) ? Constant.School : Constant.Teacher;
|
|
|
+ List<ScheduleTaskDto> datas = _datas.ToObject<List<ScheduleTaskDto>>();
|
|
|
+ //过滤掉名单,教师空的数据
|
|
|
+ var invalids = datas.FindAll(z => string.IsNullOrWhiteSpace(z.teacherId) || string.IsNullOrWhiteSpace(z.groupId) || string.IsNullOrWhiteSpace(z.type));
|
|
|
+ if (invalids != null) {
|
|
|
+ datas.RemoveAll(z => string.IsNullOrWhiteSpace(z.teacherId) || string.IsNullOrWhiteSpace(z.groupId) || string.IsNullOrWhiteSpace(z.type));
|
|
|
+ foreach (var invalid in invalids) {
|
|
|
+ if (string.IsNullOrWhiteSpace(invalid.groupId) || string.IsNullOrWhiteSpace(invalid.type)) {
|
|
|
+ invalid.invalidCode = 3;
|
|
|
+ }
|
|
|
+ if (string.IsNullOrWhiteSpace(invalid.teacherId))
|
|
|
+ {
|
|
|
+ invalid.invalidCode = 2;
|
|
|
+ }
|
|
|
+ invalidCourseTask.Add(invalid);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var groups= datas.GroupBy(z => new { z.teacherId, z.groupId }).Select(x => new { key = x.Key, list = x.ToList() });
|
|
|
+ foreach (var item in groups) {
|
|
|
+ if (item.list.Count > 1) {
|
|
|
+ return Ok(new { invalidCourseTask=item.list.Select(z=>z.invalidCode=20) });//同一教师,同一班级,同一课程,只能有一条记录
|
|
|
+ }
|
|
|
+ }
|
|
|
+ HashSet<CourseTask> courseTasks = new HashSet<CourseTask>();
|
|
|
+ if (scope.ToString().Equals("school", StringComparison.OrdinalIgnoreCase))
|
|
|
+ {
|
|
|
+ string taskCode = $"CourseTask-{school}";
|
|
|
+ string taskId = $"{_year}-{_semesterId}-{_courseId}";
|
|
|
+ CourseTask courseTask = null;
|
|
|
+ School schoolBase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
|
|
|
+ var period = schoolBase.period.Find(x => x.id.Equals($"{_periodId}"));
|
|
|
+
|
|
|
+ //学年
|
|
|
+ if (int.Parse(_year.ToString()) < 2000)
|
|
|
+ {
|
|
|
+ return Ok(new { invalidCode = 17 });//学年应大于2000
|
|
|
+ }
|
|
|
+ //学期
|
|
|
+ var semester = period.semesters.Where(z => z.id.Equals(_semesterId.ToString()));
|
|
|
+ if (!semester.Any())
|
|
|
+ {
|
|
|
+ return Ok(new { invalidCode = 16 });//学期不存在
|
|
|
+ }
|
|
|
+ CourseBase courseBase = null;
|
|
|
+ Azure.Response responseBase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemStreamAsync($"{_courseId.ToString()}", new PartitionKey($"CourseBase-{school}"));
|
|
|
+ if (responseBase.Status == 200)
|
|
|
+ {
|
|
|
+ courseBase = JsonDocument.Parse(responseBase.Content).RootElement.ToObject<CourseBase>();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return Ok(new { invalidCode = 1 });//课程不存在
|
|
|
+ }
|
|
|
+ Azure.Response response = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemStreamAsync(taskId, new PartitionKey(taskCode));
|
|
|
+ if (response.Status == 200)
|
|
|
+ {
|
|
|
+ courseTask = JsonDocument.Parse(response.Content).RootElement.ToObject<CourseTask>();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ courseTask = new CourseTask
|
|
|
+ {
|
|
|
+ id = taskId,
|
|
|
+ code = taskCode,
|
|
|
+ pk = "CourseTask",
|
|
|
+ ttl = -1,
|
|
|
+ courseId = _courseId.ToString(),
|
|
|
+ year = int.Parse(_year.ToString()),
|
|
|
+ semesterId = _semesterId.ToString(),
|
|
|
+ };
|
|
|
+ }
|
|
|
+ //获取相关的名单
|
|
|
+ List<GroupListDto> groupListDtos = await GroupListService.GetGroupListByListids(client, _dingDing, datas.Select(z => z.groupId).ToHashSet().ToList(), school);
|
|
|
+ //获取相关的教室
|
|
|
+ var roomIds = datas.Where(x => !string.IsNullOrWhiteSpace(x.roomId)).Select(c => $"'{c.roomId}'");
|
|
|
+ List<Room> rooms = new List<Room>();
|
|
|
+ if (roomIds.Any())
|
|
|
+ {
|
|
|
+ string sqlRoom = $"select value c from c where c.id in ({string.Join(",", roomIds)})";
|
|
|
+ var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).GetList<Room>(sqlRoom, $"Room-{school}");
|
|
|
+ if (result.list.IsNotEmpty())
|
|
|
+ {
|
|
|
+ rooms.AddRange(result.list);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //获取教师
|
|
|
+ List<SchoolTeacher> schoolTeachers = new List<SchoolTeacher>();
|
|
|
+ var teacherIds = datas.Where(x => !string.IsNullOrWhiteSpace(x.teacherId)).Select(c => $"'{c.teacherId}'");
|
|
|
+ var assistants = datas.SelectMany(x => x.assistants);
|
|
|
+ teacherIds = teacherIds.Union(assistants).ToHashSet();
|
|
|
+ if (teacherIds.Any())
|
|
|
+ {
|
|
|
+ string sqlTeacher = $"select value c from c where c.id in ({string.Join(",", teacherIds)}) ";
|
|
|
+ var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).GetList<SchoolTeacher>(sqlTeacher, $"Teacher-{school}");
|
|
|
+ if (result.list.IsNotEmpty())
|
|
|
+ {
|
|
|
+ schoolTeachers.AddRange(result.list);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ foreach (var data in datas)
|
|
|
+ {
|
|
|
+ var courseTaskInsert = SchoolService.CheckCourseTask($"{scope}",data,school,groupListDtos,rooms,schoolTeachers,null);
|
|
|
+ if (courseTaskInsert.invalidCode == 0)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ var scheduleTask = courseTask.schedules.Find(z => z.type.Equals(courseTaskInsert.type) && z.groupId.Equals(courseTaskInsert.groupId) );
|
|
|
+ if (scheduleTask == null)
|
|
|
+ {
|
|
|
+ scheduleTask = new ScheduleTask()
|
|
|
+ {
|
|
|
+ roomId = courseTaskInsert.roomId,
|
|
|
+ groupId = courseTaskInsert.groupId,
|
|
|
+ type = courseTaskInsert.type,
|
|
|
+ teacherId = courseTaskInsert.teacherId,
|
|
|
+ times = new List<ScheduleTime>(),
|
|
|
+ school = school,
|
|
|
+ };
|
|
|
+ courseTask.schedules.Add(scheduleTask);
|
|
|
+ //新增
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //编辑
|
|
|
+
|
|
|
+ scheduleTask.roomId = courseTaskInsert.roomId;
|
|
|
+ scheduleTask.school = school;
|
|
|
+ scheduleTask.teacherId = courseTaskInsert.teacherId;
|
|
|
+ scheduleTask.startTime= courseTaskInsert.startTime>0?courseTaskInsert.startTime:scheduleTask.startTime;
|
|
|
+ scheduleTask.notice=string.IsNullOrWhiteSpace(courseTaskInsert.notice)?scheduleTask.notice:courseTaskInsert.notice;
|
|
|
+ scheduleTask.assistants= courseTaskInsert.assistants!=null?courseTaskInsert.assistants:courseTaskInsert.assistants;
|
|
|
+ }
|
|
|
+ //如果被删除完了,就删除该条记录。
|
|
|
+ if (courseTask.schedules.Count <= 0)
|
|
|
+ {
|
|
|
+ courseTasks.Remove(courseTask);
|
|
|
+ await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).DeleteItemStreamAsync(courseTask.id, new PartitionKey(courseTask.code));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).UpsertItemAsync(courseTask, new PartitionKey(taskCode));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ invalidCourseTask.Add(courseTaskInsert);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ string taskCode = $"CourseTask-{tmdid}";
|
|
|
+ string taskId = $"{_courseId}";
|
|
|
+ CourseTask courseTask = null;
|
|
|
+ CourseBase courseBase = null;
|
|
|
+ Azure.Response responseBase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReadItemStreamAsync($"{_courseId.ToString()}", new PartitionKey($"CourseBase-{tmdid}"));
|
|
|
+ if (responseBase.Status == 200)
|
|
|
+ {
|
|
|
+ courseBase = JsonDocument.Parse(responseBase.Content).RootElement.ToObject<CourseBase>();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return Ok(new { invalidCode = 1 });//课程不存在
|
|
|
+ }
|
|
|
+ Azure.Response response = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReadItemStreamAsync(taskId, new PartitionKey(taskCode));
|
|
|
+ if (response.Status == 200)
|
|
|
+ {
|
|
|
+ courseTask = JsonDocument.Parse(response.Content).RootElement.ToObject<CourseTask>();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ courseTask = new CourseTask
|
|
|
+ {
|
|
|
+ id = taskId,
|
|
|
+ code = taskCode,
|
|
|
+ pk = "CourseTask",
|
|
|
+ ttl = -1,
|
|
|
+ courseId = _courseId.ToString(),
|
|
|
+ year = int.Parse(_year.ToString()),
|
|
|
+ semesterId = _semesterId.ToString(),
|
|
|
+ };
|
|
|
+ }
|
|
|
+ //获取相关的名单
|
|
|
+ List<GroupListDto> groupListDtos = await GroupListService.GetGroupListByListids(client, _dingDing, datas.Select(z => z.groupId).ToHashSet().ToList(), school);
|
|
|
+ //获取相关的教室
|
|
|
+ var roomIds = datas.Where(x => !string.IsNullOrWhiteSpace(x.roomId)).Select(c => $"'{c.roomId}'");
|
|
|
+ List<Room> rooms = new List<Room>();
|
|
|
+ if (roomIds.Any() && !string.IsNullOrWhiteSpace(school))
|
|
|
+ {
|
|
|
+ string sqlRoom = $"select value c from c where c.id in ({string.Join(",", roomIds)})";
|
|
|
+ var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).GetList<Room>(sqlRoom, $"Room-{school}");
|
|
|
+ if (result.list.IsNotEmpty())
|
|
|
+ {
|
|
|
+ rooms.AddRange(result.list);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //获取教师
|
|
|
+ List<Teacher> teachers = new List<Teacher>();
|
|
|
+ var teacherIds = datas.Where(x => !string.IsNullOrWhiteSpace(x.teacherId)).Select(c => $"'{c.teacherId}'");
|
|
|
+ var assistants = datas.SelectMany(x => x.assistants);
|
|
|
+ teacherIds = teacherIds.Union(assistants).ToHashSet();
|
|
|
+ if (teacherIds.Any())
|
|
|
+ {
|
|
|
+ string sqlTeacher = $"select value c from c where c.id in ({string.Join(",", teacherIds)}) ";
|
|
|
+ var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).GetList<Teacher>(sqlTeacher, $"Base");
|
|
|
+ if (result.list.IsNotEmpty())
|
|
|
+ {
|
|
|
+ teachers.AddRange(result.list);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ foreach (var data in datas)
|
|
|
+ {
|
|
|
+ var courseTaskInsert = SchoolService.CheckCourseTask($"{scope}", data, school, groupListDtos, rooms, null, teachers);
|
|
|
+ if (courseTaskInsert.invalidCode == 0)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ var scheduleTask = courseTask.schedules.Find(z => z.type.Equals(courseTaskInsert.type) && z.groupId.Equals(courseTaskInsert.groupId));
|
|
|
+ if (scheduleTask == null)
|
|
|
+ {
|
|
|
+ scheduleTask = new ScheduleTask()
|
|
|
+ {
|
|
|
+ roomId = courseTaskInsert.roomId,
|
|
|
+ groupId = courseTaskInsert.groupId,
|
|
|
+ type = courseTaskInsert.type,
|
|
|
+ teacherId = courseTaskInsert.teacherId,
|
|
|
+ times = new List<ScheduleTime>(),
|
|
|
+ school = school,
|
|
|
+ };
|
|
|
+ courseTask.schedules.Add(scheduleTask);
|
|
|
+ //新增
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //编辑
|
|
|
+
|
|
|
+ scheduleTask.roomId = courseTaskInsert.roomId;
|
|
|
+ scheduleTask.school = school;
|
|
|
+ scheduleTask.teacherId = courseTaskInsert.teacherId;
|
|
|
+ scheduleTask.startTime = courseTaskInsert.startTime > 0 ? courseTaskInsert.startTime : scheduleTask.startTime;
|
|
|
+ scheduleTask.notice = string.IsNullOrWhiteSpace(courseTaskInsert.notice) ? scheduleTask.notice : courseTaskInsert.notice;
|
|
|
+ scheduleTask.assistants = courseTaskInsert.assistants != null ? courseTaskInsert.assistants : courseTaskInsert.assistants;
|
|
|
+ }
|
|
|
+ //如果被删除完了,就删除该条记录。
|
|
|
+ if (courseTask.schedules.Count <= 0)
|
|
|
+ {
|
|
|
+ courseTasks.Remove(courseTask);
|
|
|
+ await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).DeleteItemStreamAsync(courseTask.id, new PartitionKey(courseTask.code));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).UpsertItemAsync(courseTask, new PartitionKey(taskCode));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ invalidCourseTask.Add(courseTaskInsert);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return Ok(new { invalidCourseTask, courseTasks });
|
|
|
+ }
|
|
|
+ case bool when $"{grant_type}".Equals("insert-scheduleTask", StringComparison.OrdinalIgnoreCase)
|
|
|
|| $"{grant_type}".Equals("change-scheduleTask", StringComparison.OrdinalIgnoreCase)
|
|
|
|| $"{grant_type}".Equals("delete-scheduleTask", StringComparison.OrdinalIgnoreCase):
|
|
|
{
|
|
@@ -411,9 +688,22 @@ namespace TEAMModelOS.Controllers.Both
|
|
|
};
|
|
|
}
|
|
|
}
|
|
|
- var scheduleTask = courseTask.schedules.Find(z => z.type.Equals(courseTaskInsert.type) && z.groupId.Equals(courseTaskInsert.groupId) && z.teacherId.Equals(courseTaskInsert.teacherId));
|
|
|
- if (scheduleTask == null)
|
|
|
+ ScheduleTask scheduleTask = null;
|
|
|
+ var scheduleTasks = courseTask.schedules.FindAll(z => z.type.Equals(courseTaskInsert.type) && z.groupId.Equals(courseTaskInsert.groupId) );
|
|
|
+ if (scheduleTasks.IsNotEmpty())
|
|
|
{
|
|
|
+ if (scheduleTasks.Count > 2) {
|
|
|
+ courseTask.schedules.RemoveRange(1, scheduleTasks.Count - 1);
|
|
|
+ }
|
|
|
+ scheduleTask= scheduleTasks.First();
|
|
|
+ scheduleTask.roomId = courseTaskInsert.roomId;
|
|
|
+ scheduleTask.school = school;
|
|
|
+ scheduleTask.teacherId = courseTaskInsert.teacherId;
|
|
|
+ scheduleTask.startTime = courseTaskInsert.startTime > 0 ? courseTaskInsert.startTime : scheduleTask.startTime;
|
|
|
+ scheduleTask.notice = string.IsNullOrWhiteSpace(courseTaskInsert.notice) ? scheduleTask.notice : courseTaskInsert.notice;
|
|
|
+ scheduleTask.assistants = courseTaskInsert.assistants != null ? courseTaskInsert.assistants : courseTaskInsert.assistants;
|
|
|
+ }
|
|
|
+ else {
|
|
|
scheduleTask = new ScheduleTask()
|
|
|
{
|
|
|
roomId = courseTaskInsert.roomId,
|
|
@@ -425,11 +715,6 @@ namespace TEAMModelOS.Controllers.Both
|
|
|
};
|
|
|
courseTask.schedules.Add(scheduleTask);
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- scheduleTask.roomId = courseTaskInsert.roomId;
|
|
|
- scheduleTask.school=school;
|
|
|
- }
|
|
|
//修改教师或名单
|
|
|
if (grant_type.ToString().Equals("change-scheduleTask", StringComparison.OrdinalIgnoreCase)) {
|
|
|
if (!string.IsNullOrWhiteSpace(courseTaskInsert.teacherIdChanged)) {
|
|
@@ -540,8 +825,23 @@ namespace TEAMModelOS.Controllers.Both
|
|
|
};
|
|
|
}
|
|
|
}
|
|
|
- var scheduleTask = courseTask.schedules.Find(z => z.type.Equals(courseTaskInsert.type) && z.groupId.Equals(courseTaskInsert.groupId) && z.teacherId.Equals(courseTaskInsert.teacherId));
|
|
|
- if (scheduleTask == null)
|
|
|
+ ScheduleTask scheduleTask = null;
|
|
|
+ var scheduleTasks = courseTask.schedules.FindAll(z => z.type.Equals(courseTaskInsert.type) && z.groupId.Equals(courseTaskInsert.groupId));
|
|
|
+ if (scheduleTasks.IsNotEmpty())
|
|
|
+ {
|
|
|
+ if (scheduleTasks.Count > 2)
|
|
|
+ {
|
|
|
+ courseTask.schedules.RemoveRange(1, scheduleTasks.Count - 1);
|
|
|
+ }
|
|
|
+ scheduleTask = scheduleTasks.First();
|
|
|
+ scheduleTask.roomId = string.IsNullOrWhiteSpace(courseTaskInsert.roomId) ? scheduleTask.roomId : courseTaskInsert.roomId ;
|
|
|
+ scheduleTask.school = school;
|
|
|
+ scheduleTask.teacherId = courseTaskInsert.teacherId;
|
|
|
+ scheduleTask.startTime = courseTaskInsert.startTime > 0 ? courseTaskInsert.startTime : scheduleTask.startTime;
|
|
|
+ scheduleTask.notice = string.IsNullOrWhiteSpace(courseTaskInsert.notice) ? scheduleTask.notice : courseTaskInsert.notice;
|
|
|
+ scheduleTask.assistants = courseTaskInsert.assistants != null ? courseTaskInsert.assistants : courseTaskInsert.assistants;
|
|
|
+ }
|
|
|
+ else
|
|
|
{
|
|
|
scheduleTask = new ScheduleTask()
|
|
|
{
|
|
@@ -550,15 +850,10 @@ namespace TEAMModelOS.Controllers.Both
|
|
|
type = courseTaskInsert.type,
|
|
|
teacherId = courseTaskInsert.teacherId,
|
|
|
times = new List<ScheduleTime>(),
|
|
|
- school = courseTaskInsert.school,
|
|
|
+ school = school,
|
|
|
};
|
|
|
courseTask.schedules.Add(scheduleTask);
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- scheduleTask.roomId = courseTaskInsert.roomId;
|
|
|
- scheduleTask.school = courseTaskInsert.school;
|
|
|
- }
|
|
|
//修改教师或名单
|
|
|
if (grant_type.ToString().Equals("change-scheduleTask", StringComparison.OrdinalIgnoreCase))
|
|
|
{
|
|
@@ -651,6 +946,8 @@ namespace TEAMModelOS.Controllers.Both
|
|
|
}
|
|
|
courseCheckImports.RemoveAll(z => tmdidInvalidImports.Contains(z));
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
//3.检查导入的教学班名称是否有效
|
|
|
IEnumerable<CourseCheckImport> teachInvalidImports = null;
|
|
|
List<GroupList> groupLists = new List<GroupList>();
|
|
@@ -896,6 +1193,21 @@ namespace TEAMModelOS.Controllers.Both
|
|
|
var groupList= groupLists.Find(z => z.name.Equals(item.list));
|
|
|
groupId=groupList?.id;
|
|
|
}
|
|
|
+ //检查助教是否存在
|
|
|
+ string[] assistants = null;
|
|
|
+ if (!string.IsNullOrWhiteSpace(item.assistants)) {
|
|
|
+ Regex.Split(item.assistants, "\\.|\\.|\\、|\\:|\\:|\\,|\\,|\\;|\\;");
|
|
|
+ }
|
|
|
+ var invalidAssistants = assistants.Except(teachers.Select(x => x.id));
|
|
|
+ if (invalidAssistants != null && invalidAssistants.Any())
|
|
|
+ {
|
|
|
+ item.invalidCode = 21;
|
|
|
+ item.invalidMsg = $"{string.Join(",", invalidAssistants)}";
|
|
|
+ courseInvalidImports.Add(item);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
Room room = rooms.Find(z =>!string.IsNullOrWhiteSpace(item.roomNo) && z.no.Equals(item.roomNo));
|
|
|
string roomId= room?.id;
|
|
|
string teacherId = teachers.Find(z => z.id.Equals(item.tmdid))?.id;
|
|
@@ -937,38 +1249,52 @@ namespace TEAMModelOS.Controllers.Both
|
|
|
courseTasks.Add(courseTask);
|
|
|
}
|
|
|
else {
|
|
|
- var scheduleTask= courseTask.schedules.Find(z => z.type.Equals(item.type) && z.groupId.Equals(groupId) && z.teacherId.Equals(teacherId));
|
|
|
- if (scheduleTask == null)
|
|
|
+ ScheduleTask scheduleTask = null;
|
|
|
+ var scheduleTasks = courseTask.schedules.FindAll(z => z.type.Equals(item.type) && z.groupId.Equals(groupId));
|
|
|
+ if (scheduleTasks.IsNotEmpty())
|
|
|
{
|
|
|
- courseTask.schedules.Add(new ScheduleTask()
|
|
|
+ if (scheduleTasks.Count > 2)
|
|
|
{
|
|
|
- roomId = roomId,
|
|
|
- groupId = groupId,
|
|
|
- type = item.type,
|
|
|
- teacherId = teacherId,
|
|
|
- times = scheduleTime!=null ? new List<ScheduleTime> { scheduleTime }: new List<ScheduleTime> { },
|
|
|
- school = school,
|
|
|
- });
|
|
|
- }
|
|
|
- else {
|
|
|
- scheduleTask.roomId = roomId;
|
|
|
+ courseTask.schedules.RemoveRange(1, scheduleTasks.Count - 1);
|
|
|
+ }
|
|
|
+ scheduleTask = scheduleTasks.First();
|
|
|
+ scheduleTask.roomId = string.IsNullOrWhiteSpace(roomId) ? scheduleTask.roomId : roomId;
|
|
|
scheduleTask.school = school;
|
|
|
- if (scheduleTime != null) {
|
|
|
- var shtime = scheduleTask.times.Find(z => z.id.Equals(scheduleTime.id) && z.week.Equals(scheduleTime.week) && z.mode.Equals(scheduleTime.mode));
|
|
|
+ scheduleTask.teacherId = teacherId;
|
|
|
+ scheduleTask.assistants = assistants != null ? assistants.ToHashSet() : scheduleTask.assistants;
|
|
|
+ if (scheduleTime != null)
|
|
|
+ {
|
|
|
+ var shtime = scheduleTask.times.Find(z => z.id.Equals(scheduleTime.id) && z.week.Equals(scheduleTime.week) && z.mode.Equals(scheduleTime.mode));
|
|
|
if (shtime == null)
|
|
|
{
|
|
|
scheduleTask.times.Add(scheduleTime);
|
|
|
}
|
|
|
- else {
|
|
|
- if (scheduleTime.index.Any())
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (scheduleTime.index.Any())
|
|
|
{
|
|
|
- foreach (var ind in scheduleTime.index) {
|
|
|
+ foreach (var ind in scheduleTime.index)
|
|
|
+ {
|
|
|
shtime.index.Add(ind);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ scheduleTask = new ScheduleTask()
|
|
|
+ {
|
|
|
+
|
|
|
+ roomId = roomId,
|
|
|
+ groupId = groupId,
|
|
|
+ type = item.type,
|
|
|
+ teacherId = teacherId,
|
|
|
+ times = scheduleTime != null ? new List<ScheduleTime> { scheduleTime } : new List<ScheduleTime> { },
|
|
|
+ school = school,
|
|
|
+ };
|
|
|
+ courseTask.schedules.Add(scheduleTask);
|
|
|
+ }
|
|
|
}
|
|
|
checkedCount++;
|
|
|
}
|