public PagedList(IEnumerable <T> items, int count, int pageNumber, int pageSize) { PagingMetaData = new PagingMetaData { TotalCount = count, PageSize = pageSize, CurrentPage = pageNumber, TotalPages = (int)Math.Ceiling(count / (double)pageSize) }; AddRange(items); }
public RecordsMetaData(long totalCount, PagingMetaData pagingMetaData) { TotalRecordCount = totalCount; TotalPagesCount = ((TotalRecordCount <= 0 || pagingMetaData.PageSize <= 0) ? 0 : ( (TotalRecordCount / pagingMetaData.PageSize) + (((TotalRecordCount % pagingMetaData.PageSize) == 0) ? 0 : 1 ) ) ); }
private static PagedResponse <HeldInvoiceDetailsResponse> CreateResponse(IEnumerable <HeldInvoiceDetailsDomain> heldInvoices, PagingMetaData pagingMetaData) { var invoices = new List <HeldInvoiceDetailsResponse>(); foreach (var invoice in heldInvoices) { var(supplierReclaimsTotal, hackneyReclaimsTotal) = CalculateTotals(invoice.PayRunInvoice.InvoiceItems); var invoiceRes = new HeldInvoiceDetailsResponse { PayRunId = invoice.PayRunId, PayRunNumber = invoice.PayRunNumber, DateCreated = invoice.DateCreated, StartDate = invoice.StartDate, EndDate = invoice.EndDate, PayRunInvoice = new PayRunInvoiceResponse { Id = invoice.PayRunInvoice.Id, InvoiceId = invoice.PayRunInvoice.InvoiceId, CarePackageId = invoice.PayRunInvoice.CarePackageId, ServiceUserId = invoice.PayRunInvoice.ServiceUserId, ServiceUserName = invoice.PayRunInvoice.ServiceUserName, SupplierId = invoice.PayRunInvoice.SupplierId, SupplierName = invoice.PayRunInvoice.SupplierName, InvoiceNumber = invoice.PayRunInvoice.InvoiceNumber, PackageTypeId = (int)invoice.PayRunInvoice.PackageType, PackageType = invoice.PayRunInvoice.PackageType.GetDisplayName(), GrossTotal = decimal.Round(invoice.PayRunInvoice.GrossTotal, 2), NetTotal = decimal.Round(invoice.PayRunInvoice.NetTotal, 2), SupplierReclaimsTotal = decimal.Round(supplierReclaimsTotal, 2), HackneyReclaimsTotal = decimal.Round(hackneyReclaimsTotal, 2), InvoiceStatus = invoice.PayRunInvoice.InvoiceStatus, AssignedBrokerName = invoice.PayRunInvoice.AssignedBrokerName, InvoiceItems = invoice.PayRunInvoice.InvoiceItems.ToResponse() } }; invoices.Add(invoiceRes); } var result = new PagedResponse <HeldInvoiceDetailsResponse> { PagingMetaData = pagingMetaData, Data = invoices }; return(result); }
public static PayRunDetailsViewResponse CreateDetailsViewResponse(Payrun payrun, IEnumerable <PayRunInvoiceDomain> payRunInvoices, PagingMetaData pagingMetaData) { var result = new PayRunDetailsViewResponse { PayRunId = payrun.Id, PayRunStatus = payrun.Status, PayRunNumber = payrun.Number, DateCreated = payrun.DateCreated, StartDate = payrun.StartDate, EndDate = payrun.EndDate }; var invoices = new List <PayRunInvoiceResponse>(); foreach (var invoice in payRunInvoices) { var(supplierReclaimsTotal, hackneyReclaimsTotal) = PayrunExtensions.CalculateTotals(invoice.InvoiceItems.Where(i => i.PriceEffect != PriceEffect.None).ToList()); var invoiceStatus = invoice.InvoiceStatus; if (payrun.Status.In(PayrunStatus.Paid, PayrunStatus.PaidWithHold) && invoice.InvoiceStatus.In(InvoiceStatus.Released, InvoiceStatus.ReleaseAccepted)) { invoiceStatus = InvoiceStatus.Held; } var invoiceRes = invoice.ToResponse(invoiceStatus, supplierReclaimsTotal, hackneyReclaimsTotal); invoices.Add(invoiceRes); } result.PayRunItems = new PagedResponse <PayRunInvoiceResponse> { PagingMetaData = pagingMetaData, Data = invoices }; return(result); }
public static async Task <PagingRecordSet <T> > QueryPaginateAsync <T>(this IDbConnection dbConnection, string query, string countQuery, PagingMetaData pagingMetaData, object param = null) where T : class { string multiQuery = countQuery + "\n" + query + " OFFSET @Offset ROWS FETCH NEXT @Fetch ROWS ONLY;"; DynamicParameters multiParam = new DynamicParameters(param); long offset = (((pagingMetaData.PageNumber < 1) ? 0 : pagingMetaData.PageNumber - 1 ) * pagingMetaData.PageSize); multiParam.Add("Offset", offset); multiParam.Add("Fetch", pagingMetaData.PageSize); SqlMapper.GridReader multiQueryResultReader = await dbConnection.QueryMultipleAsync(multiQuery, multiParam); return(new PagingRecordSet <T>( pagingMetaData, multiQueryResultReader.Read <long>().FirstOrDefault(), multiQueryResultReader.Read <T>() )); }
/// <summary> /// Adds a header with pagination data (page number, size etc.) to a response /// </summary> public static void AddPaginationHeaders(this HttpResponse response, PagingMetaData pagingMetaData) { response.Headers.Add( ResponseHeadersConstants.XPagination, JsonConvert.SerializeObject(pagingMetaData)); }