CrazyIter_Bin 1 éve
szülő
commit
b70243a342

+ 55 - 1
TEAMModelOS.SDK/Models/Cosmos/Common/Activity.cs

@@ -709,7 +709,61 @@ namespace TEAMModelOS.SDK.Models
             return JsonSerializer.Deserialize<T>(jsonString);
         }
     }
-    
+    /// <summary>
+    /// 教师的邀请和报名状态数据
+    /// </summary>
+    public class InviteEnrollTeacherDto
+    {
+        public string id { get; set; }
+        public string name { get; set; }
+        public string picture { get; set; }
+        public string school { get; set; }
+        public string schoolName { get; set; }
+        /// <summary>
+        ///-1表示非邀请制的默认状态,  0 未报名,1已报名,用于区级发布, publish=1,joinMode=invite,学校可以去进行邀请某一些教师。
+        /// </summary>
+        public int inviteStatus { get; set; } = -1;
+        /// <summary>
+        /// -1表示没有报名模块的默认状态,-2 表示时间未到,0未报名,1已报名
+        /// </summary>
+        public int signContestStatus { get; set; } = -1;
+        public long signContestTime { get; set; }
+        /// <summary>
+        /// -1表示没有报名模块的默认状态,0个人,1 团队组
+        /// </summary>
+        public int signContestType { get; set; } = -1;
+        /// <summary>
+        /// -1 表示没有上传模块的默认状态 0未上传,1已上传,-2 表示时间未到
+        /// </summary>
+        public int uploadContestStatus { get; set; } = -1;
+        public long uploadContestTime { get; set; }
+        /// <summary>
+        /// null没有上传模块的默认状态,file文件  sokrates 苏格拉底
+        /// </summary>
+        public string uploadContestType { get; set; }
+        /// <summary>
+        /// 作品分数
+        /// </summary>
+        public double uploadContestScore { get; set; } = -1;
+        /// <summary>
+        ///作品id
+        /// </summary>
+        public string uploadContestId { get; set; }
+        /// <summary>
+        /// 团队名称
+        /// </summary>
+        public string teamNameContest { get; set; }
+        /// <summary>
+        /// 团队队长0队员,1队长
+        /// </summary>
+        public int teamLeaderContest { get; set; }
+        /// <summary>
+        /// 组队口令
+        /// </summary>
+        public string teamCipherContest { get; set; }
+        public int reviewAssignCount { get; set; }
+    }
+
     /// <summary>
     /// 专家在优课评选模块的任务分配
     /// </summary>

+ 223 - 0
TEAMModelOS.SDK/Models/Service/Common/ActivityService.cs

