Пример #1
0
        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);
        }
Пример #2
0
        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));
        }
Пример #3
0
        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));
        }