using PARR.API.Contracts.V1.Responses.Base; using PARR.Domain.Common.Pagination; namespace PARR.API.Extensions { public static class PaginationExtensions { /// /// Заполняет TotalItems, PageNumber, PageSize, TotalPage /// /// /// /// /// /// /// public static PagedResponse GetPaginatedProps( this PagedResponse pagedResponse, PaginationFilter paginationFilter, IQueryable queryAllItemsApplyFilters ) { // TODO: CountAsync - подумать и затолкать в Task int totalItems = queryAllItemsApplyFilters.Count();//.CountAsync().GetAwaiter().GetResult(); return CreatePaginatedResponse(totalItems, paginationFilter, pagedResponse); } /// /// Заполняет TotalItems, PageNumber, PageSize, TotalPage /// /// /// /// /// /// public static PagedResponse GetPaginatedProps( this PagedResponse pagedResponse, PaginationFilter paginationFilter, int totalItems ) { return CreatePaginatedResponse(totalItems, paginationFilter, pagedResponse); } private static PagedResponse CreatePaginatedResponse(int totalItems, PaginationFilter paginationFilter, PagedResponse pagedResponse) { pagedResponse.TotalItems = totalItems; pagedResponse.PageNumber = paginationFilter.PageNumber >= 1 ? paginationFilter.PageNumber : (int?)null; pagedResponse.PageSize = paginationFilter.PageSize >= 1 ? paginationFilter.PageSize : (int?)null; //pagedResponse.PageNumber = paginationFilter.IsDisabledPagination // ? 1 // : (paginationFilter.PageNumber >= 1 ? paginationFilter.PageNumber : (int?)null); //pagedResponse.PageSize = paginationFilter.IsDisabledPagination // ? totalItems // : (paginationFilter.PageSize >= 1 ? paginationFilter.PageSize : (int?)null); pagedResponse.TotalPage = (pagedResponse.TotalItems.HasValue && pagedResponse.PageSize.HasValue) ? (int)Math.Ceiling(pagedResponse.TotalItems.Value / (double)pagedResponse.PageSize.Value) : (int?)null; return pagedResponse; } } }