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()); }
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 ) )); }
private async Task LoadPosts(PostFilters filters = null) { var posts = await http.Get <List <PostView> >(filters); postsGrid.DataSource = postsGrid.DataSource = MapPostsToGrid(posts); }