@@ -25,6 +25,8 @@ namespace TEAMModelOS.SDK
 {
     public static class ActivityService
     {
+
+        /*
         /// <summary>
         /// 分配作品
         /// </summary>
@@ -325,8 +327,229 @@ namespace TEAMModelOS.SDK
             return (expertContestTasks, activityEnrollsInvalid, expertContestTasksDB);
         }
 
+        */
+
+
+        public static async Task<(List<ExpertContestTaskDto> expertContestTasks, List<ExpertContestTaskDto> activityEnrollsInvalid, List<ExpertContestTaskDto> expertContestTasksDB)>
+           AllocationTask(AzureCosmosFactory _azureCosmos, IEnumerable<ExpertPeriodSubjectDto> experts, Contest contest, HashSet<string> periodSubjectKeys, string distribute, int taskCount)
+        {
 
+            //先获取已经分配完成的 
+            List<ExpertContestTaskDto> worksDB = new List<ExpertContestTaskDto>();
+            IEnumerable<ExpertContestTaskDto> complete = new List<ExpertContestTaskDto>();
+            string taskSQL = $"select value c from c where c.pk='ActivityExpertTask'";
+            var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).GetList<ActivityExpertTask>(taskSQL, $"ActivityExpertTask-{contest.id}");
+            if (result.list.IsNotEmpty())
+            {
+                foreach (var item in result.list)
+                {
+                    worksDB.AddRange(item.contestTasks.Select(z =>
+                    new ExpertContestTaskDto
+                    {
+                        expertId = item.id,
+                        available = 1,
+                        uploadId = z.uploadId,
+                        name = z.name,
+                        uploadTypes = z.uploadTypes,
+                        count = z.count,
+                        cipher=z.cipher,
+                        type=z.type,
+                        leader=z.leader,
+                        members=z.members,
+                        tmdid=z.tmdid,
+                        score=z.score,
+                        status=z.status,
+                        detailScore=z.detailScore
+                    }));
+                }
+                //处理已经分配完成(taskCount)的作品
+                complete = worksDB.GroupBy(task => task.uploadId).Where(group => group.Count() >= taskCount).SelectMany(group => group);
+            }
+            string enrollSQL = "select value  c from c where c.pk='ActivityEnroll'";
+            //已经满足分配的无需再去处理检查。
+            if (complete!=null  && complete.Count()>0)
+            {
+                var uploadIds = complete.Select(z => z.uploadId).ToHashSet();
+                enrollSQL =$"{enrollSQL}  where c.upload.uploadId not in ({string.Join(",", uploadIds.Select(z => $"'{z}'"))})";
+            }
+            //检查报名,学段和科目是否匹配
+
+            var resultActivityEnroll = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).GetList<ActivityEnroll>(enrollSQL, $"ActivityEnroll-{contest.id}");
+            List<ExpertContestTaskDto> expertContestTasks = new List<ExpertContestTaskDto>();
+            foreach (ActivityEnroll enroll in resultActivityEnroll.list)
+            {
+
+                //如果是队长统一上传
+                if (contest.upload.captainUpload == 1 && !string.IsNullOrWhiteSpace(enroll.contest?.cipher))
+                {
+                    var team = resultActivityEnroll.list.FindAll(z => z.contest != null && z.contest.type == 1 && enroll.contest?.type == 1 && z.contest.cipher.Equals(enroll.contest.cipher));
+                    //获取队长信息
+                    var leaders = team.FindAll(z => z.contest.leader == 1);
+                    if (leaders.IsNotEmpty())
+                    {
+                        leaders = new List<ActivityEnroll>() { enroll };
+                    }
+                    List<IdNameCode> members = team.Select(z => new IdNameCode { id = z.id, code = z.schoolId, picture = z.tmdPicture, nickname = z.tmdName, name = z.contest?.enrollInfos?.Find(e => e.code.Equals("name")).val }).ToList();
+                    //队长的报名信息
+                    var leader = leaders?.First();
+                    string name = leader.contest?.teamName;
+                    var period = leader.contest?.enrollInfos?.Find(z => z.code.Equals("period"));
+                    var subject = leader.contest?.enrollInfos?.Find(z => z.code.Equals("subject"));
+                    string uploadId = string.Empty;
+                    if (string.IsNullOrEmpty(name))
+                    {
+                        name = $"{leader.contest?.enrollInfos?.Find(z => z.code.Equals("name"))?.val}({team.Count})";
+                    }
+                    int count = 0;
+                    int available = -1;
+                    var checkResult = ActivityService.CheckPeriodSubject(distribute, period, subject, periodSubjectKeys);
+                    if (checkResult.available == 0)
+                    {
 
+                        if (leader.upload != null && leader.upload.sokrates.IsNotEmpty())
+                        {
+                            count += leader.upload.sokrates.Count;
+                        }
+                        if (leader.upload != null && leader.upload.files.IsNotEmpty())
+                        {
+                            count += leader.upload.files.Count;
+                        }
+                        if (count <= 0)
+                        {
+                            uploadId = enroll.contest.cipher;
+                            available = 5;
+                        }
+                        else
+                        {
+                            uploadId = leader.upload?.uploadId;
+                            available = checkResult.available;
+                        }
+                    }
+                    else
+                    {
+                        uploadId = enroll.contest.cipher;
+                        available = checkResult.available;
+                    }
+                    ExpertContestTaskDto expertContestTask = expertContestTasks.Find(z => !string.IsNullOrWhiteSpace(z.uploadId) && z.uploadId.Equals(leader.upload));
+                    if (expertContestTask == null)
+                    {
+                        expertContestTasks.Add(new ExpertContestTaskDto
+                        {
+                            uploadId = leader.upload?.uploadId,
+                            name = $"{leader.schoolName}-{name}",
+                            uploadTypes = new List<string> { leader?.upload.type },
+                            count = count,
+                            cipher = leader.contest?.cipher,
+                            type = 1,
+                            leader = 1,
+                            tmdid = leader.id,
+                            status = -1,
+                            score = -1,
+                            //detailScore=new List<RuleConfig>()
+                            members = members,
+                            periodSubjectKey = checkResult.periodSubjectKey,
+                            period = period?.val,
+                            subject = subject?.val,
+                            available = available
+                        });
+                    }
+                    else
+                    {
+                        expertContestTask.available = available;
+                        expertContestTask.name = name;
+                        expertContestTask.count = count;
+                        expertContestTask.members = members;
+                        expertContestTask.periodSubjectKey = checkResult.periodSubjectKey;
+                    }
+                }
+                else
+                {
+                    //如果不是队长统一上传
+                    //学段
+                    var period = enroll.contest?.enrollInfos?.Find(z => z.code.Equals("period"));
+                    //科目
+                    var subject = enroll.contest?.enrollInfos?.Find(z => z.code.Equals("subject"));
+                    string periodSubjectKey = string.Empty;
+                    string name = enroll.contest?.enrollInfos?.Find(z => z.code.Equals("name"))?.val;
+                    string uploadId = string.Empty;
+                    if (!string.IsNullOrEmpty(name))
+                    {
+                        name = $"({name})";
+                    }
+                    else
+                    {
+                        name = string.Empty;
+                    }
+                    int count = 0;
+                    int available = -1;
+
+                    var checkResult = ActivityService.CheckPeriodSubject(distribute, period, subject, periodSubjectKeys);
+                    if (checkResult.available == 0)
+                    {
+
+                        if (enroll.upload != null && enroll.upload.sokrates.IsNotEmpty())
+                        {
+                            count += enroll.upload.sokrates.Count;
+                        }
+                        if (enroll.upload != null && enroll.upload.files.IsNotEmpty())
+                        {
+                            count += enroll.upload.files.Count;
+                        }
+                        if (count <= 0)
+                        {
+                            available = 5;
+                            uploadId = enroll.id;
+                        }
+                        else
+                        {
+                            available = checkResult.available;
+                            uploadId = enroll.upload.uploadId;
+                        }
+                    }
+                    else
+                    {
+                        uploadId = enroll.id;
+                        available = checkResult.available;
+                    }
+                    ExpertContestTaskDto expertContestTask = expertContestTasks.Find(z => !string.IsNullOrWhiteSpace(z.uploadId) && z.uploadId.Equals(enroll.upload));
+                    if (expertContestTask == null)
+                    {
+                        expertContestTasks.Add(new ExpertContestTaskDto
+                        {
+                            uploadId = uploadId,
+                            name = $"{enroll.schoolName}-{name}",
+                            uploadTypes = new List<string> { enroll.upload?.type },
+                            count = count,
+                            cipher = enroll.contest?.cipher,
+                            type = 1,
+                            leader = 1,
+                            tmdid = enroll.id,
+                            status = -1,
+                            score = -1,
+                            periodSubjectKey = checkResult.periodSubjectKey,
+                            period = period?.val,
+                            subject = subject?.val,
+                            available = available
+                        });
+                    }
+                    else
+                    {
+                        expertContestTask.available = available;
+                        expertContestTask.name = name;
+                        expertContestTask.count = count;
+                        expertContestTask.periodSubjectKey = checkResult.periodSubjectKey;
+                    }
+                }
+            }
+            List<ExpertContestTaskDto> invalids = expertContestTasks.FindAll(z => z.available!=0);
+            List<ExpertContestTaskDto> works = expertContestTasks.FindAll(z => z.available==0);
+
+            var data = AssignWorksToExperts(works, worksDB, experts, taskCount);
+            if (invalids.IsNotEmpty()) {
+                invalids.AddRange(data.assignmentsInvalid);
+            }
+            return (data.assignmentsAdd, invalids, worksDB);
+        }
         public static (int available, string periodSubjectKey) CheckPeriodSubject(string distribute , EnrollInfo period, EnrollInfo subject, HashSet<string> periodSubjectKeys) {
             int available = -1;
             string periodSubjectKey= string.Empty;

+ 51 - 226
TEAMModelOS/Controllers/Common/ActivityController.cs

@@ -903,7 +903,51 @@ namespace TEAMModelOS.Controllers
                             List<TeacherActivityDto> activities = await ActivityService. TeacherActivityList( _azureCosmos,_azureStorage, request, tmdid);
                             return Ok(new { activities = activities.OrderByDescending(z => z.stime) });
                         }
