示例#1
0
        /// <summary>
        /// 期次作品互评分配
        /// </summary>
        /// <param name="periodId"></param>
        /// <param name="resulDt"></param>
        public static void WorksAlloting(long periodId)
        {
            //long workscount = long.Parse(DAL.Works.GetWorksNumByPeriodID(periodId).Tables[0].Rows[0][0].ToString());//获取当前期次上传的作品数量,不包含样例作品

            long         allotNum     = BLL.Period.SetallotNum(DAL.Works.GetWorksNumByPeriodID(periodId));
            List <long?> dtWaitedUser = DAL.User.GetUserIdByPeriodId(periodId); //初始化数据表以保存待分配的用户ID

            if (dtWaitedUser.Count > 0)                                         //确定本期次可以参与互评的人数
            {
                for (int i = 0; i < dtWaitedUser.Count; i++)
                {
                    long expertId = (long)dtWaitedUser[i];
                    List <CSVWorksForMe> vWorksForMe = DAL.Works.GetWorksForMeByPeriodId(periodId, expertId);
                    long hasAlloted = vWorksForMe.Count;
                    if (hasAlloted < allotNum)                                                                           //获取该用户已经分配的作品数,若未满则继续分配,否则则跳过
                    {
                        List <ContestDll.Works> dtWaitedWorks = DAL.Works.GetWorksToAllot(expertId, periodId, allotNum); //
                        if (dtWaitedWorks.Count > 0)
                        {
                            string[] arrayWaitedWorks = DAL.Common.TableTostrArray(dtWaitedWorks); //待分配作品表转化为数组

                            long     shortOf      = allotNum - hasAlloted;                         //获取该用户还差需要分配的作品数
                            string[] arrayToAllot = DAL.Common.GetRandomsArray(shortOf, arrayWaitedWorks);

                            for (int j = 0; j < arrayToAllot.Length; j++)//插入评分分配新纪录
                            {
                                long worksId         = long.Parse(arrayToAllot[j].ToString());
                                CSWorksExpertUser dr = new CSWorksExpertUser();
                                dr.WorksID  = worksId;  //作品ID
                                dr.ExpertID = expertId; //评分用户ID
                                dr.Flag     = 1;
                                long aaa = DAL.Works.InsertWorksComments(dr);
                                //为作品分配计数+1,最后一次重置作品状态为2:已分配,评分中
                                ContestDll.Works dtAllotTimes = DAL.Works.GetWorksAllotTimesByWorsID(worksId);
                                int allottimes = (int)dtAllotTimes.AllotTimes;
                                ContestDll.Works drAllotTimes = dtAllotTimes;
                                drAllotTimes.WorksID    = worksId;
                                drAllotTimes.AllotTimes = allottimes + 1;
                                if (allottimes == allotNum - 1)
                                {
                                    drAllotTimes.WorksState = 2; //最后一次分配,将作品状态置为2:作品评分中
                                }
                                else
                                {
                                    drAllotTimes.WorksState = (int)drAllotTimes.WorksState;   //分配未完成,保持状态不变
                                }
                                DAL.Works.UpdateWorksAllotTimes(drAllotTimes);
                            }
                        }
                    }
                }
            }
        }
示例#2
0
 /// <summary>
 /// 加入新记录
 /// </summary>
 /// <param name="dr"></param>
 /// <returns></returns>
 public static long InsertWorksComments(CSWorksExpertUser dr)
 {
     using (ContestEntities db = new ContestEntities())
     {
         WorksComments dr1 = new WorksComments();
         dr1.WorksID = dr.WorksID;
         dr1.UserID  = dr.ExpertID;
         dr1.Flag    = 1;
         db.WorksComments.Add(dr1);
         db.SaveChanges();
         return(dr1.CommentsID);
     }
 }