/// <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); }
/// <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())); }
/// <summary> /// 判断给定ID的竞赛是否存在 /// </summary> /// <param name="id">竞赛ID</param> /// <returns>竞赛是否存在</returns> internal static Boolean InternalExistsContest(Int32 id) { return(ContestManager.GetContest(id) != null); }