-                    //读取优课评选模块及评审规则
+
+                    case bool when $"{grant_type}".Equals("read-activity", StringComparison.OrdinalIgnoreCase):
+                        {
+                            if (!request.TryGetProperty("activityId", out JsonElement _activityId)) return BadRequest();
+                            Azure.Response response = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemStreamAsync(_activityId.GetString(), new PartitionKey("Activity"));
+                            if (response.Status==200)
+                            {
+                                ActivityDto activity = JsonDocument.Parse(response.Content).RootElement.ToObject<ActivityDto>();
+                                Contest contest = null;
+                                ReviewRuleTree reviewRule = null;
+                                Azure.Response responseContest = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemStreamAsync(_activityId.GetString(), new PartitionKey("Contest"));
+                                if (responseContest.Status==200)
+                                {
+                                    contest= JsonDocument.Parse(responseContest.Content).RootElement.ToObject<Contest>();
+                                    if (contest.modules.Contains("review"))
+                                    {
+                                        Azure.Response reviewRuleResponse = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Normal).ReadItemStreamAsync(_activityId.GetString(), new PartitionKey("ReviewRule-disposable"));
+                                        if (reviewRuleResponse.Status==200)
+                                        {
+                                            ReviewRule reviewRuleDB = JsonDocument.Parse(reviewRuleResponse.Content).RootElement.ToObject<ReviewRule>();
+                                            var tree = ActivityService.ListToTree(reviewRuleDB.configs);
+                                            reviewRule=new ReviewRuleTree
+                                            {
+                                                id=reviewRuleDB.id,
+                                                name= reviewRuleDB.name,
+                                                owner= reviewRuleDB.owner,
+                                                sourceName= reviewRuleDB.sourceName,
+                                                trees=tree,
+                                                desc=reviewRuleDB.desc
+                                            };
+                                        }
+                                    }
+                                }
+                                Training training = null;
+                                TEAMModelOS.SDK.Models.Research research = null;
+                                var (blob_uri, blob_sas) = _azureStorage.GetBlobContainerSAS(activity.owner, BlobContainerSasPermissions.Read | BlobContainerSasPermissions.List);
+                                activity.sas=blob_sas;
+                                return Ok(new { code = 200, activity, contest, reviewRule, training, research });
+                            }
+                            else
+                            {
+                                return Ok(new { code = 2, msg = "活动不存在" });
+                            }
+                        }
+                        //读取优课评选模块及评审规则
                     case bool when $"{grant_type}".Equals("read-Contest", StringComparison.OrdinalIgnoreCase):
                         {
                             Contest contest = null;
@@ -1743,7 +1787,8 @@ namespace TEAMModelOS.Controllers
                                         {
                                             ActivityExpert activityExpert = JsonDocument.Parse(responseActivityExpert.Content).RootElement.ToObject<ActivityExpert>();
 
-                                            IEnumerable<ExpertPeriodSubjectDto> experts = activityExpert.experts.Select(z => new ExpertPeriodSubjectDto { expertId = z.id, periodSubjects = z.subjects.Select(v => $"{v.period}-{v.subject}") });
+                                            IEnumerable<ExpertPeriodSubjectDto> experts = activityExpert.experts.Where(z=>!string.IsNullOrWhiteSpace(z.id))//处理
+                                                .Select(z => new ExpertPeriodSubjectDto { expertId = z.id, periodSubjects = z.subjects.Select(v => $"{v.period}-{v.subject}") });
                                             HashSet<string> periodSubjectKey = new HashSet<string>();
                                             List<dynamic> distributeInvalid = new List<dynamic>();
                                             string allocationTaskKey = $"Contest:Allocation:{_activityId}";
@@ -1977,6 +2022,8 @@ namespace TEAMModelOS.Controllers
                     case bool when $"{grant_type}".Equals("allocation-task-manual-save", StringComparison.OrdinalIgnoreCase):
                         {
                             if (!request.TryGetProperty("activityId", out JsonElement _activityId)) return BadRequest();
+                            if (!request.TryGetProperty("uploadId", out JsonElement _uploadId)) return BadRequest();
+                            if (!request.TryGetProperty("expertId", out JsonElement _expertId)) return BadRequest();
 
                             break;
                         }
@@ -1988,59 +2035,7 @@ namespace TEAMModelOS.Controllers
             }
             return Ok();
         }
