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)); }
/// <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); }