Пример #1
0
        public IHttpActionResult GetUsers(SearchTopic searchTopic)
        {
            if (!BoardContext.Current.IsAdmin && !BoardContext.Current.IsForumModerator)
            {
                return(this.NotFound());
            }

            var users = this.Get <IUserDisplayName>().FindUserContainsName(searchTopic.SearchTerm);

            if (!users.Any())
            {
                return(this.NotFound());
            }

            var usersFound = users
                             .Select(
                user => new SelectOptions
            {
                text = user.DisplayOrUserName(),
                id   = user.ID.ToString()
            }).ToList();

            var pagedTopics = new SelectPagedOptions {
                Total = usersFound.Count, Results = usersFound
            };

            return(this.Ok(pagedTopics));
        }
Пример #2
0
        public IHttpActionResult GetTopics(SearchTopic searchTopic)
        {
            if (!BoardContext.Current.IsAdmin && !BoardContext.Current.IsForumModerator)
            {
                return(this.NotFound());
            }

            if (searchTopic.SearchTerm.IsSet())
            {
                var topics = this.Get <IDataCache>().GetOrSet(
                    $"TopicsList_{searchTopic.ForumId}",
                    () => this.GetRepository <Topic>().Get(t => t.ForumID == searchTopic.ForumId),
                    TimeSpan.FromMinutes(5));

                var topicsList = topics
                                 .Where(topic => topic.TopicName.ToLower().Contains(searchTopic.SearchTerm.ToLower()))
                                 .Select(
                    topic => new SelectOptions
                {
                    text = topic.TopicName, id = topic.ID.ToString()
                }).ToList();

                var pagedTopics = new SelectPagedOptions {
                    Total = 0, Results = topicsList
                };

                return(this.Ok(pagedTopics));
            }
            else
            {
                var topics = this.GetRepository <Topic>().ListAsDataTable(
                    searchTopic.ForumId,
                    null,
                    DateTimeHelper.SqlDbMinTime(),
                    DateTime.UtcNow,
                    searchTopic.Page,
                    15,
                    false,
                    false,
                    false);

                var topicsList = (from DataRow topic in topics.Rows
                                  select new SelectOptions
                {
                    text = topic["Subject"].ToString(),
                    id = topic["TopicID"].ToString()
                }).ToList();

                var topicsEnum = topics.AsEnumerable();

                var pagedTopics = new SelectPagedOptions
                {
                    Total   = topicsEnum.Any() ? topicsEnum.First().Field <int>("TotalRows") : 0,
                    Results = topicsList
                };

                return(this.Ok(pagedTopics));
            }
        }
Пример #3
0
        public void GetTopics(int forumID, int page, string searchTerm)
        {
            var serializer = new JavaScriptSerializer();

            if (!YafContext.Current.IsAdmin && !YafContext.Current.IsForumModerator)
            {
                this.Context.Response.Write("{ 'No Access' }");
                return;
            }

            if (searchTerm.IsSet())
            {
                var topics = this.Get <IDataCache>()
                             .GetOrSet(
                    "TopicsList_{0}".FormatWith(forumID),
                    () =>
                    LegacyDb.topic_list(
                        forumID,
                        null,
                        DateTimeHelper.SqlDbMinTime(),
                        DateTime.UtcNow,
                        0,
                        30000,
                        false,
                        false,
                        false),
                    TimeSpan.FromMinutes(5));

                var topicsList = (from DataRow topic in topics.Rows
                                  where topic["Subject"].ToString().ToLower().Contains(searchTerm.ToLower())
                                  select
                                  new SelectOptions
                {
                    text = topic["Subject"].ToString(),
                    id = topic["TopicID"].ToString()
                }).ToList();

                var pagedTopics = new SelectPagedOptions {
                    Total = 0, Results = topicsList
                };

                this.Context.Response.Write(serializer.Serialize(pagedTopics));
            }
            else
            {
                var topics = LegacyDb.topic_list(
                    forumID,
                    null,
                    DateTimeHelper.SqlDbMinTime(),
                    DateTime.UtcNow,
                    page,
                    15,
                    false,
                    false,
                    false);

                var topicsList = (from DataRow topic in topics.Rows
                                  select
                                  new SelectOptions
                {
                    text = topic["Subject"].ToString(),
                    id = topic["TopicID"].ToString()
                }).ToList();

                var topicsEnum = topics.AsEnumerable();

                var pagedTopics = new SelectPagedOptions
                {
                    Total =
                        topicsEnum.Any()
                                                  ? topicsEnum.First().Field <int>("TotalRows")
                                                  : 0,
                    Results = topicsList
                };

                this.Context.Response.Write(serializer.Serialize(pagedTopics));
            }
        }