-        /// <summary>
-        /// 教师的邀请和报名状态数据
-        /// </summary>
-        public class InviteEnrollTeacherDto { 
-            public string id { get; set; }
-            public string name { get; set; }
-            public string picture { get; set; }
-            public string school { get; set; }
-            public string schoolName { get; set; }
-            /// <summary>
-            ///-1表示非邀请制的默认状态,  0 未报名,1已报名,用于区级发布, publish=1,joinMode=invite,学校可以去进行邀请某一些教师。
-            /// </summary>
-            public int inviteStatus { get; set; } = -1;
-            /// <summary>
-            /// -1表示没有报名模块的默认状态,-2 表示时间未到,0未报名,1已报名
-            /// </summary>
-            public int signContestStatus { get; set; } = -1;
-            public long signContestTime { get; set; }
-            /// <summary>
-            /// -1表示没有报名模块的默认状态,0个人,1 团队组
-            /// </summary>
-            public int signContestType { get; set; } = -1;
-            /// <summary>
-            /// -1 表示没有上传模块的默认状态 0未上传,1已上传,-2 表示时间未到
-            /// </summary>
-            public int uploadContestStatus { get; set; } = -1;
-            public long uploadContestTime { get; set; }
-            /// <summary>
-            /// null没有上传模块的默认状态,file文件  sokrates 苏格拉底
-            /// </summary>
-            public string uploadContestType { get; set; }
-            /// <summary>
-            /// 作品分数
-            /// </summary>
-            public double uploadContestScore { get; set; } = -1;
-            /// <summary>
-            ///作品id
-            /// </summary>
-            public string uploadContestId { get; set; }
-            /// <summary>
-            /// 团队名称
-            /// </summary>
-            public string teamNameContest { get; set; }
-            /// <summary>
-            /// 团队队长0队员,1队长
-            /// </summary>
-            public int teamLeaderContest { get; set; }
-            /// <summary>
-            /// 组队口令
-            /// </summary>
-            public string teamCipherContest { get; set; }
-        }
-
+       
         /// <summary>
         /// portal站的
         /// </summary>
