Example #1
0
        public IEnumerable <Post> GetForUser(int userId, PostFilters filters)
        {
            var query = _db.Posts
                        .Include(p => p.User)
                        .Include(p => p.Category)
                        .Include(p => p.AssociatedTags)
                        .ThenInclude(pt => pt.Tag)
                        .Where(p => p.UserId == userId)
                        .AsQueryable();

            if (filters != null)
            {
                if (filters.OnlyPublished && !filters.OnlyUnpublished)
                {
                    query = query.Where(x => x.Published);
                }

                if (filters.OnlyUnpublished && !filters.OnlyPublished)
                {
                    query = query.Where(x => !x.Published);
                }

                if (!string.IsNullOrWhiteSpace(filters.Title))
                {
                    query = query.Where(x => x.Title.Contains(filters.Title));
                }

                if (!string.IsNullOrWhiteSpace(filters.Tag))
                {
                    query = query.Where(x => x.AssociatedTags.All(t => t.Tag.name == filters.Tag));
                }

                if (!string.IsNullOrWhiteSpace(filters.Category))
                {
                    query = query.Where(x => x.Category.Name == filters.Category);
                }

                if (filters.Until > DateTime.MinValue && filters.Until.Date >= filters.Since.Date)
                {
                    query = query.Where(x => x.CreatedAt.Date <= filters.Until.Date);
                }

                query = query.Where(x => x.CreatedAt.Date >= filters.Since.Date);
            }

            return(query.ToList());
        }
Example #2
0
        private async void ListView_ItemTapped(object sender, ItemTappedEventArgs e)
        {
            if (e.Item is null)
            {
                return;
            }

            if (PostHttpClient.ReadPosts >= 10 && HttpClient.Package == Package.NONE)
            {
                await Navigation.PushAsync(new Payment());

                return;
            }

            PostHttpClient.ReadPosts++;

            var post = await http.GetById <PostView>((e.Item as PostGridItem).Id);

            var filters = new PostFilters()
            {
                Category      = post.Category,
                OnlyPublished = true,
            };
            var suggestedPosts = await http.Get <IEnumerable <PostView> >(filters);

            suggestedPosts = suggestedPosts.Take(3);

            var mappedSuggestedPosts = new List <PostGridItem>();

            foreach (var item in suggestedPosts)
            {
                mappedSuggestedPosts.Add(mapper.from(item));
            }

            await Navigation.PushAsync(new Post(
                                           new PostViewModel(
                                               mapper.from(post),
                                               mappedSuggestedPosts
                                               )
                                           ));
        }
Example #3
0
        private async Task LoadPosts(PostFilters filters = null)
        {
            var posts = await http.Get <List <PostView> >(filters);

            postsGrid.DataSource = postsGrid.DataSource = MapPostsToGrid(posts);
        }