Exemplo n.º 1
0
        /// <summary>
        /// 获取主题列表
        /// </summary>
        /// <param name="pageIndex">页面索引</param>
        /// <param name="ftids">主题ID列表</param>
        /// <param name="username">发帖人</param>
        /// <param name="title">主题标题</param>
        /// <param name="type">主题类型</param>
        /// <param name="relativeID">相关ID</param>
        /// <param name="isLocked">是否锁定</param>
        /// <param name="isHide">是否隐藏</param>
        /// <param name="startDate">发帖开始时间</param>
        /// <param name="endDate">发帖结束时间</param>
        /// <returns>主题列表</returns>
        public static PagedList<ForumTopicEntity> AdminGetForumTopicList(Int32 pageIndex, String ftids, String username, String title, String type, String relativeID, String isLocked, String isHide, String startDate, String endDate)
        {
            if (!AdminManager.HasPermission(PermissionType.ForumManage))
            {
                throw new NoPermissionException();
            }

            Int32 pageSize = AdminManager.ADMIN_LIST_PAGE_SIZE;
            Int32 recordCount = ForumTopicManager.AdminCountForumTopics(ftids, username, title, type, relativeID, isLocked, isHide, startDate, endDate);

            Byte topictype = 0;
            Int32 rid = -1;
            DateTime dtStart = DateTime.MinValue, dtEnd = DateTime.MinValue;

            ftids = ftids.SearchOptimized();

            if (!String.IsNullOrEmpty(ftids) && !RegexVerify.IsNumericIDs(ftids))
            {
                throw new InvalidRequstException(RequestType.ForumTopic);
            }

            if (!String.IsNullOrEmpty(relativeID) && !Int32.TryParse(relativeID, out rid))
            {
                throw new InvalidInputException("Relative ID is INVALID!");
            }

            return ForumTopicRepository.Instance
                .GetEntities(pageIndex, pageSize, recordCount, ftids, username, title,
                    (!String.IsNullOrEmpty(type) && Byte.TryParse(type, out topictype) ? (ForumTopicType)topictype : new Nullable<ForumTopicType>()), rid,
                    (!String.IsNullOrEmpty(isLocked) ? "1".Equals(isLocked, StringComparison.OrdinalIgnoreCase) : new Nullable<Boolean>()),
                    (!String.IsNullOrEmpty(isHide) ? "1".Equals(isHide, StringComparison.OrdinalIgnoreCase) : new Nullable<Boolean>()),
                    (!String.IsNullOrEmpty(startDate) && DateTime.TryParse(startDate, out dtStart) ? dtStart : new Nullable<DateTime>()),
                    (!String.IsNullOrEmpty(endDate) && DateTime.TryParse(endDate, out dtEnd) ? dtEnd : new Nullable<DateTime>()))
                    .ToPagedList(pageSize, recordCount);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 获取帖子列表
        /// </summary>
        /// <param name="pageIndex">页面索引</param>
        /// <param name="fpids">帖子ID列表</param>
        /// <param name="ftids">主题ID列表</param>
        /// <param name="username">发帖用户名</param>
        /// <param name="title">帖子标题</param>
        /// <param name="content">帖子内容</param>
        /// <param name="isHide">是否隐藏</param>
        /// <param name="startDate">发帖开始时间</param>
        /// <param name="endDate">发帖结束时间</param>
        /// <param name="postip">发帖IP</param>
        /// <returns>帖子列表</returns>
        public static PagedList<ForumPostEntity> AdminGetForumPostList(Int32 pageIndex, String fpids, String ftids, String username, String title, String content, String isHide, String startDate, String endDate, String postip)
        {
            if (!AdminManager.HasPermission(PermissionType.ForumManage))
            {
                throw new NoPermissionException();
            }

            Int32 pageSize = AdminManager.ADMIN_LIST_PAGE_SIZE;
            Int32 recordCount = ForumPostManager.AdminCountForumPosts(fpids, ftids, username, title, content, isHide, startDate, endDate, postip);

            DateTime dtStart = DateTime.MinValue, dtEnd = DateTime.MinValue;

            fpids = fpids.SearchOptimized();
            ftids = ftids.SearchOptimized();

            if (!String.IsNullOrEmpty(fpids) && !RegexVerify.IsNumericIDs(fpids))
            {
                throw new InvalidRequstException(RequestType.ForumPost);
            }

            if (!String.IsNullOrEmpty(ftids) && !RegexVerify.IsNumericIDs(ftids))
            {
                throw new InvalidRequstException(RequestType.ForumTopic);
            }

            return ForumPostRepository.Instance
                .GetEntities(pageIndex, pageSize, recordCount,
                    fpids, ftids, username, title, content,
                    (!String.IsNullOrEmpty(isHide) ? "1".Equals(isHide, StringComparison.OrdinalIgnoreCase) : new Nullable<Boolean>()),
                    (!String.IsNullOrEmpty(startDate) && DateTime.TryParse(startDate, out dtStart) ? dtStart : new Nullable<DateTime>()),
                    (!String.IsNullOrEmpty(endDate) && DateTime.TryParse(endDate, out dtEnd) ? dtEnd : new Nullable<DateTime>()), postip)
                    .ToPagedList(pageSize, recordCount);
        }
Exemplo n.º 3
0
        private static Boolean AdminGetSolutionParams(String sids, String cid, String pid, String name, String lang, String type, String startDate, String endDate,
            out String solutionIDs, out Int32 problemID, out Int32 contestID, out String userName, out LanguageType languageType, out ResultType? resultType, out DateTime? dtStart, out DateTime? dtEnd)
        {
            Boolean noCondition = true;
            String dateFormat = "yyyy-MM-dd HH:mm:ss";

            solutionIDs = String.Empty;
            contestID = -1;
            problemID = -1;
            userName = String.Empty;
            languageType = LanguageType.Null;
            resultType = new Nullable<ResultType>();
            dtStart = null;
            dtEnd = null;

            if (!String.IsNullOrEmpty(sids))
            {
                solutionIDs = sids.SearchOptimized();

                if (!RegexVerify.IsNumericIDs(solutionIDs))
                {
                    throw new InvalidRequstException(RequestType.Solution);
                }

                noCondition = false;
            }

            if (!String.IsNullOrEmpty(cid))
            {
                if (!Int32.TryParse(cid, out contestID))
                {
                    throw new InvalidRequstException(RequestType.Contest);
                }

                if (contestID < ContestRepository.NONECONTEST)
                {
                    throw new InvalidRequstException(RequestType.Contest);
                }

                noCondition = false;
            }

            if (!String.IsNullOrEmpty(pid))
            {
                if (!Int32.TryParse(pid, out problemID))
                {
                    throw new InvalidRequstException(RequestType.Problem);
                }

                if (problemID < ConfigurationManager.ProblemSetStartID)
                {
                    throw new InvalidRequstException(RequestType.Problem);
                }

                noCondition = false;
            }

            if (!String.IsNullOrEmpty(name))
            {
                if (!RegexVerify.IsUserName(name))
                {
                    throw new InvalidRequstException(RequestType.User);
                }

                userName = name;
                noCondition = false;
            }

            if (!String.IsNullOrEmpty(lang))
            {
                Byte langType = Byte.MaxValue;

                if (!Byte.TryParse(lang, out langType))
                {
                    throw new InvalidInputException("Language Type is INVALID!");
                }

                languageType = LanguageType.FromLanguageID(langType);
                noCondition = false;
            }

            if (!String.IsNullOrEmpty(type))
            {
                Byte resType = Byte.MaxValue;

                if (!Byte.TryParse(type, out resType))
                {
                    throw new InvalidInputException("Result Type is INVALID!");
                }

                resultType = (ResultType)resType;
                noCondition = false;
            }

            if (!String.IsNullOrEmpty(startDate))
            {
                DateTime temp;
                if (!DateTime.TryParseExact(startDate, dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out temp))
                {
                    throw new InvalidInputException("Datetime is INVALID!");
                }

                dtStart = temp;
                noCondition = false;
            }

            if (!String.IsNullOrEmpty(endDate))
            {
                DateTime temp;
                if (!DateTime.TryParseExact(endDate, dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out temp))
                {
                    throw new InvalidInputException("Datetime is INVALID!");
                }

                dtEnd = temp;

                if (dtStart.HasValue && dtStart.Value >= dtEnd.Value)
                {
                    throw new InvalidInputException("Start date CANNOT be later than end date!");
                }

                noCondition = false;
            }

            return noCondition;
        }
Exemplo n.º 4
0
        /// <summary>
        /// 获取用户总数(无缓存)
        /// </summary>
        /// <param name="names">用户名包含</param>
        /// <param name="nickname">昵称包含</param>
        /// <param name="email">邮箱包含</param>
        /// <param name="school">学校包含</param>
        /// <param name="lastIP">最后登录IP包含</param>
        /// <param name="islocked">是否锁定</param>
        /// <param name="regStartDate">注册日期开始</param>
        /// <param name="regEndDate">注册日期结束</param>
        /// <param name="loginStartDate">最后登录日期开始</param>
        /// <param name="loginEndDate">最后登录日期结束</param>
        /// <param name="order">排序顺序</param>
        /// <returns>用户总数</returns>
        private static Int32 AdminCountUserList(String names, String nickname, String email, String school, String lastIP, String islocked, String regStartDate, String regEndDate, String loginStartDate, String loginEndDate)
        {
            DateTime regStart = DateTime.MinValue, regEnd = DateTime.MinValue, loginStart = DateTime.MinValue, loginEnd = DateTime.MinValue;
            names = names.SearchOptimized();

            return UserRepository.Instance
                .CountEntities(names.SearchOptimized(), nickname, email, school, lastIP,
                    (!String.IsNullOrEmpty(islocked) ? "1".Equals(islocked, StringComparison.OrdinalIgnoreCase) : new Nullable<Boolean>()),
                    (!String.IsNullOrEmpty(regStartDate) && DateTime.TryParse(regStartDate, out regStart) ? regStart : new Nullable<DateTime>()),
                    (!String.IsNullOrEmpty(regEndDate) && DateTime.TryParse(regEndDate, out regEnd) ? regEnd : new Nullable<DateTime>()),
                    (!String.IsNullOrEmpty(loginStartDate) && DateTime.TryParse(loginStartDate, out loginStart) ? loginStart : new Nullable<DateTime>()),
                    (!String.IsNullOrEmpty(loginEndDate) && DateTime.TryParse(loginEndDate, out loginEnd) ? loginEnd : new Nullable<DateTime>()));
        }
Exemplo n.º 5
0
        /// <summary>
        /// 获取用户列表
        /// </summary>
        /// <param name="pageIndex">页面索引</param>
        /// <param name="names">用户名包含</param>
        /// <param name="nickname">昵称包含</param>
        /// <param name="email">邮箱包含</param>
        /// <param name="school">学校包含</param>
        /// <param name="lastIP">最后登录IP包含</param>
        /// <param name="islocked">是否锁定</param>
        /// <param name="regStartDate">注册日期开始</param>
        /// <param name="regEndDate">注册日期结束</param>
        /// <param name="loginStartDate">最后登录日期开始</param>
        /// <param name="loginEndDate">最后登录日期结束</param>
        /// <param name="order">排序顺序</param>
        /// <returns>用户列表</returns>
        public static PagedList<UserEntity> AdminGetUserList(Int32 pageIndex, String names, String nickname, String email, String school, String lastIP, String islocked, String regStartDate, String regEndDate, String loginStartDate, String loginEndDate, String order)
        {
            if (!AdminManager.HasPermission(PermissionType.SuperAdministrator))
            {
                throw new NoPermissionException();
            }

            Int32 pageSize = AdminManager.ADMIN_LIST_PAGE_SIZE;
            Int32 recordCount = UserManager.AdminCountUserList(names, nickname, email, school, lastIP, islocked, regStartDate, regEndDate, loginStartDate, loginEndDate);

            DateTime regStart = DateTime.MinValue, regEnd = DateTime.MinValue, loginStart = DateTime.MinValue, loginEnd = DateTime.MinValue;

            return UserRepository.Instance
                .GetEntities(names.SearchOptimized(), nickname, email, school, lastIP,
                    (!String.IsNullOrEmpty(islocked) ? "1".Equals(islocked, StringComparison.OrdinalIgnoreCase) : new Nullable<Boolean>()),
                    (!String.IsNullOrEmpty(regStartDate) && DateTime.TryParse(regStartDate, out regStart) ? regStart : new Nullable<DateTime>()),
                    (!String.IsNullOrEmpty(regEndDate) && DateTime.TryParse(regEndDate, out regEnd) ? regEnd : new Nullable<DateTime>()),
                    (!String.IsNullOrEmpty(loginStartDate) && DateTime.TryParse(loginStartDate, out loginStart) ? loginStart : new Nullable<DateTime>()),
                    (!String.IsNullOrEmpty(loginEndDate) && DateTime.TryParse(loginEndDate, out loginEnd) ? loginEnd : new Nullable<DateTime>()),
                    (String.IsNullOrEmpty(order) ? -1 : Convert.ToInt32(order)),
                    pageIndex, pageSize, recordCount)
                .ToPagedList(pageSize, recordCount);
        }
Exemplo n.º 6
0
        /// <summary>
        /// 根据题目搜索结果获取题目列表
        /// </summary>
        /// <param name="type">搜索类别</param>
        /// <param name="content">搜索内容</param>
        /// <returns>题目列表</returns>
        public static List<ProblemEntity> GetProblemBySearch(String type, String content)
        {
            List<ProblemEntity> list = null;

            if (String.Equals(type, "category", StringComparison.OrdinalIgnoreCase))
            {
                Int32 typeID = -1;

                if (!Int32.TryParse(content, out typeID) || typeID <= 0)
                {
                    throw new InvalidRequstException(RequestType.ProblemCategory);
                }

                list = ProblemManager.GetProblemListByType(typeID);
            }
            else if (String.Equals(type, "pid", StringComparison.OrdinalIgnoreCase))
            {
                content = content.SearchOptimized();

                if (!RegexVerify.IsNumericIDs(content))
                {
                    throw new InvalidRequstException(RequestType.Problem);
                }

                list = ProblemManager.GetProblemListByID(content);
            }
            else if (String.Equals(type, "title", StringComparison.OrdinalIgnoreCase))
            {
                if (String.IsNullOrEmpty(content) || !SQLValidator.IsNonNullANDSafe(content))
                {
                    throw new InvalidInputException("Problem Title is INVALID!");
                }

                list = ProblemManager.GetProblemListByTitle(content);
            }
            else if (String.Equals(type, "source", StringComparison.OrdinalIgnoreCase))
            {
                if (String.IsNullOrEmpty(content) || !SQLValidator.IsNonNullANDSafe(content))
                {
                    throw new InvalidInputException("Problem Source is INVALID!");
                }

                list = ProblemManager.GetProblemListBySource(content);
            }

            list = GetUserCanViewProblemList(list);

            return list;
        }
Exemplo n.º 7
0
        /// <summary>
        /// 获取主题总数(无缓存)
        /// </summary>
        /// <param name="ftids">主题ID列表</param>
        /// <param name="username">发帖人</param>
        /// <param name="title">主题标题</param>
        /// <param name="type">主题类型</param>
        /// <param name="relativeID">相关ID</param>
        /// <param name="isLocked">是否锁定</param>
        /// <param name="isHide">是否隐藏</param>
        /// <param name="startDate">发帖开始时间</param>
        /// <param name="endDate">发帖结束时间</param>
        /// <returns>主题总数</returns>
        private static Int32 AdminCountForumTopics(String ftids, String username, String title, String type, String relativeID, String isLocked, String isHide, String startDate, String endDate)
        {
            Byte topictype = 0;
            Int32 rid = -1;
            DateTime dtStart = DateTime.MinValue, dtEnd = DateTime.MinValue;

            ftids = ftids.SearchOptimized();

            if (!String.IsNullOrEmpty(ftids) && !RegexVerify.IsNumericIDs(ftids))
            {
                throw new InvalidRequstException(RequestType.ForumTopic);
            }

            if (!String.IsNullOrEmpty(relativeID) && !Int32.TryParse(relativeID, out rid))
            {
                throw new InvalidInputException("Relative ID is INVALID!");
            }

            return ForumTopicRepository.Instance
                .CountEntities(ftids, username, title,
                    (!String.IsNullOrEmpty(type) && Byte.TryParse(type, out topictype) ? (ForumTopicType)topictype : new Nullable<ForumTopicType>()), rid,
                    (!String.IsNullOrEmpty(isLocked) ? "1".Equals(isLocked, StringComparison.OrdinalIgnoreCase) : new Nullable<Boolean>()),
                    (!String.IsNullOrEmpty(isHide) ? "1".Equals(isHide, StringComparison.OrdinalIgnoreCase) : new Nullable<Boolean>()),
                    (!String.IsNullOrEmpty(startDate) && DateTime.TryParse(startDate, out dtStart) ? dtStart : new Nullable<DateTime>()),
                    (!String.IsNullOrEmpty(endDate) && DateTime.TryParse(endDate, out dtEnd) ? dtEnd : new Nullable<DateTime>()));
        }
Exemplo n.º 8
0
        /// <summary>
        /// 获取帖子总数(无缓存)
        /// </summary>
        /// <param name="fpids">帖子ID列表</param>
        /// <param name="ftids">主题ID列表</param>
        /// <param name="username">发帖用户名</param>
        /// <param name="title">帖子标题</param>
        /// <param name="content">帖子内容</param>
        /// <param name="isHide">是否隐藏</param>
        /// <param name="startDate">发帖开始时间</param>
        /// <param name="endDate">发帖结束时间</param>
        /// <param name="postip">发帖IP</param>
        /// <returns>帖子总数</returns>
        private static Int32 AdminCountForumPosts(String fpids, String ftids, String username, String title, String content, String isHide, String startDate, String endDate, String postip)
        {
            DateTime dtStart = DateTime.MinValue, dtEnd = DateTime.MinValue;

            fpids = fpids.SearchOptimized();
            ftids = ftids.SearchOptimized();

            if (!String.IsNullOrEmpty(fpids) && !RegexVerify.IsNumericIDs(fpids))
            {
                throw new InvalidRequstException(RequestType.ForumPost);
            }

            if (!String.IsNullOrEmpty(ftids) && !RegexVerify.IsNumericIDs(ftids))
            {
                throw new InvalidRequstException(RequestType.ForumTopic);
            }

            return ForumPostRepository.Instance
                    .CountEntities(fpids, ftids, username, title, content,
                    (!String.IsNullOrEmpty(isHide) ? "1".Equals(isHide, StringComparison.OrdinalIgnoreCase) : new Nullable<Boolean>()),
                    (!String.IsNullOrEmpty(startDate) && DateTime.TryParse(startDate, out dtStart) ? dtStart : new Nullable<DateTime>()),
                    (!String.IsNullOrEmpty(endDate) && DateTime.TryParse(endDate, out dtEnd) ? dtEnd : new Nullable<DateTime>()), postip);
        }