@@ -3199,177 +3194,7 @@ namespace TEAMModelOS.Controllers
             }
             return Ok();
         }
-        public static async Task<(List<ExpertContestTaskDto> expertContestTasks, List<ExpertContestTaskDto> activityEnrollsInvalid, List<ExpertContestTaskDto> expertContestTasksDB)> AllocationTask(AzureCosmosFactory _azureCosmos, IEnumerable<ExpertPeriodSubjectDto> experts, Contest contest, HashSet<string> periodSubjectKeys, string distribute, int taskCount)
-        {
-            //检查报名,学段和科目是否匹配
-            string enrollSQL = "select value  c from c where c.pk='ActivityEnroll'";
-            var resultActivityEnroll = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).GetList<ActivityEnroll>(enrollSQL, $"ActivityEnroll-{contest.id}");
-            List<ExpertContestTaskDto> expertContestTasks = new List<ExpertContestTaskDto>();
-            foreach (ActivityEnroll enroll in resultActivityEnroll.list) {
-               
-                //如果是队长统一上传
-                if (contest.upload.captainUpload == 1 && !string.IsNullOrWhiteSpace(enroll.contest?.cipher))
-                {
-                    var team = resultActivityEnroll.list.FindAll(z => z.contest != null && z.contest.type == 1 && enroll.contest?.type == 1 && z.contest.cipher.Equals(enroll.contest.cipher));
-                    //获取队长信息
-                    var leaders = team.FindAll(z => z.contest.leader == 1);
-                    if (leaders .IsNotEmpty())
-                    {
-                        leaders = new List<ActivityEnroll>() { enroll}; 
-                    }
-                    List<IdNameCode> members = team.Select(z => new IdNameCode { id = z.id, code = z.schoolId, picture = z.tmdPicture, nickname = z.tmdName, name = z.contest?.enrollInfos?.Find(e => e.code.Equals("name")).val }).ToList();
-                    //队长的报名信息
-                    var leader = leaders?.First();
-                    string name = leader.contest?.teamName;
-                    var period = leader.contest?.enrollInfos?.Find(z => z.code.Equals("period"));
-                    var subject = leader.contest?.enrollInfos?.Find(z => z.code.Equals("subject"));
-                    string uploadId = string.Empty;
-                    if (string.IsNullOrEmpty(name))
-                    {
-                        name = $"{leader.contest?.enrollInfos?.Find(z => z.code.Equals("name"))?.val}({team.Count})";
-                    }
-                    int count = 0;
-                    int available = -1;
-                    var checkResult = ActivityService.CheckPeriodSubject(distribute, period, subject, periodSubjectKeys);
-                    if (checkResult.available == 0)
-                    {
-
-                        if (leader.upload != null && leader.upload.sokrates.IsNotEmpty())
-                        {
-                            count += leader.upload.sokrates.Count;
-                        }
-                        if (leader.upload != null && leader.upload.files.IsNotEmpty())
-                        {
-                            count += leader.upload.files.Count;
-                        }
-                        if (count <= 0)
-                        {
-                            uploadId = enroll.contest.cipher;
-                            available = 5;
-                        }
-                        else
-                        {
-                            uploadId = leader.upload?.uploadId;
-                            available = checkResult.available;
-                        }
-                    }
-                    else
-                    {
-                        uploadId = enroll.contest.cipher;
-                        available = checkResult.available;
-                    }
-                    ExpertContestTaskDto expertContestTask = expertContestTasks.Find(z => !string.IsNullOrWhiteSpace(z.uploadId) && z.uploadId.Equals(leader.upload));
-                    if (expertContestTask == null)
-                    {
-                        expertContestTasks.Add(new ExpertContestTaskDto
-                        {
-                            uploadId = leader.upload?.uploadId,
-                            name = $"{leader.schoolName}-{name}",
-                            uploadTypes = new List<string> { leader?.upload.type },
-                            count = count,
-                            cipher = leader.contest?.cipher,
-                            type = 1,
-                            leader = 1,
-                            tmdid = leader.id,
-                            status = -1,
-                            score = -1,
-                            //detailScore=new List<RuleConfig>()
-                            members = members,
-                            periodSubjectKey = checkResult.periodSubjectKey,
-                            period = period?.val,
-                            subject = subject?.val,
-                            available = available
-                        });
-                    }
-                    else
-                    {
-                        expertContestTask.available = available;
-                        expertContestTask.name = name;
-                        expertContestTask.count = count;
-                        expertContestTask.members = members;
-                        expertContestTask.periodSubjectKey = checkResult.periodSubjectKey;
-                    }
-                }
-                else {
-                    //如果不是队长统一上传
-                    //学段
-                    var period = enroll.contest?.enrollInfos?.Find(z => z.code.Equals("period"));
-                    //科目
-                    var subject = enroll.contest?.enrollInfos?.Find(z => z.code.Equals("subject"));
-                    string periodSubjectKey = string.Empty;
-                    string name = enroll.contest?.enrollInfos?.Find(z => z.code.Equals("name"))?.val;
-                    string uploadId = string.Empty;
-                    if (!string.IsNullOrEmpty(name))
-                    {
-                        name = $"({name})";
-                    }
-                    else
-                    {
-                        name = string.Empty;
-                    }
-                    int count = 0;
-                    int available = -1;
-
-                    var checkResult = ActivityService.CheckPeriodSubject(distribute, period, subject, periodSubjectKeys);
-                    if (checkResult.available == 0)
-                    {
-
-                        if (enroll.upload != null && enroll.upload.sokrates.IsNotEmpty())
-                        {
-                            count += enroll.upload.sokrates.Count;
-                        }
-                        if (enroll.upload != null && enroll.upload.files.IsNotEmpty())
-                        {
-                            count += enroll.upload.files.Count;
-                        }
-                        if (count <= 0)
-                        {
-                            available = 5;
-                            uploadId = enroll.id;
-                        }
-                        else
-                        {
-                            available = checkResult.available;
-                            uploadId = enroll.upload.uploadId;
-                        }
-                    }
-                    else
-                    {
-                        uploadId = enroll.id;
-                        available = checkResult.available;
-                    }
-                    ExpertContestTaskDto expertContestTask = expertContestTasks.Find(z => !string.IsNullOrWhiteSpace(z.uploadId) && z.uploadId.Equals(enroll.upload));
-                    if (expertContestTask == null)
-                    {
-                        expertContestTasks.Add(new ExpertContestTaskDto
-                        {
-                            uploadId = uploadId,
-                            name = $"{enroll.schoolName}-{name}",
-                            uploadTypes = new List<string> { enroll.upload?.type },
-                            count = count,
-                            cipher = enroll.contest?.cipher,
-                            type = 1,
-                            leader = 1,
-                            tmdid = enroll.id,
-                            status = -1,
-                            score = -1,
-                            periodSubjectKey = checkResult.periodSubjectKey,
-                            period = period?.val,
-                            subject = subject?.val,
-                            available = available
-                        });
-                    }
-                    else
-                    {
-                        expertContestTask.available = available;
-                        expertContestTask.name = name;
-                        expertContestTask.count = count;
-                        expertContestTask.periodSubjectKey = checkResult.periodSubjectKey;
-                    }
-                }
-            }
-            return (null, null, null);
-        }
+