Example #1
0
 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);
        }
Example #5
0
        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));
 }