public async Task <List <Post> > SearchPosts(List <string> tagIds, GetListParams <Post> param) { if (tagIds.Count() == 0) { return(new List <Post>()); } var relatedPostTags = await _db.PostTags .Where(u => tagIds.Contains(u.TagId) && u.Post.DateRemoved == null) .GroupBy(u => u.PostId) .Select(u => new { PostId = u.Key, Count = u.Count() }) .Skip(param.Offset) .Take(param.Limit) .OrderByDescending(u => u.Count) .ToListAsync(); var postIds = relatedPostTags.Select(u => u.PostId); if (postIds.Count() == 0) { return(new List <Post>()); } var posts = await _db.Posts.Where(u => postIds.Contains(u.Id)).ToListAsync(); posts.Sort((a, b) => { var countA = postIds.FirstOrDefault(u => u == a.Id); var countB = postIds.FirstOrDefault(u => u == b.Id); return(countA.CompareTo(countB)); }); return(posts); }
public async Task <ActionResult <List <PostResponse> > > SearchPosts(int?offset, int?limit, [FromQuery] string[] tags) { var paging = new GetListParams <Post>(offset, limit); var posts = await _repo.SearchPosts(tags.ToList(), paging); return(Ok(posts.Select(u => new PostResponse(u)).ToList())); }
public UserOrGroup GetListEx(GetListParams @params) { var parameters = new VkParameters { { "type", @params.Type }, { "owner_id", @params.OwnerId }, { "item_id", @params.ItemId }, { "page_url", @params.PageUrl }, { "filter", @params.Filter }, { "friends_only", @params.FriendsOnly }, { "extended", true }, { "offset", @params.Offset }, { "skip_own", @params.SkipOwn } }; if (@params.FriendsOnly.HasValue && @params.FriendsOnly.Value) { if (@params.Count <= 100) { parameters.Add("count", @params.Count); } } else { if (@params.Count <= 1000) { parameters.Add("count", @params.Count); } } return(_vk.Call("likes.getList", parameters, true)); }
public ReadOnlyCollection <long> GetList(GetListParams @params) { var parameters = new VkParameters { { "type", @params.Type }, { "owner_id", @params.OwnerId }, { "item_id", @params.ItemId }, { "page_url", @params.PageUrl }, { "filter", @params.Filter }, { "friends_only", @params.FriendsOnly }, { "offset", @params.Offset }, { "skip_own", @params.SkipOwn } }; if (@params.FriendsOnly.HasValue && @params.FriendsOnly.Value) { if (@params.Count <= 100) { parameters.Add("count", @params.Count); } } else { if (@params.Count <= 1000) { parameters.Add("count", @params.Count); } } VkResponseArray response = _vk.Call("likes.getList", parameters); return(response.ToReadOnlyCollectionOf <long>(x => x)); }
public async Task <List <Post> > GetPosts(List <string> tags, GetListParams <Post> paging) { var query = GetPostsByTagsQuery(tags); query = Helper.ApplyPaging(query, paging); var posts = await query.ToListAsync(); return(posts); }
public async Task <List <PostComment> > GetPostComments(int postId, GetListParams <PostComment> paging) { var query = _db.PostComments.Where(u => u.PostId == postId && u.DateRemoved == null && u.ParentPostCommentId == null); query = Helper.ApplyPaging(query, paging); var comments = await query.ToListAsync(); return(comments); }
public JsonResult GetList(GetListParams parameters) { if (ModelState.IsValid) { try { var bllInstance = BllFactory.GetBllInstance(parameters.TableName); if (bllInstance == null) { return(Json(ErrorModel.InputError)); } var condition = string.IsNullOrEmpty(parameters.Conditions) ? string.Empty : parameters.Conditions.Replace("###", " AND "); var fields = string.IsNullOrEmpty(parameters.Fields) ? null : parameters.Fields.Split(new[] { "###" }, StringSplitOptions.RemoveEmptyEntries); object data; var type = bllInstance.GetType(); if (parameters.PageIndex <= 0 || parameters.PageSize <= 0) { data = type.InvokeMember("QueryList", BindingFlags.InvokeMethod, null, bllInstance, new object[] { condition, fields, null, parameters.OrderField, parameters.Desending }); } else { data = type.InvokeMember("QueryPageList", BindingFlags.InvokeMethod, null, bllInstance, new object[] { parameters.PageIndex, parameters.PageSize, condition, fields, null, parameters.OrderField, parameters.Desending }); } return(Json(ErrorModel.GetDataSuccess(data))); } catch (Exception ex) { ExceptionLogBll.ExceptionPersistence(nameof(CommonController), nameof(CommonController), ex); return(Json(ErrorModel.InputError)); } } return(Json(ErrorModel.InputError)); }
public static IQueryable <T> ApplyPaging <T>(IQueryable <T> query, GetListParams <T> pagingParam) { var chain = query; if (pagingParam.OrderBy != null) { if (pagingParam.OrderDirection == GetListParams <T> .OrderDirections.ASC) { chain = chain.OrderBy(pagingParam.OrderBy); } else { chain = chain.OrderByDescending(pagingParam.OrderBy); } } chain = chain.Skip(pagingParam.Offset).Take(pagingParam.Limit); return(chain); }