CrazyIter_Bin 1 year ago
parent
commit
58ba33bd38

+ 3 - 0
TEAMModelOS.SDK/Models/Cosmos/Common/Activity.cs

@@ -151,6 +151,9 @@ namespace TEAMModelOS.SDK.Models
         /// </summary>
         public int status { get; set; }
     }
+    /// <summary>
+    /// 存放位置 Teacher表
+    /// </summary>
     public class ActivityTeacher : CosmosEntity
     {
         /// <summary>

+ 85 - 4
TEAMModelOS/Controllers/Common/ActivityController.cs

@@ -373,6 +373,7 @@ namespace TEAMModelOS.Controllers
                 var client = _azureCosmos.GetCosmosClient();
                 switch (true)
                 {
+                    //创建活动
                     case bool when $"{grant_type}".Equals("create", StringComparison.OrdinalIgnoreCase):
                         {
                             if (!request.TryGetProperty("Activity", out JsonElement _activity)) return Ok(new { code = 1, msg = "活动信息参数错误" });
@@ -499,7 +500,7 @@ namespace TEAMModelOS.Controllers
                                 return Ok(validResult);
                             }
                         }
-
+                    //删除活动
                     case bool when $"{grant_type}".Equals("delete", StringComparison.OrdinalIgnoreCase):
                         {
                             if (!request.TryGetProperty("activityId", out JsonElement _activityId)) return BadRequest();
@@ -528,6 +529,7 @@ namespace TEAMModelOS.Controllers
                                 return Ok(new { code = 1, msg = "活动不存在" });
                             }
                         }
+                    //区级活动列表
                     case bool when $"{grant_type}".Equals("list-area", StringComparison.OrdinalIgnoreCase):
                         {
                             if (!request.TryGetProperty("areaId", out JsonElement _areaId)) return BadRequest();
@@ -540,6 +542,7 @@ namespace TEAMModelOS.Controllers
                             var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<Activity>(sql, "Activity");
                             return Ok(new { activities = result.list.OrderByDescending(z => z.stime) });
                         }
+                    //校级活动列表
                     case bool when $"{grant_type}".Equals("list-school", StringComparison.OrdinalIgnoreCase):
                         {
                             if (!string.IsNullOrWhiteSpace(school)) {
@@ -627,6 +630,7 @@ namespace TEAMModelOS.Controllers
                             break;
 
                         }
+                    //教师活动列表
                     case bool when $"{grant_type}".Equals("list-teacher", StringComparison.OrdinalIgnoreCase):
                         {
                             List<Activity> activities = new List<Activity>();
@@ -721,7 +725,7 @@ namespace TEAMModelOS.Controllers
                             }
                             return Ok(new { code = 200, contest, reviewRule });
                         }
-                        //获取评审的模板列表
+                    //获取评审的模板列表
                     case bool when $"{grant_type}".Equals("rule-list", StringComparison.OrdinalIgnoreCase): 
                         {
                             if (!request.TryGetProperty("owner", out JsonElement _owner)) return BadRequest();
@@ -843,12 +847,89 @@ namespace TEAMModelOS.Controllers
                                 return Ok(new { code = 1, msg = "活动不存在" });
                             }
                         }
-             
-                
+                    //邀请教师参加本次活动或移除教师参加活动
+                    case bool when $"{grant_type}".Equals("invite-remove-teachers", StringComparison.OrdinalIgnoreCase):
+                        {
+                            if (!request.TryGetProperty("activityId", out JsonElement _activityId)) return BadRequest();
+                            request.TryGetProperty("invite", out JsonElement _invite);
+                            request.TryGetProperty("remove", out JsonElement _remove) ;
+                            Azure.Response response = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemStreamAsync(_activityId.GetString(), new PartitionKey("Activity"));
+                            if (response.Status==200)
+                            {
+                                Activity activity = JsonDocument.Parse(response.Content).RootElement.ToObject<Activity>();
+                                if (activity.joinMode.Equals("invite"))
+                                {
+                                    var confirmedSchool = activity.confirmedSchools.Find(z => z.id.Equals(school)  && z.status==1);
+                                    if (confirmedSchool!= null)
+                                    {
+                                        List<InviteTeachers> inviteTeachersInvalid = new List<InviteTeachers>();
+                                        List<InviteTeachers> removeTeachersInvalid = new List<InviteTeachers>();
+                                        ActivityTeacher activityTeacher = null;
+                                        Azure.Response activityTeacherResponse =  await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReadItemStreamAsync(activity.id, new PartitionKey("ActivityTeacher"));
+                                        if (activityTeacherResponse.Status==200)
+                                        {
+                                            activityTeacher = JsonDocument.Parse(activityTeacherResponse.Content).RootElement.ToObject<ActivityTeacher>();
+                                        }
+                                        if (activityTeacher==null) {
+                                            activityTeacher= new ActivityTeacher() { id= activity.id, code="ActivityTeacher",pk="ActivityTeacher" };
+                                        }
+                                        if (_invite.ValueKind.Equals(JsonValueKind.Array)) { 
+                                            List<InviteTeachers> inviteTeachers = _invite.ToObject<List<InviteTeachers>>();
+                                            foreach (var invite in inviteTeachers) {
+                                                if (string.IsNullOrWhiteSpace(invite.school)  ||  !invite.school.Equals(school)) {
+                                                    inviteTeachersInvalid.Add(invite);
+                                                    continue;
+                                                }
+                                                var inviteTeacher=  activityTeacher.inviteTeachers.Find(z => z.id.Equals(invite.id));
+                                                if (inviteTeacher==null)
+                                                {
+                                                    activityTeacher.inviteTeachers.Add(invite);
+                                                }
+                                                else {
+                                                    inviteTeacher=invite;
+                                                }
+                                            }
+                                        }
+                                        if (_remove.ValueKind.Equals(JsonValueKind.Array)) {
+                                            List<InviteTeachers> removeTeachers = _invite.ToObject<List<InviteTeachers>>();
+                                            foreach (var remove in removeTeachers)
+                                            {
+                                                if (string.IsNullOrWhiteSpace(remove.school)  || !remove.school.Equals(school))
+                                                {
+                                                    removeTeachersInvalid.Add(remove);
+                                                    continue;
+                                                }
+                                                activityTeacher.inviteTeachers.RemoveAll(z => remove.id.Equals(z.id));
+                                            }
+                                        }
+                                        var teachers = activityTeacher.inviteTeachers.FindAll(z => z.school.Equals(school));
+                                        return Ok(new { inviteTeachers=teachers, inviteTeachersInvalid, removeTeachersInvalid });
+                                    }
+                                    else
+                                    {
+                                        return Ok(new { code = 2, msg = "学校未确认,暂不能邀请教师" });
+                                    }
+                                }
+                                else {
+                                    return Ok(new { code = 3, msg = "活动不是邀请制。" });
+                                }
+                                
+                            }
+                            else
+                            {
+                                return Ok(new { code = 1, msg = "活动不存在" });
+                            }
+                        }
+                    //学校获取邀请的教师列表
+                    case bool when $"{grant_type}".Equals("invited-teachers", StringComparison.OrdinalIgnoreCase): {
+                            return Ok();
+                        }
+
                 }
             } catch (Exception ex)
             {
                 await _dingDing.SendBotMsg($"{ex.Message}\n{ex.StackTrace}",GroupNames.成都开发測試群組);
+                return Ok(new {code=500, msg =ex.Message });
             }
             return Ok();
         }