소스 검색

update,开放平台教师导入。

CrazyIter_Bin 3 년 전
부모
커밋
d89ae8d10f

+ 36 - 1
TEAMModelAPI/Controllers/School/TeacherController.cs

@@ -215,6 +215,7 @@ namespace TEAMModelAPI.Controllers
             School data = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>(school, new PartitionKey("Base"));
             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));
                 if (teacher != null)
                 {
                     var sch= teacher.schools?.Find(x => x.schoolId.Equals(school));
@@ -229,9 +230,10 @@ namespace TEAMModelAPI.Controllers
                             teacher.schools = new List<Teacher.TeacherSchool> { new Teacher.TeacherSchool { schoolId = school, name = data.name, status = "join", time = now, picture = data.picture, areaId = data.areaId } };
                         }
                     }
+                    await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReplaceItemAsync<Teacher>(teacher,teacher.id, new PartitionKey("Base"));
                 }
                 else {
-                    var coreUser=  coreUsers.Find(x => x.id.Equals(item.id));
+                
                     teacher = new Teacher
                     {
                         id = coreUser.id,
@@ -243,6 +245,39 @@ namespace TEAMModelAPI.Controllers
                         pk="Base",
                         schools = new List<Teacher.TeacherSchool> { new Teacher.TeacherSchool { schoolId = school, name = data.name, status = "join", time = now, picture = data.picture, areaId = data.areaId } }
                     };
+                    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)) {
+                        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)
+                            {
+                                subject = data.period.Find(x => x.id.Equals(item.periodId))?.subjects?.Find(x => x.id.Equals(s.id));
+                            }
+                            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});
+                                }
+                            }
+
+                        });
+                    }
+                    schoolTeacher = new SchoolTeacher
+                    {
+                        id = item.id,
+                        name=coreUser.name,
+                        picture=coreUser.picture,
+                        job=item.job,
+
+                    };
                 }
             }
             return Ok();

+ 17 - 3
TEAMModelOS/Controllers/School/SchoolTeacherController.cs

@@ -176,10 +176,19 @@ namespace TEAMModelOS.Controllers
                 request.TryGetProperty("ids", out JsonElement _ids);
                 request.TryGetProperty("job", out JsonElement _job);
                 request.TryGetProperty("permission", out JsonElement _permission);
-                if (!_permission.ValueKind.Equals(JsonValueKind.Array) || !_ids.ValueKind.Equals(JsonValueKind.Array)) {
+                request.TryGetProperty("pmAdd", out JsonElement _pmAdd);
+                List<string> addPm = null ;
+                if (!_pmAdd.ValueKind.Equals(JsonValueKind.Array)){
+                    addPm= _pmAdd.ToObject<List<string>>();
+                }
+                List<string> permission = null;
+                if (!_permission.ValueKind.Equals(JsonValueKind.Array))
+                {
+                     permission = _permission.ToObject<List<string>>();
+                }
+                if (!_ids.ValueKind.Equals(JsonValueKind.Array)) {
                     return BadRequest();
                 }
-                List<string> permission =_permission.ToObject<List<string>>();
                 List<string> ids = _ids.ToObject<List<string>>();
                 //更新權限
                 List<SchoolTeacher> schoolTeachers = new List<SchoolTeacher>();
@@ -194,7 +203,12 @@ namespace TEAMModelOS.Controllers
                 foreach (var id in ids)
                 {
                     SchoolTeacher st = await client.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<SchoolTeacher>(id, new PartitionKey($"Teacher-{school_code}"));
-                    st.permissions = permission;
+                    if (permission.IsNotEmpty()) {
+                        st.permissions = permission;
+                    }
+                    if (addPm.IsNotEmpty()) {
+                        st.permissions.AddRange(addPm);
+                    }
                     if (hasjob) {
                         st.job = $"{_job}";
                     }

+ 27 - 0
TEAMModelOS/Controllers/XTest/FixDataController.cs

@@ -1858,6 +1858,33 @@ namespace TEAMModelOS.Controllers
             return Ok(schools);
         }
         /// <summary>
+        /// 重置能力点上传作品的评分状态
+        /// </summary>
+        /// <param name="jsonElement"></param>
+        /// <returns></returns>
+        [HttpPost("reset-ability-upload-school")]
+        public async Task<IActionResult> ResetAbilityUploadSchool(JsonElement json) {
+            var client = _azureCosmos.GetCosmosClient();
+            string sql = "SELECT  distinct value(c)  FROM c join b in c.otherScore where c.id='c57f3650-7f1a-4bc0-bb66-f19e6ac03fd8' and array_length(c.uploads)>0 and array_length(c.otherScore)>0  and b.roleType='school'  ";
+            List<AbilitySub> abilitySubs = new List<AbilitySub>();
+            await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).GetItemQueryIterator<AbilitySub>(queryText: sql))
+            {
+                abilitySubs.Add(item);
+            }
+            List<TeacherTrain> teacherTrains = new List<TeacherTrain>();
+            foreach (var item in abilitySubs) {
+                item.otherScore.RemoveAll(x => x.roleType.Equals("school"));
+
+                // TeacherAbility item.creatorId
+                TeacherTrain teacherTrain= await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReadItemAsync<TeacherTrain>(  item.creatorId, new PartitionKey($"TeacherTrain-{item.school}"));
+                teacherTrain.update.Add("TeacherAbility");
+                teacherTrains.Add(teacherTrain);
+                await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReplaceItemAsync(teacherTrain, teacherTrain.id, new PartitionKey(teacherTrain.code));
+                await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReplaceItemAsync(item, item.id, new PartitionKey(item.code));
+            }
+            return Ok(new { teacherTrains, abilitySubs });
+        }
+        /// <summary>
         /// 学校设置学期
         /// </summary>
         /// <param name="jsonElement"></param>