예제 #1
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);
        }
예제 #2
0
 /// <summary>
 /// Copies the base properties from a source FinancialTransactionsExport object
 /// </summary>
 /// <param name="source">The source.</param>
 public void CopyPropertiesFrom(FinancialTransactionsExport source)
 {
     this.FinancialTransactions = source.FinancialTransactions;
     this.Page       = source.Page;
     this.PageSize   = source.PageSize;
     this.TotalCount = source.TotalCount;
 }