public static GoblinApiPagedMetaResponseModel <TRequest, TResponse> GetGoblinApiPagedMetaResponseModel <TRequest, TResponse>( this IUrlHelper urlHelper, TRequest pagedRequestModel, GoblinApiPagedResponseModel <TResponse> pagedResponseModel, HttpMethod method = HttpMethod.GET) where TRequest : GoblinApiPagedRequestModel where TResponse : class, new() { GoblinApiPagedMetaResponseModel <TRequest, TResponse> pagedMetaModel = new GoblinApiPagedMetaResponseModel <TRequest, TResponse>(urlHelper, pagedRequestModel, pagedResponseModel, method); return(pagedMetaModel); }
public Task <GoblinApiPagedResponseModel <GoblinBlogCrawlerPostModel> > GetPagedAsync( GoblinBlogCrawlerGetPagedPostModel model, CancellationToken cancellationToken = default) { var query = _postRepo.Get(x => x.ImageUrl != null && x.Title != null); // Filters if (model.Term != null) { query = query.Where(x => x.Title.Contains(model.Term) || x.Description.Contains(model.Term) || x.Tags.Contains(model.Term) || x.AuthorName.Contains(model.Term) || x.SiteName.Contains(model.Term) ); } // Excludes var excludeIds = model.ExcludeIds.ToList <long>(long.TryParse); if (excludeIds.Any()) { query = query.Where(x => !excludeIds.Contains(x.Id)); } var includeIds = model.IncludeIds.ToList <long>(long.TryParse); // Includes if (includeIds.Any()) { var includeIdsQuery = _postRepo.Get(x => includeIds.Contains(x.Id)); query = query.Union(includeIdsQuery); } // Build Model Query var modelQuery = query.QueryTo <GoblinBlogCrawlerPostModel>(); // Order var sortByDirection = model.IsSortAscending ? "ASC" : "DESC"; var orderByDynamicStatement = $"{model.SortBy} {sortByDirection}"; modelQuery = !string.IsNullOrWhiteSpace(model.SortBy) ? modelQuery.OrderBy(orderByDynamicStatement) .ThenBy(x => x.Title) : modelQuery.OrderByDescending(x => x.LastCrawledTime) .ThenBy(x => x.Title); // Get Result var total = query.LongCount(); var items = modelQuery .Skip(model.Skip) .Take(model.Take) .ToList(); var pagedResponse = new GoblinApiPagedResponseModel <GoblinBlogCrawlerPostModel> { Total = total, Items = items }; return(Task.FromResult(pagedResponse)); }
public Task <GoblinApiPagedResponseModel <GoblinIdentityUserModel> > GetPagedAsync( GoblinIdentityGetPagedUserModel model, CancellationToken cancellationToken = default) { var query = _userRepo.Get(); // Filters if (model.Email != null) { query = query.Where(x => x.Email.Contains(model.Email)); } if (model.FullName != null) { query = query.Where(x => x.FullName.Contains(model.FullName)); } if (model.UserName != null) { query = query.Where(x => x.UserName.Contains(model.UserName)); } // Excludes var excludeIds = model.ExcludeIds.ToList <long>(long.TryParse); if (excludeIds.Any()) { query = query.Where(x => !excludeIds.Contains(x.Id)); } var includeIds = model.IncludeIds.ToList <long>(long.TryParse); // Includes if (includeIds.Any()) { var includeIdsQuery = _userRepo.Get(x => includeIds.Contains(x.Id)); query = query.Union(includeIdsQuery); } // Build Model Query var modelQuery = query.QueryTo <GoblinIdentityUserModel>(); // Order var sortByDirection = model.IsSortAscending ? "ASC" : "DESC"; var orderByDynamicStatement = $"{model.SortBy} {sortByDirection}"; modelQuery = !string.IsNullOrWhiteSpace(model.SortBy) ? modelQuery.OrderBy(orderByDynamicStatement) : modelQuery.OrderByDescending(x => x.LastUpdatedTime); // Get Result var total = query.LongCount(); var items = modelQuery .Skip(model.Skip) .Take(model.Take) .ToList(); var pagedResponse = new GoblinApiPagedResponseModel <GoblinIdentityUserModel> { Total = total, Items = items }; return(Task.FromResult(pagedResponse)); }