public IEnumerable <UserPostCategoryAggregate> GetAggregate(UserPostFilters filter) { return(_db.UserPostCategories.Where(x => x.UserId == filter.UserId) .GroupBy(x => x.CategoryId) .Select(x => new UserPostCategoryAggregate() { Count = x.Count(), CategoryId = x.Key })); }
public IEnumerable <PostView> GetSuggested(UserPostFilters filters) { List <PostView> views = new List <PostView>(); var entities = _repo.GetSuggested(filters); foreach (var entity in entities) { views.Add(_mapper.From(entity)); } return(views); }
public IEnumerable <Post> GetSuggested(UserPostFilters filters) { var categories = _userPostCategories.GetAggregate(filters); var tags = _userPostTags.GetAggregate(filters); var useCategories = categories.Count() > 5 ? categories.Take(5) : categories; var useTags = tags.Count() > 20 ? tags.Take(20) : tags; List <int> categoryIds = new List <int>(); foreach (var item in useCategories) { categoryIds.Add(item.CategoryId); } List <int> tagIds = new List <int>(); foreach (var item in useTags) { tagIds.Add(item.TagId); } var posts = _db.Posts .Include(p => p.User) .Include(p => p.Category) .Include(p => p.AssociatedTags) .ThenInclude(pt => pt.Tag) .Where(x => categoryIds.Contains(x.CategoryId)) .ToList(); var usedIds = new List <int>(); foreach (var item in posts) { usedIds.Add(item.id); } var tagPosts = _db.Posts .Include(p => p.User) .Include(p => p.Category) .Include(p => p.AssociatedTags) .ThenInclude(pt => pt.Tag) .Where(x => !usedIds.Contains(x.id)) .Where(x => x.AssociatedTags.All(p => tagIds.Contains(p.TagId))) .ToList(); posts.AddRange(tagPosts); return(posts); }
public IEnumerable <PostView> GetSuggested([FromQuery] UserPostFilters filters) { return(((PostService)_crudService).GetSuggested(filters)); }
IEnumerable <UserPostCategory> Repository <UserPostCategory, UserPostFilters> .GetAll(UserPostFilters filter) { return(_db.UserPostCategories.Where(x => x.UserId == filter.UserId).ToList()); }
public IEnumerable <UserPostTag> GetAll(UserPostFilters filter) { return(_db.UserPostTags.Where(x => x.UserId == filter.UserId).ToList()); }