public FinancialTransactionsExport Export(
            int page      = 1,
            int pageSize  = 1000,
            string sortBy = null,
            System.Web.UI.WebControls.SortDirection sortDirection = System.Web.UI.WebControls.SortDirection.Ascending,
            int?dataViewId         = null,
            DateTime?modifiedSince = null,
            DateTime?startDateTime = null,
            DateTime?endDateTime   = null,
            string attributeKeys   = null,
            AttributeReturnType attributeReturnType = AttributeReturnType.Raw
            )
        {
            // limit to 'API Max Items Per Page' global attribute
            int maxPageSize    = GlobalAttributesCache.Get().GetValue("core_ExportAPIsMaxItemsPerPage").AsIntegerOrNull() ?? 1000;
            var actualPageSize = Math.Min(pageSize, maxPageSize);

            FinancialTransactionExportOptions exportOptions = new FinancialTransactionExportOptions
            {
                SortBy              = sortBy,
                SortDirection       = sortDirection,
                DataViewId          = dataViewId,
                ModifiedSince       = modifiedSince,
                AttributeList       = AttributesExport.GetAttributesFromAttributeKeys <FinancialTransaction>(attributeKeys),
                AttributeReturnType = attributeReturnType,
                StartDateTime       = startDateTime,
                EndDateTime         = endDateTime
            };

            var rockContext = new RockContext();
            var financialTransactionService = new FinancialTransactionService(rockContext);

            return(financialTransactionService.GetFinancialTransactionExport(page, actualPageSize, exportOptions));
        }
示例#2
0
        /// <summary>
        /// Gets an export of FinancialTransaction Records
        /// </summary>
        /// <param name="page">The page being requested (where first page is 1).</param>
        /// <param name="pageSize">The number of records to provide per page. NOTE: This is limited to the 'API Max Items Per Page' global attribute.</param>
        /// <param name="exportOptions">The export options.</param>
        /// <returns></returns>
        public FinancialTransactionsExport GetFinancialTransactionExport(int page, int pageSize, FinancialTransactionExportOptions exportOptions)
        {
            IQueryable <FinancialTransaction> financialTransactionQry;
            SortProperty sortProperty = exportOptions.SortProperty;

            RockContext rockContext = this.Context as RockContext;

            if (exportOptions.DataViewId.HasValue)
            {
                financialTransactionQry = ModelExport.QueryFromDataView <FinancialTransaction>(rockContext, exportOptions.DataViewId.Value);
            }
            else
            {
                financialTransactionQry = this.Queryable();
            }

            if (sortProperty != null)
            {
                financialTransactionQry = financialTransactionQry.Sort(sortProperty);
            }

            if (exportOptions.ModifiedSince.HasValue)
            {
                financialTransactionQry = financialTransactionQry.Where(a => a.ModifiedDateTime.HasValue && a.ModifiedDateTime >= exportOptions.ModifiedSince.Value);
            }

            if (exportOptions.StartDateTime.HasValue)
            {
                financialTransactionQry = financialTransactionQry.Where(a => a.TransactionDateTime.HasValue && a.TransactionDateTime >= exportOptions.StartDateTime.Value);
            }

            if (exportOptions.EndDateTime.HasValue)
            {
                financialTransactionQry = financialTransactionQry.Where(a => a.TransactionDateTime.HasValue && a.TransactionDateTime < exportOptions.EndDateTime.Value);
            }

            var skip = (page - 1) * pageSize;

            FinancialTransactionsExport financialTransactionsExport = new FinancialTransactionsExport();

            financialTransactionsExport.Page       = page;
            financialTransactionsExport.PageSize   = pageSize;
            financialTransactionsExport.TotalCount = financialTransactionQry.Count();

            var pagedFinancialTransactionQry = financialTransactionQry
                                               .Include(a => a.AuthorizedPersonAlias)
                                               .Include(a => a.TransactionDetails)
                                               .Include(a => a.FinancialPaymentDetail)
                                               .Include(a => a.TransactionDetails.Select(d => d.Account))
                                               .AsNoTracking()
                                               .Skip(skip)
                                               .Take(pageSize);

            var financialTransactionList = pagedFinancialTransactionQry.ToList();

            financialTransactionsExport.FinancialTransactions = financialTransactionList.Select(f => new FinancialTransactionExport(f)).ToList();

            AttributesExport.LoadAttributeValues(exportOptions, rockContext, financialTransactionsExport.FinancialTransactions, pagedFinancialTransactionQry);
            return(financialTransactionsExport);
        }