本文整理汇总了C#中FinancialAccountService.Queryable方法的典型用法代码示例。如果您正苦于以下问题:C# FinancialAccountService.Queryable方法的具体用法?C# FinancialAccountService.Queryable怎么用?C# FinancialAccountService.Queryable使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FinancialAccountService
的用法示例。
在下文中一共展示了FinancialAccountService.Queryable方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ProcessPayments
/// <summary>
/// Processes the payments.
/// </summary>
/// <param name="gateway">The gateway.</param>
/// <param name="batchNamePrefix">The batch name prefix.</param>
/// <param name="payments">The payments.</param>
/// <param name="batchUrlFormat">The batch URL format.</param>
/// <param name="receiptEmail">The receipt email.</param>
/// <returns></returns>
public static string ProcessPayments( FinancialGateway gateway, string batchNamePrefix, List<Payment> payments, string batchUrlFormat = "", Guid? receiptEmail = null )
{
int totalPayments = 0;
int totalAlreadyDownloaded = 0;
int totalNoScheduledTransaction = 0;
int totalAdded = 0;
int totalReversals = 0;
int totalStatusChanges = 0;
var batches = new List<FinancialBatch>();
var batchSummary = new Dictionary<Guid, List<Decimal>>();
var initialControlAmounts = new Dictionary<Guid, decimal>();
var txnPersonNames = new Dictionary<Guid, string>();
var gatewayComponent = gateway.GetGatewayComponent();
var newTransactions = new List<FinancialTransaction>();
using ( var rockContext = new RockContext() )
{
var accountService = new FinancialAccountService( rockContext );
var txnService = new FinancialTransactionService( rockContext );
var batchService = new FinancialBatchService( rockContext );
var scheduledTxnService = new FinancialScheduledTransactionService( rockContext );
var contributionTxnType = DefinedValueCache.Read( Rock.SystemGuid.DefinedValue.TRANSACTION_TYPE_CONTRIBUTION.AsGuid() );
var defaultAccount = accountService.Queryable()
.Where( a =>
a.IsActive &&
!a.ParentAccountId.HasValue &&
( !a.StartDate.HasValue || a.StartDate.Value <= RockDateTime.Now ) &&
( !a.EndDate.HasValue || a.EndDate.Value >= RockDateTime.Now )
)
.OrderBy( a => a.Order )
.FirstOrDefault();
var batchTxnChanges = new Dictionary<Guid, List<string>>();
var batchBatchChanges = new Dictionary<Guid, List<string>>();
var scheduledTransactionIds = new List<int>();
foreach ( var payment in payments.Where( p => p.Amount > 0.0M ) )
{
totalPayments++;
var scheduledTransaction = scheduledTxnService.GetByScheduleId( payment.GatewayScheduleId );
if ( scheduledTransaction != null )
{
// Find existing payments with same transaction code
var txns = txnService
.Queryable( "TransactionDetails" )
.Where( t => t.TransactionCode == payment.TransactionCode )
.ToList();
// Calculate whether a transaction needs to be added
var txnAmount = CalculateTransactionAmount( payment, txns );
if ( txnAmount != 0.0M )
{
scheduledTransactionIds.Add( scheduledTransaction.Id );
if ( payment.ScheduleActive.HasValue )
{
scheduledTransaction.IsActive = payment.ScheduleActive.Value;
}
var transaction = new FinancialTransaction();
transaction.FinancialPaymentDetail = new FinancialPaymentDetail();
transaction.Guid = Guid.NewGuid();
transaction.TransactionCode = payment.TransactionCode;
transaction.TransactionDateTime = payment.TransactionDateTime;
transaction.Status = payment.Status;
transaction.StatusMessage = payment.StatusMessage;
transaction.ScheduledTransactionId = scheduledTransaction.Id;
transaction.AuthorizedPersonAliasId = scheduledTransaction.AuthorizedPersonAliasId;
transaction.SourceTypeValueId = scheduledTransaction.SourceTypeValueId;
txnPersonNames.Add( transaction.Guid, scheduledTransaction.AuthorizedPersonAlias.Person.FullName );
transaction.FinancialGatewayId = gateway.Id;
transaction.TransactionTypeValueId = contributionTxnType.Id;
if ( txnAmount < 0.0M )
{
transaction.Summary = "Reversal for previous transaction that failed during processing." + Environment.NewLine;
}
var currencyTypeValue = payment.CurrencyTypeValue;
var creditCardTypevalue = payment.CreditCardTypeValue;
if ( scheduledTransaction.FinancialPaymentDetail != null )
{
if ( currencyTypeValue == null && scheduledTransaction.FinancialPaymentDetail.CurrencyTypeValueId.HasValue )
//.........这里部分代码省略.........
示例2: LoadAccounts
private void LoadAccounts()
{
var rockContext = new RockContext();
FinancialAccountService accountService = new FinancialAccountService(rockContext);
List<Guid> selectedAccounts = new List<Guid>(); ;
if ( !string.IsNullOrWhiteSpace( GetAttributeValue( "Accounts" ) ) )
{
selectedAccounts = GetAttributeValue( "Accounts" ).Split( ',' ).Select( Guid.Parse ).ToList();
}
var accounts = accountService.Queryable()
.Where( a => selectedAccounts.Contains( a.Guid ) )
.OrderBy( a => a.Order );
foreach ( var account in accounts.ToList() )
{
ListItem checkbox = new ListItem(account.Name, account.Id.ToString(), true);
checkbox.Selected = true;
cblAccounts.Items.Add( checkbox );
}
}
示例3: LoadAccounts
/// <summary>
/// Loads the accounts.
/// </summary>
private void LoadAccounts()
{
var rockContext = new RockContext();
FinancialAccountService accountService = new FinancialAccountService( rockContext );
List<Guid> selectedAccounts = new List<Guid>();
if ( !string.IsNullOrWhiteSpace( GetAttributeValue( "Accounts" ) ) )
{
selectedAccounts = GetAttributeValue( "Accounts" ).Split( ',' ).AsGuidList();
}
var accountList = accountService.Queryable()
.Where( a => selectedAccounts.Contains( a.Guid ) )
.OrderBy( a => a.Order )
.Select( a => new
{
a.Id,
a.PublicName
} ).ToList();
if ( accountList.Any() )
{
foreach ( var account in accountList )
{
ListItem checkbox = new ListItem( account.PublicName, account.Id.ToString(), true );
checkbox.Selected = true;
cblAccounts.Items.Add( checkbox );
}
}
else
{
cblAccounts.Items.Clear();
}
// only show Account Checkbox list if there are accounts are configured for the block
cblAccounts.Visible = accountList.Any();
}
示例4: CheckSettings
// checks the settings provided
private bool CheckSettings()
{
nbBlockConfigErrors.Title = string.Empty;
nbBlockConfigErrors.Text = string.Empty;
// get list of selected accounts filtered by the current campus
RockContext rockContext = new RockContext();
FinancialAccountService accountService = new FinancialAccountService( rockContext );
if ( !string.IsNullOrWhiteSpace( GetAttributeValue( "Accounts" ) ) )
{
Guid[] selectedAccounts = GetAttributeValue( "Accounts" ).Split( ',' ).Select( s => Guid.Parse( s ) ).ToArray(); ;
var accounts = accountService.Queryable()
.Where( a => selectedAccounts.Contains( a.Guid ) );
if ( this.CampusId != 0 )
{
accounts = accounts.Where( a => a.CampusId.Value == this.CampusId || a.CampusId == null );
}
this.Accounts = new Dictionary<int, string>();
foreach ( var account in accounts.OrderBy( a => a.Order ).ToList() )
{
this.Accounts.Add( account.Id, account.PublicName );
}
}
else
{
nbBlockConfigErrors.Heading = "No Accounts Configured";
nbBlockConfigErrors.Text = "<p>There are currently no accounts configured.</p>";
return false;
}
// hide cancel buttons if no homepage defined
if ( string.IsNullOrWhiteSpace( GetAttributeValue( "Homepage" ) ) )
{
lbSearchCancel.Visible = false;
lbGivingUnitSelectCancel.Visible = false;
lbRegisterCancel.Visible = false;
lbAccountEntryCancel.Visible = false;
lbSwipeCancel.Visible = false;
}
// get anonymous person
Person anonymousPerson = null;
Guid anonymousPersonAliasGuid;
if ( Guid.TryParse( GetAttributeValue( "AnonymousPerson" ), out anonymousPersonAliasGuid ) )
{
anonymousPerson = new PersonAliasService( rockContext ).Get(anonymousPersonAliasGuid ).Person;
}
if ( anonymousPerson != null )
{
this.AnonymousGiverPersonAliasId = anonymousPerson.PrimaryAliasId;
lbGiveAnonymously.Visible = true;
}
else
{
lbGiveAnonymously.Visible = false;
}
_dvcConnectionStatus = DefinedValueCache.Read( GetAttributeValue( "ConnectionStatus" ).AsGuid() );
if ( _dvcConnectionStatus == null )
{
nbBlockConfigErrors.Heading = "Invalid Connection Status";
nbBlockConfigErrors.Text = "<p>The selected Connection Status setting does not exist.</p>";
return false;
}
_dvcRecordStatus = DefinedValueCache.Read( GetAttributeValue( "RecordStatus" ).AsGuid() );
if ( _dvcRecordStatus == null )
{
nbBlockConfigErrors.Heading = "Invalid Record Status";
nbBlockConfigErrors.Text = "<p>The selected Record Status setting does not exist.</p>";
return false;
}
return true;
}
示例5: ProcessPayments
/// <summary>
/// Processes the payments.
/// </summary>
/// <param name="gateway">The gateway.</param>
/// <param name="batchNamePrefix">The batch name prefix.</param>
/// <param name="payments">The payments.</param>
/// <param name="batchUrlFormat">The batch URL format.</param>
/// <returns></returns>
public static string ProcessPayments( FinancialGateway gateway, string batchNamePrefix, List<Payment> payments, string batchUrlFormat = "" )
{
int totalPayments = 0;
int totalAlreadyDownloaded = 0;
int totalNoScheduledTransaction = 0;
int totalAdded = 0;
var batches = new List<FinancialBatch>();
var batchSummary = new Dictionary<Guid, List<Payment>>();
var initialControlAmounts = new Dictionary<Guid, decimal>();
var allBatchChanges = new Dictionary<Guid, List<string>>();
var allTxnChanges = new Dictionary<Guid, List<string>>();
var txnPersonNames = new Dictionary<Guid, string>();
using ( var rockContext = new RockContext() )
{
var accountService = new FinancialAccountService( rockContext );
var txnService = new FinancialTransactionService( rockContext );
var batchService = new FinancialBatchService( rockContext );
var scheduledTxnService = new FinancialScheduledTransactionService( rockContext );
var contributionTxnType = DefinedValueCache.Read( Rock.SystemGuid.DefinedValue.TRANSACTION_TYPE_CONTRIBUTION.AsGuid() );
var defaultAccount = accountService.Queryable()
.Where( a =>
a.IsActive &&
!a.ParentAccountId.HasValue &&
( !a.StartDate.HasValue || a.StartDate.Value <= RockDateTime.Now ) &&
( !a.EndDate.HasValue || a.EndDate.Value >= RockDateTime.Now )
)
.OrderBy( a => a.Order )
.FirstOrDefault();
var batchTxnChanges = new Dictionary<Guid, List<string>>();
var batchBatchChanges = new Dictionary<Guid, List<string>>();
foreach ( var payment in payments.Where( p => p.Amount > 0.0M ) )
{
totalPayments++;
// Only consider transactions that have not already been added
if ( txnService.GetByTransactionCode( payment.TransactionCode ) == null )
{
var scheduledTransaction = scheduledTxnService.GetByScheduleId( payment.GatewayScheduleId );
if ( scheduledTransaction != null )
{
scheduledTransaction.IsActive = payment.ScheduleActive;
var txnChanges = new List<string>();
var transaction = new FinancialTransaction();
transaction.FinancialPaymentDetail = new FinancialPaymentDetail();
transaction.Guid = Guid.NewGuid();
allTxnChanges.Add( transaction.Guid, txnChanges );
txnChanges.Add( "Created Transaction (Downloaded from Gateway)" );
transaction.TransactionCode = payment.TransactionCode;
History.EvaluateChange( txnChanges, "Transaction Code", string.Empty, transaction.TransactionCode );
transaction.TransactionDateTime = payment.TransactionDateTime;
History.EvaluateChange( txnChanges, "Date/Time", null, transaction.TransactionDateTime );
transaction.ScheduledTransactionId = scheduledTransaction.Id;
transaction.AuthorizedPersonAliasId = scheduledTransaction.AuthorizedPersonAliasId;
History.EvaluateChange( txnChanges, "Person", string.Empty, scheduledTransaction.AuthorizedPersonAlias.Person.FullName );
txnPersonNames.Add( transaction.Guid, scheduledTransaction.AuthorizedPersonAlias.Person.FullName );
transaction.FinancialGatewayId = gateway.Id;
History.EvaluateChange( txnChanges, "Gateway", string.Empty, gateway.Name );
transaction.TransactionTypeValueId = contributionTxnType.Id;
History.EvaluateChange( txnChanges, "Type", string.Empty, contributionTxnType.Value );
var currencyTypeValue = payment.CurrencyTypeValue;
var creditCardTypevalue = payment.CreditCardTypeValue;
if ( scheduledTransaction.FinancialPaymentDetail != null )
{
if ( currencyTypeValue == null && scheduledTransaction.FinancialPaymentDetail.CurrencyTypeValueId.HasValue )
{
currencyTypeValue = DefinedValueCache.Read( scheduledTransaction.FinancialPaymentDetail.CurrencyTypeValueId.Value );
}
if ( creditCardTypevalue == null && scheduledTransaction.FinancialPaymentDetail.CreditCardTypeValueId.HasValue )
{
creditCardTypevalue = DefinedValueCache.Read( scheduledTransaction.FinancialPaymentDetail.CreditCardTypeValueId.Value );
}
transaction.FinancialPaymentDetail.AccountNumberMasked = scheduledTransaction.FinancialPaymentDetail.AccountNumberMasked;
//.........这里部分代码省略.........
示例6: AddFamilyGiving
/// <summary>
/// Adds the family giving records.
/// <param name="elemGiving">The giving element.</param>
/// </summary>
/// <param name="elemGiving">The giving element.</param>
/// <param name="familyName">The family name.</param>
/// <param name="rockContext">The rock context.</param>
private void AddFamilyGiving( XElement elemGiving, string familyName, RockContext rockContext )
{
// return from here if there's not a startGiving date, account amount details or a person Guid.
if ( elemGiving == null || elemGiving.Attribute( "startGiving" ) == null || elemGiving.Attribute( "accountAmount" ) == null || elemGiving.Attribute( "personGuid" ) == null )
{
return;
}
// get some variables we'll need to create the giving records
DateTime startingDate = DateTime.Parse( elemGiving.Attribute( "startGiving" ).Value.Trim(), new CultureInfo( "en-US" ) );
DateTime endDate = RockDateTime.Now;
if ( elemGiving.Attribute( "endGiving" ) != null )
{
DateTime.TryParse( elemGiving.Attribute( "endGiving" ).Value.Trim(), out endDate );
}
else if ( elemGiving.Attribute( "endingGivingWeeksAgo" ) != null )
{
int endingWeeksAgo = 0;
int.TryParse( elemGiving.Attribute( "endingGivingWeeksAgo" ).Value.Trim(), out endingWeeksAgo );
endDate = RockDateTime.Now.AddDays( -7 * endingWeeksAgo );
}
int percentGive = 100;
if ( elemGiving.Attribute( "percentGive" ) != null )
{
int.TryParse( elemGiving.Attribute( "percentGive" ).Value.Trim(), out percentGive );
}
int growRatePercent = 0;
if ( elemGiving.Attribute( "growRatePercent" ) != null )
{
int.TryParse( elemGiving.Attribute( "growRatePercent" ).Value.Trim(), out growRatePercent );
}
int growFrequencyWeeks = 0;
if ( elemGiving.Attribute( "growFrequencyWeeks" ) != null )
{
int.TryParse( elemGiving.Attribute( "growFrequencyWeeks" ).Value.Trim(), out growFrequencyWeeks );
}
int specialGiftPercent = 0;
if ( elemGiving.Attribute( "specialGiftPercent" ) != null )
{
int.TryParse( elemGiving.Attribute( "specialGiftPercent" ).Value.Trim(), out specialGiftPercent );
}
Frequency frequency;
if ( elemGiving.Attribute( "frequency" ) != null )
{
Enum.TryParse( elemGiving.Attribute( "frequency" ).Value.Trim(), out frequency );
}
else
{
frequency = Frequency.weekly;
}
Guid personGuid = elemGiving.Attribute( "personGuid" ).Value.Trim().AsGuid();
// Build a dictionary of FinancialAccount Ids and the amount to give to that account.
Dictionary<int, decimal> accountAmountDict = new Dictionary<int, decimal>();
FinancialAccountService financialAccountService = new FinancialAccountService( rockContext );
var allAccountAmount = elemGiving.Attribute( "accountAmount" ).Value.Trim().Split(',');
foreach ( var item in allAccountAmount )
{
var accountAmount = item.Split(':');
decimal amount;
if ( ! Decimal.TryParse( accountAmount[1], out amount ) )
{
continue; // skip if not a valid decimal
}
var accountName = accountAmount[0].ToLower();
var financialAccount = financialAccountService.Queryable().AsNoTracking().Where( a => a.Name.ToLower() == accountName ).FirstOrDefault();
if ( financialAccount != null )
{
accountAmountDict.Add(financialAccount.Id, amount );
}
else
{
financialAccount = financialAccountService.Queryable().AsNoTracking().First();
}
}
// Build a circular linked list of photos to use for the fake contribution check images
var circularImageList = new LinkedList<string>();
if ( elemGiving.Attribute( "imageUrls" ) != null )
{
var allImageUrls = elemGiving.Attribute( "imageUrls" ).Value.Trim().Split( ',' );
foreach ( var item in allImageUrls )
{
circularImageList.AddLast( item );
}
//.........这里部分代码省略.........
示例7: GetAccounts
/// <summary>
/// Gets the accounts.
/// </summary>
/// <param name="rockContext">The rock context.</param>
/// <returns></returns>
private IQueryable<FinancialAccount> GetAccounts( RockContext rockContext )
{
var accountService = new FinancialAccountService( rockContext );
SortProperty sortProperty = rGridAccount.SortProperty;
var accountQuery = accountService.Queryable();
string accountNameFilter = rAccountFilter.GetUserPreference( "Account Name" );
if ( !string.IsNullOrEmpty( accountNameFilter ) )
{
accountQuery = accountQuery.Where( account => account.Name.Contains( accountNameFilter ) );
}
int campusId = int.MinValue;
if ( int.TryParse( rAccountFilter.GetUserPreference( "Campus" ), out campusId ) )
{
accountQuery = accountQuery.Where( account => account.Campus.Id == campusId );
}
string publicFilter = rAccountFilter.GetUserPreference( "Public" );
if ( !string.IsNullOrWhiteSpace( publicFilter ) )
{
accountQuery = accountQuery.Where( account => ( account.IsPublic ?? false ) == ( publicFilter == "Yes" ) );
}
string activeFilter = rAccountFilter.GetUserPreference( "Active" );
if ( !string.IsNullOrWhiteSpace( activeFilter ) )
{
accountQuery = accountQuery.Where( account => account.IsActive == ( activeFilter == "Yes" ) );
}
string taxDeductibleFilter = rAccountFilter.GetUserPreference( "Tax Deductible" );
if ( !string.IsNullOrWhiteSpace( taxDeductibleFilter ) )
{
accountQuery = accountQuery.Where( account => account.IsTaxDeductible == ( taxDeductibleFilter == "Yes" ) );
}
accountQuery = accountQuery.OrderBy( a => a.Order );
return accountQuery;
}
示例8: AddRegistrationInstances
/// <summary>
/// Adds any registration instances given in the XML file.
/// </summary>
/// <param name="elemRegistrationInstances"></param>
/// <param name="rockContext"></param>
private void AddRegistrationInstances( XElement elemRegistrationInstances, RockContext rockContext )
{
if ( elemRegistrationInstances == null )
{
return;
}
foreach ( var element in elemRegistrationInstances.Elements( "registrationInstance" ) )
{
// skip any illegally formatted items
if ( element.Attribute( "templateGuid" ) == null )
{
continue;
}
// Now find the matching registration template
RegistrationInstanceService registrationInstanceService = new RegistrationInstanceService( rockContext );
RegistrationTemplateService registrationTemplateService = new RegistrationTemplateService( rockContext );
Guid templateGuid = element.Attribute( "templateGuid" ).Value.AsGuid();
var registrationTemplate = registrationTemplateService.Queryable()
.Where( g => g.Guid == templateGuid )
.FirstOrDefault();
if ( registrationTemplate == null )
{
throw new NotSupportedException( string.Format( "unknown registration template: {0}", templateGuid ) );
}
// Merge lava fields
// LAVA additionalReminderDetails
Dictionary<string, object> mergeObjects = new Dictionary<string, object>();
DateTime? registrationStartsDate = null;
DateTime? registrationEndsDate = null;
DateTime? sendReminderDate = null;
var additionalReminderDetails = string.Empty;
var additionalConfirmationDetails = string.Empty;
if ( element.Attribute( "registrationStarts" ) != null )
{
var y = element.Attribute( "registrationStarts" ).Value.ResolveMergeFields( mergeObjects );
registrationStartsDate = DateTime.Parse( y );
}
if ( element.Attribute( "registrationEnds" ) != null )
{
registrationEndsDate = DateTime.Parse( element.Attribute( "registrationEnds" ).Value.ResolveMergeFields( mergeObjects ) );
}
if ( element.Attribute( "sendReminderDate" ) != null )
{
sendReminderDate = DateTime.Parse( element.Attribute( "sendReminderDate" ).Value.ResolveMergeFields( mergeObjects ) );
}
if ( element.Attribute( "additionalReminderDetails" ) != null )
{
additionalReminderDetails = element.Attribute( "additionalReminderDetails" ).Value;
additionalReminderDetails = additionalReminderDetails.ResolveMergeFields( mergeObjects );
}
if ( element.Attribute( "additionalConfirmationDetails" ) != null )
{
additionalConfirmationDetails = element.Attribute( "additionalConfirmationDetails" ).Value;
additionalConfirmationDetails = additionalConfirmationDetails.ResolveMergeFields( mergeObjects );
}
// Get the contact info
int? contactPersonAliasId = null;
if ( element.Attribute( "contactPersonGuid" ) != null )
{
var guid = element.Attribute( "contactPersonGuid" ).Value.AsGuid();
if ( _peopleAliasDictionary.ContainsKey( guid ) )
{
contactPersonAliasId = _peopleAliasDictionary[element.Attribute( "contactPersonGuid" ).Value.AsGuid()];
}
}
// Find the matching account
FinancialAccountService financialGatewayService = new FinancialAccountService( rockContext );
string accountName = element.Attribute( "account" ) != null ? element.Attribute( "account" ).Value : string.Empty;
var account = financialGatewayService.Queryable()
.Where( g => g.Name == accountName )
.FirstOrDefault();
RegistrationInstance registrationInstance = new RegistrationInstance()
{
Guid = ( element.Attribute( "guid" ) != null ) ? element.Attribute( "guid" ).Value.Trim().AsGuid() : Guid.NewGuid(),
Name = ( element.Attribute( "name" ) != null ) ? element.Attribute( "name" ).Value.Trim() : "New " + registrationTemplate.Name,
IsActive = true,
RegistrationTemplateId = registrationTemplate.Id,
StartDateTime = registrationStartsDate,
EndDateTime = registrationEndsDate,
MaxAttendees = element.Attribute( "maxAttendees" ) != null ? element.Attribute( "maxAttendees" ).Value.AsInteger() : 0,
SendReminderDateTime = sendReminderDate,
ContactPersonAliasId = contactPersonAliasId,
//.........这里部分代码省略.........
示例9: BindFilter
/// <summary>
/// Binds the filter.
/// </summary>
private void BindFilter()
{
drpDates.DelimitedValues = gfTransactions.GetUserPreference( "Date Range" );
nbRowLimit.Text = gfTransactions.GetUserPreference( "Row Limit" );
nreAmount.DelimitedValues = gfTransactions.GetUserPreference( "Amount Range" );
tbTransactionCode.Text = gfTransactions.GetUserPreference( "Transaction Code" );
var accountService = new FinancialAccountService( new RockContext() );
ddlAccount.Items.Add( new ListItem( string.Empty, string.Empty ) );
foreach ( FinancialAccount account in accountService.Queryable() )
{
ListItem li = new ListItem( account.Name, account.Id.ToString() );
li.Selected = account.Id.ToString() == gfTransactions.GetUserPreference( "Account" );
ddlAccount.Items.Add( li );
}
BindDefinedTypeDropdown( ddlTransactionType, new Guid( Rock.SystemGuid.DefinedType.FINANCIAL_TRANSACTION_TYPE ), "Transaction Type" );
BindDefinedTypeDropdown( ddlCurrencyType, new Guid( Rock.SystemGuid.DefinedType.FINANCIAL_CURRENCY_TYPE ), "Currency Type" );
BindDefinedTypeDropdown( ddlCreditCardType, new Guid( Rock.SystemGuid.DefinedType.FINANCIAL_CREDIT_CARD_TYPE ), "Credit Card Type" );
BindDefinedTypeDropdown( ddlSourceType, new Guid( Rock.SystemGuid.DefinedType.FINANCIAL_SOURCE_TYPE ), "Source Type" );
}
示例10: MapPledge
/// <summary>
/// Maps the pledge.
/// </summary>
/// <param name="queryable">The queryable.</param>
/// <exception cref="System.NotImplementedException"></exception>
private void MapPledge( IQueryable<Row> tableData )
{
var accountService = new FinancialAccountService();
List<FinancialAccount> importedAccounts = accountService.Queryable().ToList();
List<DefinedValue> pledgeFrequencies = new DefinedValueService().GetByDefinedTypeGuid( new Guid( Rock.SystemGuid.DefinedType.FINANCIAL_FREQUENCY ) ).ToList();
List<FinancialPledge> importedPledges = new FinancialPledgeService().Queryable().ToList();
var newPledges = new List<FinancialPledge>();
int completed = 0;
int totalRows = tableData.Count();
int percentage = ( totalRows - 1 ) / 100 + 1;
ReportProgress( 0, string.Format( "Checking pledge import ({0:N0} found).", totalRows ) );
foreach ( var row in tableData )
{
decimal? amount = row["Total_Pledge"] as decimal?;
DateTime? startDate = row["Start_Date"] as DateTime?;
DateTime? endDate = row["End_Date"] as DateTime?;
if ( amount != null && startDate != null && endDate != null )
{
int? individualId = row["Individual_ID"] as int?;
int? householdId = row["Household_ID"] as int?;
int? personId = GetPersonId( individualId, householdId );
if ( personId != null && !importedPledges.Any( p => p.PersonId == personId && p.TotalAmount == amount && p.StartDate.Equals( startDate ) ) )
{
var pledge = new FinancialPledge();
pledge.CreatedByPersonAliasId = ImportPersonAlias.Id;
pledge.StartDate = (DateTime)startDate;
pledge.EndDate = (DateTime)endDate;
pledge.TotalAmount = (decimal)amount;
string frequency = row["Pledge_Frequency_Name"] as string;
if ( frequency != null )
{
if ( frequency == "One Time" || frequency == "As Can" )
{
pledge.PledgeFrequencyValueId = pledgeFrequencies.FirstOrDefault( f => f.Guid == new Guid( Rock.SystemGuid.DefinedValue.TRANSACTION_FREQUENCY_ONE_TIME ) ).Id;
}
else
{
pledge.PledgeFrequencyValueId = pledgeFrequencies
.Where( f => f.Name.StartsWith( frequency ) || f.Description.StartsWith( frequency ) )
.Select( f => f.Id ).FirstOrDefault();
}
}
string fundName = row["Fund_Name"] as string;
string subFund = row["Sub_Fund_Name"] as string;
if ( fundName != null )
{
FinancialAccount matchingAccount = null;
int? fundCampusId = null;
if ( subFund != null )
{
// match by campus if the subfund appears to be a campus
fundCampusId = CampusList.Where( c => c.Name.StartsWith( subFund ) || c.ShortCode == subFund )
.Select( c => (int?)c.Id ).FirstOrDefault();
if ( fundCampusId != null )
{
matchingAccount = importedAccounts.FirstOrDefault( a => a.Name.StartsWith( fundName ) && a.CampusId != null && a.CampusId.Equals( fundCampusId ) );
}
else
{
matchingAccount = importedAccounts.FirstOrDefault( a => a.Name.StartsWith( fundName ) && a.Name.StartsWith( subFund ) );
}
}
else
{
matchingAccount = importedAccounts.FirstOrDefault( a => a.Name.StartsWith( fundName ) );
}
if ( matchingAccount == null )
{
matchingAccount = new FinancialAccount();
matchingAccount.Name = fundName;
matchingAccount.PublicName = fundName;
matchingAccount.IsTaxDeductible = true;
matchingAccount.IsActive = true;
matchingAccount.CampusId = fundCampusId;
matchingAccount.CreatedByPersonAliasId = ImportPersonAlias.Id;
accountService.Add( matchingAccount );
accountService.Save( matchingAccount );
importedAccounts.Add( matchingAccount );
pledge.AccountId = matchingAccount.Id;
}
}
// Attributes to add?
// Pledge_Drive_Name
//.........这里部分代码省略.........
示例11: MapContribution
/// <summary>
/// Maps the contribution.
/// </summary>
/// <param name="tableData">The table data.</param>
/// <param name="selectedColumns">The selected columns.</param>
private void MapContribution( IQueryable<Row> tableData, List<string> selectedColumns = null )
{
int transactionEntityTypeId = EntityTypeCache.Read( "Rock.Model.FinancialTransaction" ).Id;
var accountService = new FinancialAccountService();
var attributeService = new AttributeService();
var transactionTypeContributionId = DefinedValueCache.Read( new Guid( Rock.SystemGuid.DefinedValue.TRANSACTION_TYPE_CONTRIBUTION ) ).Id;
int currencyTypeACH = DefinedValueCache.Read( new Guid( Rock.SystemGuid.DefinedValue.CURRENCY_TYPE_ACH ) ).Id;
int currencyTypeCash = DefinedValueCache.Read( new Guid( Rock.SystemGuid.DefinedValue.CURRENCY_TYPE_CASH ) ).Id;
int currencyTypeCheck = DefinedValueCache.Read( new Guid( Rock.SystemGuid.DefinedValue.CURRENCY_TYPE_CHECK ) ).Id;
int currencyTypeCreditCard = DefinedValueCache.Read( new Guid( Rock.SystemGuid.DefinedValue.CURRENCY_TYPE_CREDIT_CARD ) ).Id;
List<DefinedValue> refundReasons = new DefinedValueService().Queryable().Where( dv => dv.DefinedType.Guid == new Guid( Rock.SystemGuid.DefinedType.FINANCIAL_TRANSACTION_REFUND_REASON ) ).ToList();
List<FinancialPledge> pledgeList = new FinancialPledgeService().Queryable().ToList();
List<FinancialAccount> accountList = accountService.Queryable().ToList();
// Add an Attribute for the unique F1 Contribution Id
int contributionAttributeId = attributeService.Queryable().Where( a => a.EntityTypeId == transactionEntityTypeId
&& a.Key == "F1ContributionId" ).Select( a => a.Id ).FirstOrDefault();
if ( contributionAttributeId == 0 )
{
var newContributionAttribute = new Rock.Model.Attribute();
newContributionAttribute.Key = "F1ContributionId";
newContributionAttribute.Name = "F1 Contribution Id";
newContributionAttribute.FieldTypeId = IntegerFieldTypeId;
newContributionAttribute.EntityTypeId = transactionEntityTypeId;
newContributionAttribute.EntityTypeQualifierValue = string.Empty;
newContributionAttribute.EntityTypeQualifierColumn = string.Empty;
newContributionAttribute.Description = "The FellowshipOne identifier for the contribution that was imported";
newContributionAttribute.DefaultValue = string.Empty;
newContributionAttribute.IsMultiValue = false;
newContributionAttribute.IsRequired = false;
newContributionAttribute.Order = 0;
attributeService.Add( newContributionAttribute, ImportPersonAlias );
attributeService.Save( newContributionAttribute, ImportPersonAlias );
contributionAttributeId = newContributionAttribute.Id;
}
var contributionAttribute = AttributeCache.Read( contributionAttributeId );
// Get all imported contributions
var importedContributions = new AttributeValueService().GetByAttributeId( contributionAttributeId )
.Select( av => new { ContributionId = av.Value.AsType<int?>(), TransactionId = av.EntityId } )
.ToDictionary( t => t.ContributionId, t => t.TransactionId );
// List for batching new contributions
var newTransactions = new List<FinancialTransaction>();
int completed = 0;
int totalRows = tableData.Count();
int percentage = ( totalRows - 1 ) / 100 + 1;
ReportProgress( 0, string.Format( "Checking contribution import ({0:N0} found, {1:N0} already exist).", totalRows, importedContributions.Count() ) );
foreach ( var row in tableData )
{
int? individualId = row["Individual_ID"] as int?;
int? householdId = row["Household_ID"] as int?;
int? contributionId = row["ContributionID"] as int?;
if ( contributionId != null && !importedContributions.ContainsKey( contributionId ) )
{
var transaction = new FinancialTransaction();
transaction.TransactionTypeValueId = transactionTypeContributionId;
transaction.AuthorizedPersonId = GetPersonId( individualId, householdId );
transaction.CreatedByPersonAliasId = ImportPersonAlias.Id;
transaction.AuthorizedPersonId = GetPersonId( individualId, householdId );
string summary = row["Memo"] as string;
if ( summary != null )
{
transaction.Summary = summary;
}
int? batchId = row["BatchID"] as int?;
if ( batchId != null && ImportedBatches.Any( b => b.Key == batchId ) )
{
transaction.BatchId = ImportedBatches.FirstOrDefault( b => b.Key == batchId ).Value;
}
DateTime? receivedDate = row["Received_Date"] as DateTime?;
if ( receivedDate != null )
{
transaction.TransactionDateTime = receivedDate;
transaction.CreatedDateTime = receivedDate;
}
bool isTypeNonCash = false;
string contributionType = row["Contribution_Type_Name"] as string;
if ( contributionType != null )
{
if ( contributionType == "ACH" )
{
//.........这里部分代码省略.........
示例12: BindFilter
/// <summary>
/// Binds the filter.
/// </summary>
private void BindFilter()
{
nreAmount.DelimitedValues = gfSettings.GetUserPreference( "Amount" );
ddlFrequency.BindToDefinedType( DefinedTypeCache.Read( Rock.SystemGuid.DefinedType.FINANCIAL_FREQUENCY.AsGuid() ) );
ddlFrequency.Items.Insert( 0, new ListItem( string.Empty, string.Empty ) );
string freqPreference = gfSettings.GetUserPreference( "Frequency" );
if ( !string.IsNullOrWhiteSpace( freqPreference ))
{
ddlFrequency.SetValue( freqPreference );
}
drpDates.DelimitedValues = gfSettings.GetUserPreference( "Created" );
var accountService = new FinancialAccountService( new RockContext() );
var accounts = accountService
.Queryable().AsNoTracking()
.Where( a => a.IsActive );
ddlAccount.Items.Add( new ListItem( string.Empty, string.Empty ) );
foreach ( FinancialAccount account in accounts.OrderBy( a => a.Order ) )
{
ListItem li = new ListItem( account.Name, account.Id.ToString() );
li.Selected = account.Id.ToString() == gfSettings.GetUserPreference( "Account" );
ddlAccount.Items.Add( li );
}
cbIncludeInactive.Checked = !string.IsNullOrWhiteSpace( gfSettings.GetUserPreference( "Include Inactive" ) );
}