Exemple #1
0
        /// <summary>
        /// 根据ID得到一个需要注册的竞赛实体
        /// </summary>
        /// <param name="id">竞赛ID</param>
        /// <returns>竞赛实体</returns>
        public static ContestEntity GetRegisterContest(Int32 id)
        {
            ContestEntity contest = ContestManager.GetContest(id);

            if (contest.ContestType != ContestType.RegisterPrivate && contest.ContestType != ContestType.RegisterPublic)
            {
                if (contest.ContestType == ContestType.Public)
                {
                    throw new NoPermissionException("You don't need to register for this contest!");
                }
                else
                {
                    throw new NoPermissionException("You can not register for this contest!");
                }
            }

            if (contest.RegisterStartTime > DateTime.Now)
            {
                throw new NoPermissionException("This contest registration has not been started yet!");
            }

            if (contest.RegisterEndTime < DateTime.Now)
            {
                throw new NoPermissionException("This contest has registration ended!");
            }

            return(contest);
        }
Exemple #2
0
        /// <summary>
        /// 获取竞赛排行Excel文件
        /// </summary>
        /// <param name="cid">竞赛ID</param>
        /// <param name="userrealnames">用户姓名对照表</param>
        /// <returns>竞赛排行</returns>
        public static IMethodResult AdminGetExportRanklist(Int32 cid, String userrealnames)
        {
            if (!AdminManager.HasPermission(PermissionType.ContestManage))
            {
                throw new NoPermissionException();
            }

            ContestEntity contest = ContestManager.GetContest(cid);
            Dictionary <String, String>   userdict    = null;
            Dictionary <String, RankItem> rank        = SolutionRepository.Instance.GetContestRanklist(contest.ContestID, contest.StartTime);
            List <ContestProblemEntity>   problemlist = ContestProblemManager.GetContestProblemList(contest.ContestID);
            List <RankItem> list = new List <RankItem>();

            foreach (RankItem userRank in rank.Values)
            {
                list.Add(userRank);
            }

            list.Sort();

            if (!String.IsNullOrEmpty(userrealnames))
            {
                userdict = new Dictionary <String, String>();
                String[] nametable = userrealnames.Lines();

                for (Int32 i = 0; i < nametable.Length; i++)
                {
                    if (String.IsNullOrEmpty(nametable[i]))
                    {
                        continue;
                    }

                    String[] namepair = nametable[i].Replace('\t', ' ').Split(' ');

                    if (namepair.Length == 2 && !String.IsNullOrEmpty(namepair[0]) && !String.IsNullOrEmpty(namepair[1]))
                    {
                        userdict.Add(namepair[0], namepair[1]);
                    }
                }
            }

            Byte[] data = ContestResultExport.ExportResultToExcel(contest, problemlist, list, userdict);

            return(MethodResult.SuccessAndLog <Byte[]>(data, "Admin export contest result, id = {0}", cid.ToString()));
        }
Exemple #3
0
 /// <summary>
 /// 判断给定ID的竞赛是否存在
 /// </summary>
 /// <param name="id">竞赛ID</param>
 /// <returns>竞赛是否存在</returns>
 internal static Boolean InternalExistsContest(Int32 id)
 {
     return(ContestManager.GetContest(id) != null);
 }