CrazyIter_Bin 3 years ago
parent
commit
2193ae4ca9

+ 10 - 1
TEAMModelAPI/Controllers/School/CourseController.cs

@@ -146,7 +146,11 @@ namespace TEAMModelAPI.Controllers
                     var period = data.period.Find(x => x.id.Equals($"{courseDto.periodId}"));
                     if (period != null)
                     {
+                        //同名学科
                         var subject = period.subjects.Find(x => x.id.Equals($"{courseDto.subjectId}"));
+                        if (subject == null) {
+                            subject = period.subjects.Find(x => x.name.Equals($"{courseDto.subjectName}"));
+                        }
                         if (subject == null) {
                             subject = new Subject { id = courseDto.subjectId, name = subject.name, type = 1 };
                             period.subjects.Add(subject);
@@ -269,7 +273,12 @@ namespace TEAMModelAPI.Controllers
                 if (importCourse != null) {
                     Period period= data.period.Find(x => x.id.Equals(importCourse.periodId));
                     if (period != null) {
-                        Subject subject=   period.subjects.Find(x => x.id.Equals(importCourse.subjectId));
+                        //同名学科
+                        var subject = period.subjects.Find(x => x.id.Equals($"{importCourse.subjectId}"));
+                        if (subject == null)
+                        {
+                            subject = period.subjects.Find(x => x.name.Equals($"{importCourse.subjectName}"));
+                        }
                         if (subject == null) {
                             subject = new Subject { id = importCourse.subjectId, name = importCourse.subjectName, type = 1 };
                             period.subjects.Add(subject);

+ 1 - 1
TEAMModelAPI/Controllers/School/GroupListController.cs

@@ -458,7 +458,7 @@ namespace TEAMModelAPI.Controllers
         }
 
         /// <summary>
-        /// 导入教学班学生
+        /// 移除教学班学生
         /// </summary>
         /// <param name="request"></param>
         /// <returns></returns>

+ 1 - 2
TEAMModelAPI/Controllers/School/RoomController.cs

@@ -124,7 +124,7 @@ namespace TEAMModelAPI.Controllers
                 {
                     db_rooms.Add(item);
                 }
-                //不存在的课程,可以被直接创建
+                //不存在的教室,可以被直接创建
                 var unexistRoomIds = rooms.Select(x=>x.id).Except(db_rooms.Select(x => x.id));
                 foreach (var roomId in unexistRoomIds) {
                     var room_web = rooms.Find(x => x.id.Equals(roomId));
@@ -158,6 +158,5 @@ namespace TEAMModelAPI.Controllers
             }
             return Ok(new { roomUpdate= db_rooms, roomCreate= roomCreate });
         }
-
     }
 }

+ 53 - 23
TEAMModelAPI/Controllers/School/TeacherController.cs

@@ -213,6 +213,8 @@ namespace TEAMModelAPI.Controllers
             }
             long now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
             School data = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>(school, new PartitionKey("Base"));
+            //学校学科发生变化。
+            bool baseChange = false;
             foreach (var item in teachers) {
                 var teacher = teachersList.Find(x => x.id.Equals(item.id));
                 var coreUser = coreUsers.Find(x => x.id.Equals(item.id));
@@ -248,37 +250,65 @@ namespace TEAMModelAPI.Controllers
                     await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).CreateItemAsync(teacher, new PartitionKey("Base"));
                 }
                 var schoolTeacher = schoolTeachers.Find(x => x.id.Equals(item.id));
-                if (schoolTeacher == null)
+                //处理导入的学科
+                List<string> subjectIds = new List<string>();
+                if (item.subjects.IsNotEmpty() && !string.IsNullOrWhiteSpace(item.periodId))
                 {
-                    List<string> subjectIds=new List<string>();
-                    if (item.subjects .IsNotEmpty() && !string.IsNullOrWhiteSpace(item.periodId)) {
-                        item.subjects.ForEach(s => {
-                            var subject= data.period.Find(x => x.id.Equals(item.periodId))?.subjects?.Find(x => x.name.Equals(s.name));
-                            if (subject == null)
+                    item.subjects.ForEach(s => {
+                        //同名学科
+                        var subject = data.period.Find(x => x.id.Equals(item.periodId))?.subjects?.Find(x => x.id.Equals(s.id));
+                        if (subject == null)
+                        {
+                            subject = data.period.Find(x => x.id.Equals(item.periodId))?.subjects?.Find(x => x.name.Equals(s.name));
+                        }
+                        else
+                        {
+                            subjectIds.Add(subject.id);
+                        }
+                        if (subject == null)
+                        {
+                            var period = data.period.Find(x => x.id.Equals(item.periodId));
+                            if (period != null)
                             {
-                                subject = data.period.Find(x => x.id.Equals(item.periodId))?.subjects?.Find(x => x.id.Equals(s.id));
+                                period.subjects.Add(new Subject { id = s.id, name = s.name, type = 2 });
+                                subjectIds.Add(s.id);
+                                baseChange = true;
                             }
-                            else { 
-                                subjectIds.Add(subject.id);
-                            }
-                            if (subject == null) {
-                              var  period=  data.period.Find(x => x.id.Equals(item.periodId));
-                                if (period != null) {
-                                    period.subjects.Add(new Subject { id = s.id, name = s.name ,type=2});
-                                }
-                            }
-
-                        });
-                    }
+                        }
+                    });
+                }
+                if (schoolTeacher == null)
+                {
                     schoolTeacher = new SchoolTeacher
                     {
                         id = item.id,
-                        name=coreUser.name,
-                        picture=coreUser.picture,
-                        job=item.job,
-
+                        name = coreUser.name,
+                        picture = coreUser.picture,
+                        job = item.job,
+                        subjectIds = subjectIds,
+                        roles = new List<string> { "teacher" },
+                        permissions = new List<string> { "content-read", "exercise-read", "knowledge-read", "syllabus-read" },
+                        status = "join",
+                        code = $"Teacher-{school}",
+                        pk = "Teacher",
+                        createTime = now,
                     };
+                    await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).CreateItemAsync(schoolTeacher, new PartitionKey(schoolTeacher.code));
                 }
+                else {
+                    if (subjectIds.IsNotEmpty()) {
+                        subjectIds.ForEach(x => {
+                            if (!schoolTeacher.subjectIds.Contains(x)) {
+                                schoolTeacher.subjectIds.Add(x);
+                            }
+                        });
+                    }
+                    schoolTeacher.job = string.IsNullOrWhiteSpace(item.job) ? schoolTeacher.job : item.job;
+                    await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReplaceItemAsync(schoolTeacher,schoolTeacher.id, new PartitionKey(schoolTeacher.code));
+                }
+            }
+            if (baseChange) {
+                await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReplaceItemAsync(data, data.id, new PartitionKey("Base"));
             }
             return Ok();
         }