Exemplo n.º 1
0
        public ListResponse <VSGalleryQAThread> List(ListRequest request)
        {
            request.CheckNotNull();

            var response = new ListResponse <VSGalleryQAThread>();

            IEnumerable <VSGalleryQAThread> filtered = GetAllThreads();

            if (!string.IsNullOrWhiteSpace(request.ContainsText))
            {
                var contains = StringHelper.RemoveDiacritics(request.ContainsText.TrimToEmpty()).ToLowerInvariant();

                Func <string, bool> match = s => StringHelper.RemoveDiacritics(s ?? "")
                                            .ToLowerInvariant().IndexOf(contains) >= 0;

                filtered = filtered.Where(x => match(x.Title) || match(x.StartedByName) || match(x.ThreadId.ToString()) ||
                                          x.Posts.Any(p => match(p.Message) || match(p.PostedByName)));
            }

            response.TotalCount = filtered.Count();
            response.Skip       = request.Skip;
            response.Take       = request.Take;

            if (request.Skip > 0)
            {
                filtered = filtered.Skip(request.Skip);
            }

            if (request.Take > 0)
            {
                filtered = filtered.Take(request.Take);
            }

            response.Entities = filtered.ToList();

            return(response);
        }