private void UpdateBatchUI( FinancialBatch selectedBatch )
{
if ( selectedBatch == null )
{
grdBatchItems.DataContext = null;
DisplayTransactionCount();
HideBatch();
return;
}
else
{
ShowBatch( false );
}
RockConfig rockConfig = RockConfig.Load();
RockRestClient client = new RockRestClient( rockConfig.RockBaseUrl );
client.Login( rockConfig.Username, rockConfig.Password );
SelectedFinancialBatch = selectedBatch;
lblBatchNameReadOnly.Content = selectedBatch.Name;
lblBatchIdReadOnly.Content = string.Format( "Batch Id: {0}", selectedBatch.Id );
lblBatchCampusReadOnly.Content = selectedBatch.CampusId.HasValue ? client.GetData<Campus>( string.Format( "api/Campuses/{0}", selectedBatch.CampusId ?? 0 ) ).Name : string.Empty;
lblBatchDateReadOnly.Content = selectedBatch.BatchStartDateTime.Value.ToString( "d" );
var createdByPerson = client.GetData<Person>( string.Format( "api/People/GetByPersonAliasId/{0}", selectedBatch.CreatedByPersonAliasId ?? 0 ) );
if ( createdByPerson != null )
{
lblBatchCreatedByReadOnly.Content = string.Format("{0} {1}", createdByPerson.NickName, createdByPerson.LastName);
}
else
{
lblBatchCreatedByReadOnly.Content = string.Empty;
}
lblBatchControlAmountReadOnly.Content = selectedBatch.ControlAmount.ToString( "F" );
txtBatchName.Text = selectedBatch.Name;
if ( selectedBatch.CampusId.HasValue )
{
cbCampus.SelectedValue = selectedBatch.CampusId;
}
else
{
cbCampus.SelectedValue = 0;
}
dpBatchDate.SelectedDate = selectedBatch.BatchStartDateTime;
lblCreatedBy.Content = lblBatchCreatedByReadOnly.Content as string;
txtControlAmount.Text = selectedBatch.ControlAmount.ToString( "F" );
txtNote.Text = selectedBatch.Note;
// start a background thread to download transactions since this could take a little while and we want a Wait cursor
BackgroundWorker bw = new BackgroundWorker();
Rock.Wpf.WpfHelper.FadeOut( lblCount, 0 );
lblCount.Content = "Loading...";
Rock.Wpf.WpfHelper.FadeIn( lblCount, 300 );
List<FinancialTransaction> transactions = null;
grdBatchItems.DataContext = null;
bw.DoWork += delegate( object s, DoWorkEventArgs ee )
{
ee.Result = null;
transactions = client.GetData<List<FinancialTransaction>>( "api/FinancialTransactions/", string.Format( "BatchId eq {0}", selectedBatch.Id ) );
};
bw.RunWorkerCompleted += delegate( object s, RunWorkerCompletedEventArgs ee )
{
this.Cursor = null;
foreach ( var transaction in transactions )
{
if ( transaction.FinancialPaymentDetailId.HasValue )
{
transaction.FinancialPaymentDetail = transaction.FinancialPaymentDetail ?? client.GetData<FinancialPaymentDetail>( string.Format( "api/FinancialPaymentDetails/{0}", transaction.FinancialPaymentDetailId ?? 0 ) );
if ( transaction.FinancialPaymentDetail != null )
{
transaction.FinancialPaymentDetail.CurrencyTypeValue = this.CurrencyValueList.FirstOrDefault( a => a.Id == transaction.FinancialPaymentDetail.CurrencyTypeValueId );
}
}
}
// sort starting with most recent first
var bindingList = new BindingList<FinancialTransaction>( transactions.OrderByDescending( a => a.CreatedDateTime ).ToList() );
bindingList.RaiseListChangedEvents = true;
bindingList.ListChanged += bindingList_ListChanged;
grdBatchItems.DataContext = bindingList;
DisplayTransactionCount();
};
this.Cursor = Cursors.Wait;
bw.RunWorkerAsync();
}