/// <summary> /// Creates the child controls. /// </summary> /// <returns></returns> public override Control[] CreateChildControls( Type entityType, FilterField filterControl ) { AccountPicker accountPicker = new AccountPicker(); accountPicker.AllowMultiSelect = true; accountPicker.ID = filterControl.ID + "_accountPicker"; accountPicker.AddCssClass( "js-account-picker" ); accountPicker.Label = "Accounts"; filterControl.Controls.Add( accountPicker ); DateRangePicker dateRangePicker = new DateRangePicker(); dateRangePicker.ID = filterControl.ID + "_2"; dateRangePicker.Label = "Date Range"; dateRangePicker.Required = true; filterControl.Controls.Add( dateRangePicker ); var controls = new Control[2] { accountPicker, dateRangePicker }; return controls; }
private List<ContentChannelItem> GetItems( RockContext rockContext, ContentChannel selectedChannel, out bool isFiltered ) { isFiltered = false; var items = new List<ContentChannelItem>(); var itemQry = new ContentChannelItemService( rockContext ).Queryable() .Where( i => i.ContentChannelId == selectedChannel.Id ); var drp = new DateRangePicker(); drp.DelimitedValues = gfFilter.GetUserPreference( "Date Range" ); if ( drp.LowerValue.HasValue ) { isFiltered = true; if ( selectedChannel.ContentChannelType.DateRangeType == ContentChannelDateType.SingleDate ) { itemQry = itemQry.Where( i => i.StartDateTime >= drp.LowerValue.Value ); } else { itemQry = itemQry.Where( i => i.ExpireDateTime.HasValue && i.ExpireDateTime.Value >= drp.LowerValue.Value ); } } if ( drp.UpperValue.HasValue ) { isFiltered = true; DateTime upperDate = drp.UpperValue.Value.Date.AddDays( 1 ); itemQry = itemQry.Where( i => i.StartDateTime <= upperDate ); } var status = gfFilter.GetUserPreference( "Status" ).ConvertToEnumOrNull<ContentChannelItemStatus>(); if ( status.HasValue ) { isFiltered = true; itemQry = itemQry.Where( i => i.Status == status ); } string title = gfFilter.GetUserPreference( "Title" ); if ( !string.IsNullOrWhiteSpace( title ) ) { isFiltered = true; itemQry = itemQry.Where( i => i.Title.Contains( title ) ); } int? personId = gfFilter.GetUserPreference( "Created By" ).AsIntegerOrNull(); if ( personId.HasValue && personId.Value != 0 ) { isFiltered = true; itemQry = itemQry.Where( i => i.CreatedByPersonAlias.PersonId == personId ); } // Filter query by any configured attribute filters if ( AvailableAttributes != null && AvailableAttributes.Any() ) { var attributeValueService = new AttributeValueService( rockContext ); var parameterExpression = attributeValueService.ParameterExpression; foreach ( var attribute in AvailableAttributes ) { var filterControl = phAttributeFilters.FindControl( "filter_" + attribute.Id.ToString() ); if ( filterControl != null ) { var filterValues = attribute.FieldType.Field.GetFilterValues( filterControl, attribute.QualifierValues, Rock.Reporting.FilterMode.SimpleFilter ); var expression = attribute.FieldType.Field.AttributeFilterExpression( attribute.QualifierValues, filterValues, parameterExpression ); if ( expression != null ) { var attributeValues = attributeValueService .Queryable() .Where( v => v.Attribute.Id == attribute.Id ); attributeValues = attributeValues.Where( parameterExpression, expression, null ); isFiltered = true; itemQry = itemQry.Where( w => attributeValues.Select( v => v.EntityId ).Contains( w.Id ) ); } } } } foreach ( var item in itemQry.ToList() ) { if ( item.IsAuthorized( Rock.Security.Authorization.VIEW, CurrentPerson ) ) { items.Add( item ); } else { isFiltered = true; } } if ( selectedChannel.ItemsManuallyOrdered && !isFiltered ) { return items.OrderBy( i => i.Order ).ToList(); } else { return items; } }
private void GetData() { var rockContext = new RockContext(); var itemService = new ContentChannelItemService(rockContext); int personId = CurrentPerson != null ? CurrentPerson.Id : 0; // Get all of the content channels var allChannels = new ContentChannelService( rockContext ).Queryable( "ContentChannelType" ) .OrderBy( w => w.Name ) .ToList(); // Create variable for storing authorized channels and the count of active items var channelCounts = new Dictionary<int, int>(); foreach ( var channel in allChannels ) { if ( channel.IsAuthorized( Authorization.VIEW, CurrentPerson)) { channelCounts.Add( channel.Id, 0); } } // Get the pending item counts for each channel itemService.Queryable() .Where( i => channelCounts.Keys.Contains( i.ContentChannelId ) && i.Status == ContentChannelItemStatus.PendingApproval ) .GroupBy( i => i.ContentChannelId ) .Select( i => new { Id = i.Key, Count = i.Count() }) .ToList() .ForEach( i => channelCounts[i.Id] = i.Count ); // Create a query to return channel, the count of items, and the selected class var qry = allChannels .Where( c => channelCounts.Keys.Contains( c.Id ) ) .Select( c => new { Channel = c, Count = channelCounts[c.Id], Class = ( SelectedChannelId.HasValue && SelectedChannelId.Value == c.Id ) ? "active" : "" } ); // If displaying active only, update query to exclude those content channels without any items if ( StatusFilter.HasValue && StatusFilter.Value ) { qry = qry.Where( c => c.Count > 0 ); } var contentChannels = qry.ToList(); rptChannels.DataSource = contentChannels; rptChannels.DataBind(); ContentChannel selectedChannel = null; if ( SelectedChannelId.HasValue ) { selectedChannel = allChannels .Where( w => w.Id == SelectedChannelId.Value && channelCounts.Keys.Contains( SelectedChannelId.Value ) ) .FirstOrDefault(); } if ( selectedChannel != null && contentChannels.Count > 0 ) { // show the content item panel divItemPanel.Visible = true; AddColumns( selectedChannel ); var itemQry = itemService.Queryable() .Where( i => i.ContentChannelId == selectedChannel.Id ); var drp = new DateRangePicker(); drp.DelimitedValues = gfFilter.GetUserPreference( "Date Range" ); if ( drp.LowerValue.HasValue ) { if ( selectedChannel.ContentChannelType.DateRangeType == ContentChannelDateType.SingleDate ) { itemQry = itemQry.Where( i => i.StartDateTime >= drp.LowerValue.Value ); } else { itemQry = itemQry.Where( i => i.ExpireDateTime.HasValue && i.ExpireDateTime.Value >= drp.LowerValue.Value ); } } if ( drp.UpperValue.HasValue ) { DateTime upperDate = drp.UpperValue.Value.Date.AddDays( 1 ); itemQry = itemQry.Where( i => i.StartDateTime < upperDate ); } var status = gfFilter.GetUserPreference( "Status" ).ConvertToEnumOrNull<ContentChannelItemStatus>(); if ( status.HasValue ) { itemQry = itemQry.Where( i => i.Status == status ); } string title = gfFilter.GetUserPreference( "Title" ); if (!string.IsNullOrWhiteSpace(title)) { itemQry = itemQry.Where( i => i.Title.Contains( title ) ); } var items = new List<ContentChannelItem>(); foreach ( var item in itemQry.ToList() ) { if ( item.IsAuthorized( Rock.Security.Authorization.VIEW, CurrentPerson ) ) { items.Add( item ); } } SortProperty sortProperty = gContentChannelItems.SortProperty; if ( sortProperty != null ) { items = items.AsQueryable().Sort( sortProperty ).ToList(); } else { items = items.OrderByDescending( p => p.StartDateTime ).ToList(); } gContentChannelItems.ObjectList = new Dictionary<string, object>(); items.ForEach( i => gContentChannelItems.ObjectList.Add( i.Id.ToString(), i ) ); gContentChannelItems.DataSource = items.Select( i => new { i.Id, i.Guid, i.Title, i.StartDateTime, i.ExpireDateTime, i.Priority, Status = DisplayStatus( i.Status ) } ).ToList(); gContentChannelItems.DataBind(); lContentChannelItems.Text = selectedChannel.Name + " Items"; } else { divItemPanel.Visible = false; } }
/// <summary> /// Binds the grid. /// </summary> private void BindGrid( bool isExporting = false ) { _currencyTypes = new Dictionary<int,string>(); _creditCardTypes = new Dictionary<int,string>(); // If configured for a registration and registration is null, return int registrationEntityTypeId = EntityTypeCache.Read( typeof( Rock.Model.Registration ) ).Id; if ( ContextTypesRequired.Any( e => e.Id == registrationEntityTypeId ) && _registration == null ) { return; } // If configured for a person and person is null, return int personEntityTypeId = EntityTypeCache.Read( "Rock.Model.Person" ).Id; if ( ContextTypesRequired.Any( e => e.Id == personEntityTypeId ) && _person == null ) { return; } // If configured for a batch and batch is null, return int batchEntityTypeId = EntityTypeCache.Read( "Rock.Model.FinancialBatch" ).Id; if ( ContextTypesRequired.Any( e => e.Id == batchEntityTypeId ) && _batch == null ) { return; } // If configured for a batch and batch is null, return int scheduledTxnEntityTypeId = EntityTypeCache.Read( "Rock.Model.FinancialScheduledTransaction" ).Id; if ( ContextTypesRequired.Any( e => e.Id == scheduledTxnEntityTypeId ) && _scheduledTxn == null ) { return; } // Qry var rockContext = new RockContext(); var qry = new FinancialTransactionService( rockContext ).Queryable(); // Transaction Types var transactionTypeValueIdList = GetAttributeValue( "TransactionTypes" ).SplitDelimitedValues().AsGuidList().Select( a => DefinedValueCache.Read( a ) ).Where( a => a != null ).Select( a => a.Id ).ToList(); if ( transactionTypeValueIdList.Any() ) { qry = qry.Where( t => transactionTypeValueIdList.Contains( t.TransactionTypeValueId ) ); } // Set up the selection filter if ( _batch != null ) { // If transactions are for a batch, the filter is hidden so only check the batch id qry = qry.Where( t => t.BatchId.HasValue && t.BatchId.Value == _batch.Id ); // If the batch is closed, do not allow any editing of the transactions if ( _batch.Status != BatchStatus.Closed && _canEdit ) { gTransactions.IsDeleteEnabled = _canEdit; } else { gTransactions.IsDeleteEnabled = false; } } else if ( _scheduledTxn != null ) { // If transactions are for a batch, the filter is hidden so only check the batch id qry = qry.Where( t => t.ScheduledTransactionId.HasValue && t.ScheduledTransactionId.Value == _scheduledTxn.Id ); gTransactions.IsDeleteEnabled = false; } else if ( _registration != null ) { qry = qry .Where( t => t.TransactionDetails .Any( d => d.EntityTypeId.HasValue && d.EntityTypeId.Value == registrationEntityTypeId && d.EntityId.HasValue && d.EntityId.Value == _registration.Id ) ); gTransactions.IsDeleteEnabled = false; } else // Person { // otherwise set the selection based on filter settings if ( _person != null ) { // get the transactions for the person or all the members in the person's giving group (Family) qry = qry.Where( t => t.AuthorizedPersonAlias.Person.GivingId == _person.GivingId ); } // Date Range var drp = new DateRangePicker(); drp.DelimitedValues = gfTransactions.GetUserPreference( "Date Range" ); if ( drp.LowerValue.HasValue ) { qry = qry.Where( t => t.TransactionDateTime >= drp.LowerValue.Value ); } if ( drp.UpperValue.HasValue ) { DateTime upperDate = drp.UpperValue.Value.Date.AddDays( 1 ); qry = qry.Where( t => t.TransactionDateTime < upperDate ); } // Amount Range var nre = new NumberRangeEditor(); nre.DelimitedValues = gfTransactions.GetUserPreference( "Amount Range" ); if ( nre.LowerValue.HasValue ) { qry = qry.Where( t => t.TransactionDetails.Sum( d => d.Amount ) >= nre.LowerValue.Value ); } if ( nre.UpperValue.HasValue ) { qry = qry.Where( t => t.TransactionDetails.Sum( d => d.Amount ) <= nre.UpperValue.Value ); } // Transaction Code string transactionCode = gfTransactions.GetUserPreference( "Transaction Code" ); if ( !string.IsNullOrWhiteSpace( transactionCode ) ) { qry = qry.Where( t => t.TransactionCode == transactionCode.Trim() ); } // Account Id var accountIds = (gfTransactions.GetUserPreference( "Account" ) ?? "").SplitDelimitedValues().AsIntegerList().Where( a => a > 0 ).ToList(); { if ( accountIds.Any() ) { qry = qry.Where( t => t.TransactionDetails.Any( d => accountIds.Contains( d.AccountId ) || (d.Account.ParentAccountId.HasValue && accountIds.Contains(d.Account.ParentAccountId.Value) ) ) ); } } // Transaction Type int transactionTypeId = int.MinValue; if ( int.TryParse( gfTransactions.GetUserPreference( "Transaction Type" ), out transactionTypeId ) ) { qry = qry.Where( t => t.TransactionTypeValueId == transactionTypeId ); } // Currency Type int currencyTypeId = int.MinValue; if ( int.TryParse( gfTransactions.GetUserPreference( "Currency Type" ), out currencyTypeId ) ) { qry = qry.Where( t => t.FinancialPaymentDetail != null && t.FinancialPaymentDetail.CurrencyTypeValueId == currencyTypeId ); } // Credit Card Type int creditCardTypeId = int.MinValue; if ( int.TryParse( gfTransactions.GetUserPreference( "Credit Card Type" ), out creditCardTypeId ) ) { qry = qry.Where( t => t.FinancialPaymentDetail != null && t.FinancialPaymentDetail.CreditCardTypeValueId == creditCardTypeId ); } // Source Type int sourceTypeId = int.MinValue; if ( int.TryParse( gfTransactions.GetUserPreference( "Source Type" ), out sourceTypeId ) ) { qry = qry.Where( t => t.SourceTypeValueId == sourceTypeId ); } // Campus if ( this.ContextEntity() == null ) { var campus = CampusCache.Read( gfTransactions.GetUserPreference( "Campus" ).AsInteger() ); if ( campus != null ) { qry = qry.Where( b => b.Batch != null && b.Batch.CampusId == campus.Id ); } } } SortProperty sortProperty = gTransactions.SortProperty; if ( sortProperty != null ) { if ( sortProperty.Property == "TotalAmount" ) { if ( sortProperty.Direction == SortDirection.Ascending ) { qry = qry.OrderBy( t => t.TransactionDetails.Sum( d => (decimal?)d.Amount ) ?? 0.00M ); } else { qry = qry.OrderByDescending( t => t.TransactionDetails.Sum( d => (decimal?)d.Amount ) ?? 0.0M ); } } else { qry = qry.Sort( sortProperty ); } } else { // Default sort by Id if the transations are seen via the batch, // otherwise sort by descending date time. if ( ContextTypesRequired.Any( e => e.Id == batchEntityTypeId ) ) { qry = qry.OrderBy( t => t.Id ); } else { qry = qry.OrderByDescending( t => t.TransactionDateTime ).ThenByDescending( t => t.Id ); } } var lTransactionImageField = gTransactions.ColumnsOfType<RockLiteralField>().FirstOrDefault( a => a.ID == "lTransactionImage" ); var summaryField = gTransactions.ColumnsOfType<RockBoundField>().FirstOrDefault( a => a.DataField == "Summary" ); var showImages = bddlOptions.SelectedValue.AsIntegerOrNull() == 1; if ( lTransactionImageField != null) { lTransactionImageField.Visible = showImages; } if ( summaryField != null ) { summaryField.Visible = !showImages; } if ( showImages ) { qry = qry.Include( a => a.Images ); } _isExporting = isExporting; gTransactions.SetLinqDataSource( qry.AsNoTracking() ); gTransactions.DataBind(); _isExporting = false; if ( _batch == null && _scheduledTxn == null && _registration == null && _person == null ) { pnlSummary.Visible = true; // No context - show account summary var qryTransactionDetails = qry.SelectMany( a => a.TransactionDetails ); var qryFinancialAccount = new FinancialAccountService( rockContext ).Queryable(); var accountSummaryQry = qryTransactionDetails.GroupBy( a => a.AccountId ).Select( a => new { AccountId = a.Key, TotalAmount = (decimal?)a.Sum( d => d.Amount ) } ).Join( qryFinancialAccount, k1 => k1.AccountId, k2 => k2.Id, ( td, fa ) => new { td.TotalAmount, fa.Name, fa.Order } ) .OrderBy( a => a.Order ); var summaryList = accountSummaryQry.ToList(); var grandTotalAmount = ( summaryList.Count > 0 ) ? summaryList.Sum( a => a.TotalAmount ?? 0 ) : 0; lGrandTotal.Text = grandTotalAmount.FormatAsCurrency(); rptAccountSummary.DataSource = summaryList.Select( a => new { a.Name, TotalAmount = a.TotalAmount.FormatAsCurrency() } ).ToList(); rptAccountSummary.DataBind(); } else { pnlSummary.Visible = false; } }
/// <summary> /// Binds the grid. /// </summary> private void BindGrid() { if (Person != null) { var familyIds = families.Select( f => f.Key ).ToList(); var qry = new HistoryService( new RockContext() ).Queryable( "CreatedByPersonAlias.Person" ) .Where( h => ( h.EntityTypeId == personEntityTypeId && h.EntityId == Person.Id ) || ( h.EntityTypeId == groupEntityTypeId && familyIds.Contains( h.EntityId ) ) ); int categoryId = int.MinValue; if (int.TryParse(gfSettings.GetUserPreference("Category"), out categoryId)) { qry = qry.Where( h => h.CategoryId == categoryId); } string summary = gfSettings.GetUserPreference("Summary Contains"); if (!string.IsNullOrWhiteSpace(summary)) { qry = qry.Where( h => h.Summary.Contains( summary ) ); } int personId = int.MinValue; if ( int.TryParse( gfSettings.GetUserPreference( "Who" ), out personId ) ) { qry = qry.Where( h => h.CreatedByPersonAlias.PersonId == personId ); } var drp = new DateRangePicker(); drp.DelimitedValues = gfSettings.GetUserPreference( "Date Range" ); if ( drp.LowerValue.HasValue ) { qry = qry.Where( h => h.CreatedDateTime >= drp.LowerValue.Value ); } if ( drp.UpperValue.HasValue ) { DateTime upperDate = drp.UpperValue.Value.Date.AddDays( 1 ); qry = qry.Where( h => h.CreatedDateTime < upperDate ); } SortProperty sortProperty = gHistory.SortProperty; if ( sortProperty != null ) { qry = qry.Sort( sortProperty ); } else { qry = qry.OrderByDescending( t => t.CreatedDateTime ); } // Combine history records that were saved at the same time var histories = new List<History>(); foreach(var history in qry) { var existingHistory = histories .Where( h => h.CreatedByPersonAliasId == history.CreatedByPersonAliasId && h.CreatedDateTime == history.CreatedDateTime && h.EntityTypeId == history.EntityTypeId && h.EntityId == history.EntityId && h.CategoryId == history.CategoryId && h.RelatedEntityTypeId == history.RelatedEntityTypeId && h.RelatedEntityId == history.RelatedEntityId ).FirstOrDefault(); if (existingHistory != null) { existingHistory.Summary += "<br/>" + history.Summary; } else { histories.Add(history); } } gHistory.DataSource = histories.Select( h => new { Id = h.Id, CategoryId = h.CategoryId, Category = h.Category != null ? h.Category.Name : "", EntityTypeId = h.EntityTypeId, EntityId = h.EntityId, Caption = h.Caption ?? string.Empty, Summary = h.Summary, RelatedEntityTypeId = h.RelatedEntityTypeId ?? 0, RelatedEntityId = h.RelatedEntityId ?? 0, CreatedByPersonId = h.CreatedByPersonAlias != null ? h.CreatedByPersonAlias.PersonId : 0, PersonName = h.CreatedByPersonAlias != null && h.CreatedByPersonAlias.Person != null ? h.CreatedByPersonAlias.Person.NickName + " " + h.CreatedByPersonAlias.Person.LastName : "", CreatedDateTime = h.CreatedDateTime } ).ToList(); gHistory.DataBind(); } }
private List<BatchRow> GetData() { var batchService = new FinancialBatchService( new RockContext() ); var qry = batchService.Queryable() .Where( b => b.BatchStartDateTime.HasValue ); // filter by date string dateRangeValue = gfBatchFilter.GetUserPreference( "Date Range" ); if ( !string.IsNullOrWhiteSpace( dateRangeValue ) ) { var drp = new DateRangePicker(); drp.DelimitedValues = dateRangeValue; if ( drp.LowerValue.HasValue ) { qry = qry.Where( b => b.BatchStartDateTime >= drp.LowerValue ); } if ( drp.UpperValue.HasValue ) { var endOfDay = drp.UpperValue.Value.AddDays( 1 ); qry = qry.Where( b => b.BatchStartDateTime < drp.UpperValue ); } } // filter by status var status = gfBatchFilter.GetUserPreference( "Status" ).ConvertToEnumOrNull<BatchStatus>(); if ( status.HasValue ) { qry = qry.Where( b => b.Status == status ); } // filter by title string title = gfBatchFilter.GetUserPreference( "Title" ); if ( !string.IsNullOrEmpty( title ) ) { qry = qry.Where( batch => batch.Name.StartsWith( title ) ); } // filter by accounting code if ( tbAccountingCode.Visible ) { string accountingCode = gfBatchFilter.GetUserPreference( "Accounting Code" ); if ( !string.IsNullOrEmpty( accountingCode ) ) { qry = qry.Where( batch => batch.AccountingSystemCode.StartsWith( accountingCode ) ); } } // filter by campus var campus = CampusCache.Read( gfBatchFilter.GetUserPreference( "Campus" ).AsInteger() ); if ( campus != null ) { qry = qry.Where( b => b.CampusId == campus.Id ); } IOrderedQueryable<FinancialBatch> sortedQry = null; SortProperty sortProperty = gBatchList.SortProperty; if ( sortProperty != null ) { switch ( sortProperty.Property ) { case "TransactionCount": { if ( sortProperty.Direction == SortDirection.Ascending ) { sortedQry = qry.OrderBy( b => b.Transactions.Count() ); } else { sortedQry = qry.OrderByDescending( b => b.Transactions.Count() ); } break; } case "TransactionAmount": { if ( sortProperty.Direction == SortDirection.Ascending ) { sortedQry = qry.OrderBy( b => b.Transactions.Sum( t => (decimal?)( t.TransactionDetails.Sum( d => (decimal?)d.Amount ) ?? 0.0M ) ) ?? 0.0M ); } else { sortedQry = qry.OrderByDescending( b => b.Transactions.Sum( t => (decimal?)( t.TransactionDetails.Sum( d => (decimal?)d.Amount ) ?? 0.0M ) ) ?? 0.0M ); } break; } default: { sortedQry = qry.Sort( sortProperty ); break; } } } else { sortedQry = qry .OrderByDescending( b => b.BatchStartDateTime ) .ThenBy( b => b.Name ); } return sortedQry .Select( b => new BatchRow { Id = b.Id, BatchStartDateTime = b.BatchStartDateTime.Value, Name = b.Name, AccountingSystemCode = b.AccountingSystemCode, TransactionCount = b.Transactions.Count(), TransactionAmount = b.Transactions.Sum( t => (decimal?)( t.TransactionDetails.Sum( d => (decimal?)d.Amount ) ?? 0.0M ) ) ?? 0.0M, ControlAmount = b.ControlAmount, CampusName = b.Campus != null ? b.Campus.Name : "", Status = b.Status, UnMatchedTxns = b.Transactions.Any( t => !t.AuthorizedPersonAliasId.HasValue ) } ) .ToList(); }
/// <summary> /// Binds the grid. /// </summary> private void BindGrid() { if ( _channelId.HasValue ) { ContentChannelItemService contentItemService = new ContentChannelItemService( new RockContext() ); var contentItems = contentItemService.Queryable() .Where( c => c.ContentChannelId == _channelId.Value ); var drp = new DateRangePicker(); drp.DelimitedValues = gfFilter.GetUserPreference( "Date Range" ); if ( drp.LowerValue.HasValue ) { contentItems = contentItems.Where( i => ( i.ExpireDateTime.HasValue && i.ExpireDateTime.Value >= drp.LowerValue.Value ) || ( !i.ExpireDateTime.HasValue && i.StartDateTime >= drp.LowerValue.Value ) ); } if ( drp.UpperValue.HasValue ) { DateTime upperDate = drp.UpperValue.Value.Date.AddDays( 1 ); contentItems = contentItems.Where( i => i.StartDateTime <= upperDate ); } var status = gfFilter.GetUserPreference( "Status" ).ConvertToEnumOrNull<ContentChannelItemStatus>(); if ( status.HasValue ) { contentItems = contentItems.Where( i => i.Status == status ); } string title = gfFilter.GetUserPreference( "Title" ); if ( !string.IsNullOrWhiteSpace( title ) ) { contentItems = contentItems.Where( i => i.Title.Contains( title ) ); } // if the block has a person context filter requests for just them if ( _person != null ) { contentItems = contentItems.Where( i => i.CreatedByPersonAlias != null && i.CreatedByPersonAlias.PersonId == _person.Id ); } // TODO: Checking security of every item will take longer and longer as more items are added. // Eventually we should implement server-side paging so that we only need to check security for // the items on the current page var items = new List<ContentChannelItem>(); foreach ( var item in contentItems.ToList()) { if ( item.IsAuthorized( Rock.Security.Authorization.VIEW, CurrentPerson )) { items.Add(item); } } SortProperty sortProperty = gItems.SortProperty; if ( sortProperty != null ) { items = items.AsQueryable().Sort( sortProperty ).ToList(); } else { items = items.OrderByDescending( p => p.StartDateTime ).ToList(); } gItems.ObjectList = new Dictionary<string, object>(); items.ForEach( i => gItems.ObjectList.Add( i.Id.ToString(), i ) ); gItems.EntityTypeId = EntityTypeCache.Read<ContentChannelItem>().Id; gItems.DataSource = items.Select( i => new { i.Id, i.Guid, i.Title, i.StartDateTime, i.ExpireDateTime, i.Priority, Status = DisplayStatus( i.Status ), Occurrences = i.EventItemOccurrences.Any() } ).ToList(); gItems.DataBind(); } }
/// <summary> /// Binds the grid. /// </summary> private void BindGrid() { if ( _workflowType != null ) { pnlWorkflowList.Visible = true; var rockContext = new RockContext(); var workflowService = new WorkflowService( rockContext ); var qry = workflowService.Queryable( "Activities.ActivityType,InitiatorPersonAlias.Person" ) .Where( w => w.WorkflowTypeId.Equals( _workflowType.Id ) ); // Activated Date Range Filter var drp = new DateRangePicker(); drp.DelimitedValues = gfWorkflows.GetUserPreference( "Activated" ); if ( drp.LowerValue.HasValue ) { qry = qry.Where( w => w.ActivatedDateTime >= drp.LowerValue.Value ); } if ( drp.UpperValue.HasValue ) { DateTime upperDate = drp.UpperValue.Value.Date.AddDays( 1 ); qry = qry.Where( w => w.ActivatedDateTime.Value < upperDate ); } // State Filter string state = gfWorkflows.GetUserPreference( "State" ); if (!string.IsNullOrWhiteSpace(state)) { // somewhat of a backwards comparison to account for value of "None" if ( !state.Equals( "Active" ) ) { qry = qry.Where( w => w.CompletedDateTime.HasValue ); } if ( !state.Equals( "Completed" ) ) { qry = qry.Where( w => !w.CompletedDateTime.HasValue ); } } // Completed Date Range Filter var drp2 = new DateRangePicker(); drp2.DelimitedValues = gfWorkflows.GetUserPreference( "Completed" ); if ( drp2.LowerValue.HasValue ) { qry = qry.Where( w => w.CompletedDateTime.HasValue && w.CompletedDateTime.Value >= drp2.LowerValue.Value ); } if ( drp2.UpperValue.HasValue ) { DateTime upperDate = drp2.UpperValue.Value.Date.AddDays( 1 ); qry = qry.Where( w => w.CompletedDateTime.HasValue && w.CompletedDateTime.Value < upperDate ); } string name = gfWorkflows.GetUserPreference( "Name" ); if ( !string.IsNullOrWhiteSpace( name ) ) { qry = qry.Where( w => w.Name.StartsWith( name ) ); } int? personId = gfWorkflows.GetUserPreference( "Initiator" ).AsIntegerOrNull(); if ( personId.HasValue ) { qry = qry.Where( w => w.InitiatorPersonAlias.PersonId == personId.Value ); } string status = gfWorkflows.GetUserPreference( "Status" ); if ( !string.IsNullOrWhiteSpace( status ) ) { qry = qry.Where( w => w.Status.StartsWith( status ) ); } List<Workflow> workflows = null; var sortProperty = gWorkflows.SortProperty; if ( sortProperty != null ) { if ( sortProperty.Property == "Initiator" ) { if ( sortProperty.Direction == SortDirection.Ascending ) { workflows = qry .OrderBy( w => w.InitiatorPersonAlias.Person.LastName ) .ThenBy( w => w.InitiatorPersonAlias.Person.NickName ) .ToList(); } else { workflows = qry .OrderByDescending( w => w.InitiatorPersonAlias.Person.LastName ) .ThenByDescending( w => w.InitiatorPersonAlias.Person.NickName ) .ToList(); } } else { workflows = qry.Sort( sortProperty ).ToList(); } } else { workflows = qry.OrderByDescending( s => s.CreatedDateTime ).ToList(); } // Since we're not binding to actual workflow list, but are using AttributeField columns, // we need to save the workflows into the grid's object list gWorkflows.ObjectList = new Dictionary<string, object>(); workflows.ForEach( w => gWorkflows.ObjectList.Add( w.Id.ToString(), w ) ); gWorkflows.DataSource = workflows.Select( w => new { w.Id, w.Name, Initiator = ( w.InitiatorPersonAlias != null ? w.InitiatorPersonAlias.Person.FullName : "" ), Activities = w.ActiveActivities.Select( a => a.ActivityType.Name ).ToList().AsDelimited( "<br/>" ), w.CreatedDateTime, Status = string.Format( "<span class='label label-info'>{0}</span>", w.Status ), State = ( w.CompletedDateTime.HasValue ? "<span class='label label-default'>Completed</span>" : "<span class='label label-success'>Active</span>" ) } ).ToList(); gWorkflows.DataBind(); } else { pnlWorkflowList.Visible = false; } }
/// <summary> /// Binds the grid. /// </summary> private void BindGrid() { var rockContext = new RockContext(); var communications = new CommunicationService( rockContext ) .Queryable( "ChannelEntityType,Sender,Reviewer" ) .Where( c => c.Status != CommunicationStatus.Transient ); string subject = rFilter.GetUserPreference( "Subject" ); if ( !string.IsNullOrWhiteSpace( subject ) ) { communications = communications.Where( c => c.Subject.Contains( subject ) ); } Guid entityTypeGuid = Guid.Empty; if ( Guid.TryParse( rFilter.GetUserPreference( "Channel" ), out entityTypeGuid ) ) { communications = communications.Where( c => c.ChannelEntityType != null && c.ChannelEntityType.Guid.Equals( entityTypeGuid ) ); } string status = rFilter.GetUserPreference( "Status" ); if ( !string.IsNullOrWhiteSpace( status ) ) { var communicationStatus = (CommunicationStatus)System.Enum.Parse( typeof( CommunicationStatus ), status ); communications = communications.Where( c => c.Status == communicationStatus ); } if ( canApprove ) { int personId = 0; if ( int.TryParse( rFilter.GetUserPreference( "Created By" ), out personId ) && personId != 0 ) { communications = communications.Where( c => c.SenderPersonId.HasValue && c.SenderPersonId.Value == personId ); } } else { communications = communications.Where( c => c.SenderPersonId.HasValue && c.SenderPersonId.Value == CurrentPersonId ); } string content = rFilter.GetUserPreference( "Content" ); if ( !string.IsNullOrWhiteSpace( content ) ) { communications = communications.Where( c => c.ChannelDataJson.Contains( content ) ); } var drp = new DateRangePicker(); drp.DelimitedValues = rFilter.GetUserPreference( "Date Range" ); if ( drp.LowerValue.HasValue ) { communications = communications.Where( a => a.ReviewedDateTime >= drp.LowerValue.Value ); } if ( drp.UpperValue.HasValue ) { DateTime upperDate = drp.UpperValue.Value.Date.AddDays( 1 ); communications = communications.Where( a => a.ReviewedDateTime < upperDate ); } var recipients = new CommunicationRecipientService( rockContext ).Queryable(); var queryable = communications .Select( c => new CommunicationItem { Id = c.Id, Communication = c, Recipients = recipients .Where( r => r.CommunicationId == c.Id) .Count(), PendingRecipients = recipients .Where( r => r.CommunicationId == c.Id && r.Status == CommunicationRecipientStatus.Pending) .Count(), CancelledRecipients = recipients .Where( r => r.CommunicationId == c.Id && r.Status == CommunicationRecipientStatus.Cancelled) .Count(), FailedRecipients = recipients .Where( r => r.CommunicationId == c.Id && r.Status == CommunicationRecipientStatus.Failed) .Count(), DeliveredRecipients = recipients .Where( r => r.CommunicationId == c.Id && (r.Status == CommunicationRecipientStatus.Delivered || r.Status == CommunicationRecipientStatus.Opened)) .Count(), OpenedRecipients = recipients .Where( r => r.CommunicationId == c.Id && r.Status == CommunicationRecipientStatus.Opened) .Count() } ); var sortProperty = gCommunication.SortProperty; if ( sortProperty != null ) { queryable = queryable.Sort( sortProperty ); } else { queryable = queryable.OrderByDescending( c => c.Communication.Id ); } // Get the channel names var channels = new Dictionary<int, string>(); foreach ( var item in Rock.Communication.ChannelContainer.Instance.Components.Values ) { var entityType = item.Value.EntityType; channels.Add( entityType.Id, item.Metadata.ComponentName ); } var communicationItems = queryable.ToList(); foreach( var c in communicationItems) { c.ChannelName = channels.ContainsKey( c.Communication.ChannelEntityTypeId ?? 0 ) ? channels[c.Communication.ChannelEntityTypeId ?? 0] : c.Communication.ChannelEntityType.FriendlyName; } gCommunication.DataSource = communicationItems; gCommunication.DataBind(); }
/// <summary> /// Binds the grid. /// </summary> private List<ContentChannelItem> GetItems( RockContext rockContext, out bool isFiltered ) { isFiltered = false; var items = new List<ContentChannelItem>(); if ( _channelId.HasValue ) { ContentChannelItemService contentItemService = new ContentChannelItemService( rockContext ); var contentItems = contentItemService.Queryable() .Where( c => c.ContentChannelId == _channelId.Value ); var drp = new DateRangePicker(); drp.DelimitedValues = gfFilter.GetUserPreference( "Date Range" ); if ( drp.LowerValue.HasValue ) { isFiltered = true; contentItems = contentItems.Where( i => ( i.ExpireDateTime.HasValue && i.ExpireDateTime.Value >= drp.LowerValue.Value ) || ( !i.ExpireDateTime.HasValue && i.StartDateTime >= drp.LowerValue.Value ) ); } if ( drp.UpperValue.HasValue ) { isFiltered = true; DateTime upperDate = drp.UpperValue.Value.Date.AddDays( 1 ); contentItems = contentItems.Where( i => i.StartDateTime <= upperDate ); } var status = gfFilter.GetUserPreference( "Status" ).ConvertToEnumOrNull<ContentChannelItemStatus>(); if ( status.HasValue ) { isFiltered = true; contentItems = contentItems.Where( i => i.Status == status ); } string title = gfFilter.GetUserPreference( "Title" ); if ( !string.IsNullOrWhiteSpace( title ) ) { isFiltered = true; contentItems = contentItems.Where( i => i.Title.Contains( title ) ); } // if the block has a person context filter requests for just them if ( _person != null ) { isFiltered = true; contentItems = contentItems.Where( i => i.CreatedByPersonAlias != null && i.CreatedByPersonAlias.PersonId == _person.Id ); } // TODO: Checking security of every item will take longer and longer as more items are added. // Eventually we should implement server-side paging so that we only need to check security for // the items on the current page foreach ( var item in contentItems.ToList() ) { if ( item.IsAuthorized( Rock.Security.Authorization.VIEW, CurrentPerson ) ) { items.Add( item ); } else { isFiltered = true; } } } if ( _manuallyOrdered && !isFiltered ) { return items.OrderBy( i => i.Order ).ToList(); } else { return items; } }
/// <summary> /// Creates the child controls. /// </summary> /// <returns></returns> public override Control[] CreateChildControls( System.Web.UI.Control parentControl ) { var comparisonControl = ComparisonHelper.ComparisonControl( ComparisonType.LessThan | ComparisonType.GreaterThanOrEqualTo | ComparisonType.EqualTo ); comparisonControl.ID = parentControl.ID + "_0"; parentControl.Controls.Add( comparisonControl ); var globalAttributes = Rock.Web.Cache.GlobalAttributesCache.Read(); NumberBox numberBoxAmount = new NumberBox(); numberBoxAmount.PrependText = globalAttributes.GetValue( "CurrencySymbol" ) ?? "$"; numberBoxAmount.NumberType = ValidationDataType.Currency; numberBoxAmount.ID = parentControl.ID + "_1"; numberBoxAmount.Label = "Amount"; parentControl.Controls.Add( numberBoxAmount ); AccountPicker accountPicker = new AccountPicker(); accountPicker.AllowMultiSelect = true; accountPicker.ID = parentControl.ID + "_accountPicker"; accountPicker.AddCssClass( "js-account-picker" ); accountPicker.Label = "Accounts"; parentControl.Controls.Add( accountPicker ); DateRangePicker dateRangePicker = new DateRangePicker(); dateRangePicker.ID = parentControl.ID + "_2"; dateRangePicker.Label = "Date Range"; dateRangePicker.Required = true; parentControl.Controls.Add( dateRangePicker ); RockCheckBox cbCombineGiving = new RockCheckBox(); cbCombineGiving.ID = parentControl.ID + "_cbCombineGiving"; cbCombineGiving.Label = "Combine Giving"; cbCombineGiving.CssClass = "js-combine-giving"; cbCombineGiving.Help = "Combine individuals in the same giving group when calculating totals and reporting the list of individuals."; parentControl.Controls.Add( cbCombineGiving ); var controls = new Control[5] { comparisonControl, numberBoxAmount, accountPicker, dateRangePicker, cbCombineGiving }; SetSelection( controls, string.Format( "{0}|||||", ComparisonType.GreaterThanOrEqualTo.ConvertToInt().ToString() ) ); return controls; }
/// <summary> /// Rs the filter_ display filter value. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The e.</param> protected void rFilter_DisplayFilterValue( object sender, GridFilter.DisplayFilterValueArgs e ) { if ( AvailableAttributes != null ) { var attribute = AvailableAttributes.FirstOrDefault( a => MakeKeyUniqueToEventCalendar( a.Key ) == e.Key ); if ( attribute != null ) { try { var values = JsonConvert.DeserializeObject<List<string>>( e.Value ); e.Value = attribute.FieldType.Field.FormatFilterValues( attribute.QualifierValues, values ); return; } catch { } } } if ( e.Key == MakeKeyUniqueToEventCalendar( "Campus" ) ) { e.Value = ResolveValues( e.Value, cblCampus ); } else if ( e.Key == MakeKeyUniqueToEventCalendar( "DateRange" ) ) { var drp = new DateRangePicker(); drp.DelimitedValues = e.Value; if ( drp.LowerValue.HasValue && !drp.UpperValue.HasValue ) { drp.UpperValue = drp.LowerValue.Value.AddYears( 1 ).AddDays( -1 ); } else if ( drp.UpperValue.HasValue && !drp.LowerValue.HasValue ) { drp.LowerValue = drp.UpperValue.Value.AddYears( -1 ).AddDays( 1 ); } e.Value = DateRangePicker.FormatDelimitedValues( drp.DelimitedValues ); } else if ( e.Key == MakeKeyUniqueToEventCalendar( "Audiences" ) ) { e.Value = ResolveValues( e.Value, cblAudience ); } else if ( e.Key == MakeKeyUniqueToEventCalendar( "Status" ) || e.Key == MakeKeyUniqueToEventCalendar( "ApprovalStatus" ) ) { e.Value = e.Value; } else { e.Value = string.Empty; } }
/// <summary> /// Binds the grid. /// </summary> private void BindGrid() { using ( var rockContext = new RockContext() ) { var qry = new BackgroundCheckService( rockContext ) .Queryable("PersonAlias.Person").AsNoTracking() .Where( g => g.PersonAlias != null && g.PersonAlias.Person != null ); // FirstName string firstName = fRequest.GetUserPreference( "First Name" ); if ( !string.IsNullOrWhiteSpace( firstName ) ) { qry = qry.Where( t => t.PersonAlias.Person.FirstName.StartsWith( firstName ) || t.PersonAlias.Person.NickName.StartsWith( firstName ) ); } // LastName string lastName = fRequest.GetUserPreference( "Last Name" ); if ( !string.IsNullOrWhiteSpace( lastName ) ) { qry = qry.Where( t => t.PersonAlias.Person.LastName.StartsWith( lastName ) ); } // Request Date Range var drpRequestDates = new DateRangePicker(); drpRequestDates.DelimitedValues = fRequest.GetUserPreference( "Request Date Range" ); if ( drpRequestDates.LowerValue.HasValue ) { qry = qry.Where( t => t.RequestDate >= drpRequestDates.LowerValue.Value ); } if ( drpRequestDates.UpperValue.HasValue ) { DateTime upperDate = drpRequestDates.UpperValue.Value.Date.AddDays( 1 ); qry = qry.Where( t => t.RequestDate < upperDate ); } // Response Date Range var drpResponseDates = new DateRangePicker(); drpResponseDates.DelimitedValues = fRequest.GetUserPreference( "Response Date Range" ); if ( drpResponseDates.LowerValue.HasValue ) { qry = qry.Where( t => t.ResponseDate >= drpResponseDates.LowerValue.Value ); } if ( drpResponseDates.UpperValue.HasValue ) { DateTime upperDate = drpResponseDates.UpperValue.Value.Date.AddDays( 1 ); qry = qry.Where( t => t.ResponseDate < upperDate ); } // Record Found string recordFound = fRequest.GetUserPreference( "Record Found" ); if ( !string.IsNullOrWhiteSpace( recordFound ) ) { if ( recordFound == "Yes" ) { qry = qry.Where( t => t.RecordFound.HasValue && t.RecordFound.Value ); } else if ( recordFound == "No" ) { qry = qry.Where( t => t.RecordFound.HasValue && !t.RecordFound.Value ); } } List<Rock.Model.BackgroundCheck> items = null; SortProperty sortProperty = gRequest.SortProperty; if ( sortProperty != null ) { items = qry.Sort( sortProperty ).ToList(); } else { items = qry.OrderByDescending( d => d.RequestDate ).ToList(); } gRequest.DataSource = items.Select( b => new { Name = b.PersonAlias.Person.LastName + ", " + b.PersonAlias.Person.NickName, b.Id, PersonId = b.PersonAlias.PersonId, HasWorkflow = b.WorkflowId.HasValue, b.RequestDate, b.ResponseDate, b.RecordFound, RecordFoundLabel = b.RecordFound.HasValue ? ( b.RecordFound.Value ? "<span class='label label-warning'>Yes</span>" : "<span class='label label-success'>No</span>" ) : string.Empty, HasResponseXml = !string.IsNullOrWhiteSpace( b.ResponseXml ), ResponseDocumentText = b.ResponseDocumentId.HasValue ? "<i class='fa fa-file-pdf-o fa-lg'></i>" : "", ResponseDocumentId = b.ResponseDocumentId ?? 0 } ).ToList(); gRequest.DataBind(); } }
/// <summary> /// Binds the grid. /// </summary> private void BindGrid() { var queryable = new FinancialTransactionService( new RockContext() ).Queryable(); // Set up the selection filter if ( _batch != null ) { // If transactions are for a batch, the filter is hidden so only check the batch id queryable = queryable.Where( t => t.BatchId.HasValue && t.BatchId.Value == _batch.Id ); // If the batch is closed, do not allow any editing of the transactions if ( _batch.Status != BatchStatus.Open && _canConfigure ) { gTransactions.Actions.ShowAdd = false; gTransactions.IsDeleteEnabled = false; } else { gTransactions.Actions.ShowAdd = true; gTransactions.IsDeleteEnabled = true; } } else if ( !string.IsNullOrWhiteSpace( PageParameter( "financialBatchId" ) ) && _batch == null ) { // this makes sure the grid will show no transactions when you're adding a new financial batch. queryable = queryable.Where( t => t.BatchId.HasValue && t.BatchId.Value == 0 ); } else { // otherwise set the selection based on filter settings if ( _person != null ) { queryable = queryable.Where( t => t.AuthorizedPersonId == _person.Id ); } // Date Range var drp = new DateRangePicker(); drp.DelimitedValues = gfTransactions.GetUserPreference( "Date Range" ); if ( drp.LowerValue.HasValue ) { queryable = queryable.Where( t => t.TransactionDateTime >= drp.LowerValue.Value ); } if ( drp.UpperValue.HasValue ) { DateTime upperDate = drp.UpperValue.Value.Date.AddDays( 1 ); queryable = queryable.Where( t => t.TransactionDateTime < upperDate ); } // Amount Range var nre = new NumberRangeEditor(); nre.DelimitedValues = gfTransactions.GetUserPreference( "Amount Range" ); if ( nre.LowerValue.HasValue ) { queryable = queryable.Where( t => t.TransactionDetails.Sum( d => d.Amount ) >= nre.LowerValue.Value ); } if ( nre.UpperValue.HasValue ) { queryable = queryable.Where( t => t.TransactionDetails.Sum( d => d.Amount ) <= nre.UpperValue.Value ); } // Transaction Code string transactionCode = gfTransactions.GetUserPreference( "Transaction Code" ); if ( !string.IsNullOrWhiteSpace( transactionCode ) ) { queryable = queryable.Where( t => t.TransactionCode == transactionCode.Trim() ); } // Account Id int accountId = int.MinValue; if ( int.TryParse( gfTransactions.GetUserPreference( "Account" ), out accountId ) ) { queryable = queryable.Where( t => t.TransactionDetails.Any( d => d.AccountId == accountId ) ); } // Transaction Type int transactionTypeId = int.MinValue; if ( int.TryParse( gfTransactions.GetUserPreference( "Transaction Type" ), out transactionTypeId ) ) { queryable = queryable.Where( t => t.TransactionTypeValueId == transactionTypeId ); } // Currency Type int currencyTypeId = int.MinValue; if ( int.TryParse( gfTransactions.GetUserPreference( "Currency Type" ), out currencyTypeId ) ) { queryable = queryable.Where( t => t.CurrencyTypeValueId == currencyTypeId ); } // Credit Card Type int creditCardTypeId = int.MinValue; if ( int.TryParse( gfTransactions.GetUserPreference( "Credit Card Type" ), out creditCardTypeId ) ) { queryable = queryable.Where( t => t.CreditCardTypeValueId == creditCardTypeId ); } // Source Type int sourceTypeId = int.MinValue; if ( int.TryParse( gfTransactions.GetUserPreference( "Source Type" ), out sourceTypeId ) ) { queryable = queryable.Where( t => t.SourceTypeValueId == sourceTypeId ); } } SortProperty sortProperty = gTransactions.SortProperty; if ( sortProperty != null ) { if ( sortProperty.Property == "TotalAmount" ) { if ( sortProperty.Direction == SortDirection.Ascending ) { queryable = queryable.OrderBy( t => t.TransactionDetails.Sum( d => d.Amount ) ); } else { queryable = queryable.OrderByDescending( t => t.TransactionDetails.Sum( d => d.Amount ) ); } } else { queryable = queryable.Sort( sortProperty ); } } else { queryable = queryable.OrderBy( t => t.TransactionDateTime ); } gTransactions.DataSource = queryable.AsNoTracking().ToList(); gTransactions.DataBind(); }
/// <summary> /// Binds the group members grid. /// </summary> protected void BindInstancesGrid() { if ( _template != null ) { pnlInstances.Visible = true; lHeading.Text = string.Format( "{0} Instances", _template.Name ); var rockContext = new RockContext(); RegistrationInstanceService instanceService = new RegistrationInstanceService( rockContext ); var qry = instanceService.Queryable().AsNoTracking() .Where( i => i.RegistrationTemplateId == _template.Id ); // Date Range var drp = new DateRangePicker(); drp.DelimitedValues = rFilter.GetUserPreference( "Date Range" ); if ( drp.LowerValue.HasValue ) { qry = qry.Where( i => i.StartDateTime >= drp.LowerValue.Value ); } if ( drp.UpperValue.HasValue ) { DateTime upperDate = drp.UpperValue.Value.Date.AddDays( 1 ); qry = qry.Where( i => i.StartDateTime < upperDate ); } string statusFilter = rFilter.GetUserPreference( "Active Status" ); if ( !string.IsNullOrWhiteSpace(statusFilter)) { if ( statusFilter == "inactive") { qry = qry.Where( i => i.IsActive == false ); } else { qry = qry.Where( i => i.IsActive == true ); } } SortProperty sortProperty = gInstances.SortProperty; if ( sortProperty != null ) { qry = qry.Sort( sortProperty ); } else { qry = qry.OrderByDescending( a => a.StartDateTime ); } var instanceQry = qry.Select( i => new { i.Id, i.Guid, i.Name, i.StartDateTime, i.EndDateTime, i.IsActive, Details = string.Empty, Registrants = i.Registrations.SelectMany( r => r.Registrants ).Count() }); gInstances.SetLinqDataSource( instanceQry ); gInstances.DataBind(); } else { pnlInstances.Visible = false; } }
/// <summary> /// Binds the grid. /// </summary> protected void BindGrid() { var rockContext = new RockContext(); var attendanceService = new AttendanceService( rockContext ); var qryAttendance = attendanceService.Queryable(); var personField = gHistory.Columns.OfType<PersonField>().FirstOrDefault(); if ( personField != null ) { personField.Visible = _person == null; } var groupField = gHistory.Columns.OfType<RockBoundField>().FirstOrDefault( a => a.HeaderText == "Group" ); if ( groupField != null ) { groupField.Visible = _group == null; } if ( _person != null ) { qryAttendance = qryAttendance.Where( a => a.PersonAlias.PersonId == _person.Id ); } else if ( _group != null ) { qryAttendance = qryAttendance.Where( a => a.GroupId == _group.Id ); } // Filter by Date Range var drp = new DateRangePicker(); drp.DelimitedValues = rFilter.GetUserPreference( "Date Range" ); if ( drp.LowerValue.HasValue ) { qryAttendance = qryAttendance.Where( t => t.StartDateTime >= drp.LowerValue.Value ); } if ( drp.UpperValue.HasValue ) { DateTime upperDate = drp.UpperValue.Value.Date.AddDays( 1 ); qryAttendance = qryAttendance.Where( t => t.EndDateTime < upperDate ); } // Filter by Person int? personId = ppPerson.SelectedValue; if ( personId.HasValue && ppPerson.Visible ) { qryAttendance = qryAttendance.Where( a => a.PersonAlias.PersonId == personId.Value ); } // Filter by Group int groupId = ddlAttendanceGroup.SelectedValue.AsInteger(); if ( groupId > 0 && ddlAttendanceGroup.Visible ) { qryAttendance = qryAttendance.Where( a => a.GroupId == groupId ); } // Filter by Schedule int scheduleId = spSchedule.SelectedValue.AsInteger(); if ( scheduleId > 0 && spSchedule.Visible ) { qryAttendance = qryAttendance.Where( h => h.ScheduleId == scheduleId ); } var qry = qryAttendance .Select( a => new { LocationId = a.LocationId, LocationName = a.Location.Name, CampusId = a.CampusId, CampusName = a.Campus.Name, ScheduleName = a.Schedule.Name, Person = a.PersonAlias.Person, GroupName = a.Group.Name, GroupTypeId = a.Group.GroupTypeId, StartDateTime = a.StartDateTime, EndDateTime = a.EndDateTime } ); SortProperty sortProperty = gHistory.SortProperty; if ( sortProperty != null ) { qry = qry.Sort( sortProperty ); } else { qry = qry.OrderByDescending( p => p.StartDateTime ); } // build a lookup for _groupTypePaths for OnRowDatabound _groupTypePaths = new GroupTypeService( rockContext ).GetAllCheckinGroupTypePaths().ToList(); // build a lookup for _locationpaths for OnRowDatabound _locationPaths = new Dictionary<int, string>(); var qryLocations = new LocationService( rockContext ).Queryable().Where( a => qry.Any( b => b.LocationId == a.Id ) ); foreach (var location in qryLocations) { var parentLocation = location.ParentLocation; var locationNames = new List<string>(); while (parentLocation != null) { locationNames.Add( parentLocation.Name ); parentLocation = parentLocation.ParentLocation; } string locationPath = string.Empty; if ( locationNames.Any() ) { locationNames.Reverse(); locationPath = locationNames.AsDelimited( " > " ); } _locationPaths.AddOrIgnore( location.Id, locationPath ); } gHistory.EntityTypeId = EntityTypeCache.Read<Attendance>().Id; gHistory.DataSource = qry.ToList(); gHistory.DataBind(); }
private void BindGrid() { var qry = new UserLoginService().Queryable() .Where( l => !_personId.HasValue || l.PersonId == _personId.Value ); // username filter string usernameFilter = gfSettings.GetUserPreference( "Username" ); if (!string.IsNullOrWhiteSpace(usernameFilter)) { qry = qry.Where( l => l.UserName.StartsWith( usernameFilter ) ); } // provider filter Guid guid = Guid.Empty; if (Guid.TryParse(gfSettings.GetUserPreference( "Authentication Provider" ), out guid)) { qry = qry.Where( l => l.EntityType.Guid.Equals( guid ) ); } // created filter var drp = new DateRangePicker(); drp.DelimitedValues = gfSettings.GetUserPreference( "Created" ); if ( drp.LowerValue.HasValue ) { qry = qry.Where( l => l.CreationDateTime >= drp.LowerValue.Value ); } if ( drp.UpperValue.HasValue ) { DateTime upperDate = drp.UpperValue.Value.Date.AddDays( 1 ); qry = qry.Where( l => l.CreationDateTime < upperDate ); } // last login filter var drp2 = new DateRangePicker(); drp2.DelimitedValues = gfSettings.GetUserPreference( "Last Login" ); if ( drp2.LowerValue.HasValue ) { qry = qry.Where( l => l.LastLoginDateTime >= drp2.LowerValue.Value ); } if ( drp2.UpperValue.HasValue ) { DateTime upperDate = drp2.UpperValue.Value.Date.AddDays( 1 ); qry = qry.Where( l => l.LastLoginDateTime < upperDate ); } // Is Confirmed filter bool isConfirmed = false; if (bool.TryParse(gfSettings.GetUserPreference( "Is Confirmed" ), out isConfirmed)) { qry = qry.Where( l => l.IsConfirmed == isConfirmed || ( !isConfirmed && l.IsConfirmed == null ) ); } // is locked out filter bool isLockedOut = false; if ( bool.TryParse( gfSettings.GetUserPreference( "Is Locked Out" ), out isLockedOut ) ) { qry = qry.Where( l => l.IsLockedOut == isLockedOut || ( !isLockedOut && l.IsLockedOut == null ) ); } // Sort SortProperty sortProperty = gUserLogins.SortProperty; if ( sortProperty == null ) { sortProperty = new SortProperty( new GridViewSortEventArgs( "UserName", SortDirection.Ascending ) ); } gUserLogins.DataSource = qry.Sort( sortProperty ) .Select( l => new { Id = l.Id, UserName = l.UserName, PersonId = l.PersonId, PersonName = l.Person.LastName + ", " + l.Person.NickName, ProviderName = l.EntityType.FriendlyName, CreationDateTime = l.CreationDateTime, LastLoginDateTime = l.LastLoginDateTime, IsConfirmed = l.IsConfirmed, IsLockedOut = l.IsLockedOut } ).ToList(); gUserLogins.DataBind(); }
/// <summary> /// Binds the grid. /// </summary> private void BindGrid() { int? metricId = hfMetricId.Value.AsIntegerOrNull(); if ( !metricId.HasValue ) { return; } var rockContext = new RockContext(); SortProperty sortProperty = gMetricValues.SortProperty; MetricValueService metricValueService = new MetricValueService( rockContext ); var qry = metricValueService.Queryable().Include( a => a.MetricValuePartitions ); qry = qry.Where( a => a.MetricId == metricId ); var metricValuePartitionsColumn = gMetricValues.Columns.OfType<RockLiteralField>().FirstOrDefault( a => a.ID == "lMetricValuePartitions" ); var metric = new MetricService( rockContext ).Get( metricId ?? 0 ); metricValuePartitionsColumn.Visible = metric != null && metric.MetricPartitions.Any( a => a.EntityTypeId.HasValue ); var drp = new DateRangePicker(); drp.DelimitedValues = gfMetricValues.GetUserPreference( "Date Range" ); if ( drp.LowerValue.HasValue ) { qry = qry.Where( a => a.MetricValueDateTime >= drp.LowerValue.Value ); } if ( drp.UpperValue.HasValue ) { DateTime upperDate = drp.UpperValue.Value.Date.AddDays( 1 ); qry = qry.Where( a => a.MetricValueDateTime < upperDate ); } var metricValueType = gfMetricValues.GetUserPreference( "Goal/Measure" ).ConvertToEnumOrNull<MetricValueType>(); if ( metricValueType.HasValue ) { qry = qry.Where( a => a.MetricValueType == metricValueType.Value ); } var entityTypeEntityUserPreference = gfMetricValues.GetUserPreference( this.EntityTypeEntityPreferenceKey ) ?? string.Empty; var entityTypeEntityList = entityTypeEntityUserPreference.Split( ',' ).Select( a => a.Split( '|' ) ).Where( a => a.Length == 2 ).Select( a => new { EntityTypeId = a[0].AsIntegerOrNull(), EntityId = a[1].AsIntegerOrNull() } ); foreach ( var entityTypeEntity in entityTypeEntityList ) { if ( entityTypeEntity.EntityTypeId.HasValue && entityTypeEntity.EntityId.HasValue ) { qry = qry.Where( a => a.MetricValuePartitions.Any( x => x.MetricPartition.EntityTypeId == entityTypeEntity.EntityTypeId && x.EntityId == entityTypeEntity.EntityId ) ); } } if ( sortProperty != null ) { qry = qry.Sort( sortProperty ); } else { qry = qry.OrderBy( s => s.MetricValueDateTime ).ThenBy( s => s.YValue ).ThenBy( s => s.XValue ).ThenByDescending( s => s.ModifiedDateTime ); } gMetricValues.SetLinqDataSource( qry ); gMetricValues.DataBind(); }
/// <summary> /// Adds the filter controls and grid columns for all of the registration template's form fields /// that were configured to 'Show on Grid' /// </summary> private void AddDynamicRegistrantControls() { phRegistrantFormFieldFilters.Controls.Clear(); // Remove any of the dynamic person fields var dynamicColumns = new List<string> { "PersonAlias.Person.BirthDate", }; foreach ( var column in gRegistrants.Columns .OfType<BoundField>() .Where( c => dynamicColumns.Contains( c.DataField ) ) .ToList() ) { gRegistrants.Columns.Remove( column ); } // Remove any of the dynamic attribute fields foreach ( var column in gRegistrants.Columns .OfType<AttributeField>() .ToList() ) { gRegistrants.Columns.Remove( column ); } // Remove the fees field foreach ( var column in gRegistrants.Columns .OfType<TemplateField>() .Where( c => c.HeaderText == "Fees" ) .ToList() ) { gRegistrants.Columns.Remove( column ); } // Remove the delete field foreach ( var column in gRegistrants.Columns .OfType<DeleteField>() .ToList() ) { gRegistrants.Columns.Remove( column ); } if ( RegistrantFields != null ) { foreach ( var field in RegistrantFields ) { if ( field.FieldSource == RegistrationFieldSource.PersonField && field.PersonFieldType.HasValue ) { switch ( field.PersonFieldType.Value ) { case RegistrationPersonFieldType.Campus: { var ddlCampus = new RockDropDownList(); ddlCampus.ID = "ddlCampus"; ddlCampus.Label = "Home Campus"; ddlCampus.DataValueField = "Id"; ddlCampus.DataTextField = "Name"; ddlCampus.DataSource = CampusCache.All(); ddlCampus.DataBind(); ddlCampus.Items.Insert( 0, new ListItem( "", "" ) ); ddlCampus.SetValue( fRegistrants.GetUserPreference( "Home Campus" ) ); phRegistrantFormFieldFilters.Controls.Add( ddlCampus ); var templateField = new TemplateField(); templateField.ItemTemplate = new LiteralFieldTemplate( "lCampus" ); templateField.HeaderText = "Campus"; gRegistrants.Columns.Add( templateField ); break; } case RegistrationPersonFieldType.Email: { var tbEmailFilter = new RockTextBox(); tbEmailFilter.ID = "tbEmailFilter"; tbEmailFilter.Label = "Email"; tbEmailFilter.Text = fRegistrants.GetUserPreference( "Email" ); phRegistrantFormFieldFilters.Controls.Add( tbEmailFilter ); string dataFieldExpression = "PersonAlias.Person.Email"; var emailField = new BoundField(); emailField.DataField = dataFieldExpression; emailField.HeaderText = "Email"; emailField.SortExpression = dataFieldExpression; gRegistrants.Columns.Add( emailField ); break; } case RegistrationPersonFieldType.Birthdate: { var drpBirthdateFilter = new DateRangePicker(); drpBirthdateFilter.ID = "drpBirthdateFilter"; drpBirthdateFilter.Label = "Birthdate Range"; drpBirthdateFilter.DelimitedValues = fRegistrants.GetUserPreference( "Birthdate Range" ); phRegistrantFormFieldFilters.Controls.Add( drpBirthdateFilter ); string dataFieldExpression = "PersonAlias.Person.BirthDate"; var birthdateField = new DateField(); birthdateField.DataField = dataFieldExpression; birthdateField.HeaderText = "Birthdate"; birthdateField.SortExpression = dataFieldExpression; gRegistrants.Columns.Add( birthdateField ); break; } case RegistrationPersonFieldType.Gender: { var ddlGenderFilter = new RockDropDownList(); ddlGenderFilter.BindToEnum<Gender>( true ); ddlGenderFilter.ID = "ddlGenderFilter"; ddlGenderFilter.Label = "Gender"; ddlGenderFilter.SetValue( fRegistrants.GetUserPreference( "Gender" ) ); phRegistrantFormFieldFilters.Controls.Add( ddlGenderFilter ); string dataFieldExpression = "PersonAlias.Person.Gender"; var genderField = new EnumField(); genderField.DataField = dataFieldExpression; genderField.HeaderText = "Gender"; genderField.SortExpression = dataFieldExpression; gRegistrants.Columns.Add( genderField ); break; } case RegistrationPersonFieldType.MaritalStatus: { var ddlMaritalStatusFilter = new RockDropDownList(); ddlMaritalStatusFilter.BindToDefinedType( DefinedTypeCache.Read( Rock.SystemGuid.DefinedType.PERSON_MARITAL_STATUS.AsGuid() ), true ); ddlMaritalStatusFilter.ID = "ddlMaritalStatusFilter"; ddlMaritalStatusFilter.Label = "Marital Status"; ddlMaritalStatusFilter.SetValue( fRegistrants.GetUserPreference( "Marital Status" ) ); phRegistrantFormFieldFilters.Controls.Add( ddlMaritalStatusFilter ); string dataFieldExpression = "PersonAlias.Person.MaritalStatusValue.Value"; var maritalStatusField = new BoundField(); maritalStatusField.DataField = dataFieldExpression; maritalStatusField.HeaderText = "MaritalStatus"; maritalStatusField.SortExpression = dataFieldExpression; gRegistrants.Columns.Add( maritalStatusField ); break; } case RegistrationPersonFieldType.MobilePhone: { var tbPhoneFilter = new RockTextBox(); tbPhoneFilter.ID = "tbPhoneFilter"; tbPhoneFilter.Label = "Phone"; tbPhoneFilter.Text = fRegistrants.GetUserPreference( "Phone" ); phRegistrantFormFieldFilters.Controls.Add( tbPhoneFilter ); var templateField = new TemplateField(); templateField.ItemTemplate = new LiteralFieldTemplate( "lPhone" ); templateField.HeaderText = "Phone(s)"; gRegistrants.Columns.Add( templateField ); break; } } } else if ( field.Attribute != null ) { var attribute = field.Attribute; var control = attribute.FieldType.Field.FilterControl( attribute.QualifierValues, "filter_" + attribute.Id.ToString(), false, Rock.Reporting.FilterMode.SimpleFilter ); if ( control != null ) { if ( control is IRockControl ) { var rockControl = (IRockControl)control; rockControl.Label = attribute.Name; rockControl.Help = attribute.Description; phRegistrantFormFieldFilters.Controls.Add( control ); } else { var wrapper = new RockControlWrapper(); wrapper.ID = control.ID + "_wrapper"; wrapper.Label = attribute.Name; wrapper.Controls.Add( control ); phRegistrantFormFieldFilters.Controls.Add( wrapper ); } string savedValue = fRegistrants.GetUserPreference( attribute.Key ); if ( !string.IsNullOrWhiteSpace( savedValue ) ) { try { var values = JsonConvert.DeserializeObject<List<string>>( savedValue ); attribute.FieldType.Field.SetFilterValues( control, attribute.QualifierValues, values ); } catch { } } } string dataFieldExpression = attribute.Id.ToString() + attribute.Key; bool columnExists = gRegistrants.Columns.OfType<AttributeField>().FirstOrDefault( a => a.DataField.Equals( dataFieldExpression ) ) != null; if ( !columnExists ) { AttributeField boundField = new AttributeField(); boundField.DataField = dataFieldExpression; boundField.HeaderText = attribute.Name; boundField.SortExpression = string.Empty; var attributeCache = Rock.Web.Cache.AttributeCache.Read( attribute.Id ); if ( attributeCache != null ) { boundField.ItemStyle.HorizontalAlign = attributeCache.FieldType.Field.AlignValue; } gRegistrants.Columns.Add( boundField ); } } } } // Add fee column var feeField = new TemplateField(); feeField.HeaderText = "Fees"; feeField.ItemTemplate = new LiteralFieldTemplate( "lFees" ); gRegistrants.Columns.Add( feeField ); var deleteField = new DeleteField(); gRegistrants.Columns.Add( deleteField ); deleteField.Click += gRegistrants_Delete; }
/// <summary> /// Binds the grid. /// </summary> private void BindGrid() { _currencyTypes = new Dictionary<int,string>(); _creditCardTypes = new Dictionary<int,string>(); // If configured for a person and person is null, return int personEntityTypeId = EntityTypeCache.Read( "Rock.Model.Person" ).Id; if ( ContextTypesRequired.Any( e => e.Id == personEntityTypeId ) && _person == null ) { return; } // If configured for a batch and batch is null, return int batchEntityTypeId = EntityTypeCache.Read( "Rock.Model.FinancialBatch" ).Id; if ( ContextTypesRequired.Any( e => e.Id == batchEntityTypeId ) && _batch == null ) { return; } // If configured for a batch and batch is null, return int scheduledTxnEntityTypeId = EntityTypeCache.Read( "Rock.Model.FinancialScheduledTransaction" ).Id; if ( ContextTypesRequired.Any( e => e.Id == scheduledTxnEntityTypeId ) && _scheduledTxn == null ) { return; } // Qry var qry = new FinancialTransactionService( new RockContext() ) .Queryable( "AuthorizedPersonAlias.Person,ProcessedByPersonAlias.Person" ); // Set up the selection filter if ( _batch != null ) { // If transactions are for a batch, the filter is hidden so only check the batch id qry = qry.Where( t => t.BatchId.HasValue && t.BatchId.Value == _batch.Id ); // If the batch is closed, do not allow any editing of the transactions if ( _batch.Status != BatchStatus.Closed && _canEdit ) { gTransactions.IsDeleteEnabled = true; } else { gTransactions.IsDeleteEnabled = false; } } else if ( _scheduledTxn != null ) { // If transactions are for a batch, the filter is hidden so only check the batch id qry = qry.Where( t => t.ScheduledTransactionId.HasValue && t.ScheduledTransactionId.Value == _scheduledTxn.Id ); gTransactions.IsDeleteEnabled = false; } else // Person { // otherwise set the selection based on filter settings if ( _person != null ) { qry = qry.Where( t => t.AuthorizedPersonAlias.PersonId == _person.Id ); } // Date Range var drp = new DateRangePicker(); drp.DelimitedValues = gfTransactions.GetUserPreference( "Date Range" ); if ( drp.LowerValue.HasValue ) { qry = qry.Where( t => t.TransactionDateTime >= drp.LowerValue.Value ); } if ( drp.UpperValue.HasValue ) { DateTime upperDate = drp.UpperValue.Value.Date.AddDays( 1 ); qry = qry.Where( t => t.TransactionDateTime < upperDate ); } // Amount Range var nre = new NumberRangeEditor(); nre.DelimitedValues = gfTransactions.GetUserPreference( "Amount Range" ); if ( nre.LowerValue.HasValue ) { qry = qry.Where( t => t.TransactionDetails.Sum( d => d.Amount ) >= nre.LowerValue.Value ); } if ( nre.UpperValue.HasValue ) { qry = qry.Where( t => t.TransactionDetails.Sum( d => d.Amount ) <= nre.UpperValue.Value ); } // Transaction Code string transactionCode = gfTransactions.GetUserPreference( "Transaction Code" ); if ( !string.IsNullOrWhiteSpace( transactionCode ) ) { qry = qry.Where( t => t.TransactionCode == transactionCode.Trim() ); } // Account Id int accountId = int.MinValue; if ( int.TryParse( gfTransactions.GetUserPreference( "Account" ), out accountId ) ) { qry = qry.Where( t => t.TransactionDetails.Any( d => d.AccountId == accountId ) ); } // Transaction Type int transactionTypeId = int.MinValue; if ( int.TryParse( gfTransactions.GetUserPreference( "Transaction Type" ), out transactionTypeId ) ) { qry = qry.Where( t => t.TransactionTypeValueId == transactionTypeId ); } // Currency Type int currencyTypeId = int.MinValue; if ( int.TryParse( gfTransactions.GetUserPreference( "Currency Type" ), out currencyTypeId ) ) { qry = qry.Where( t => t.CurrencyTypeValueId == currencyTypeId ); } // Credit Card Type int creditCardTypeId = int.MinValue; if ( int.TryParse( gfTransactions.GetUserPreference( "Credit Card Type" ), out creditCardTypeId ) ) { qry = qry.Where( t => t.CreditCardTypeValueId == creditCardTypeId ); } // Source Type int sourceTypeId = int.MinValue; if ( int.TryParse( gfTransactions.GetUserPreference( "Source Type" ), out sourceTypeId ) ) { qry = qry.Where( t => t.SourceTypeValueId == sourceTypeId ); } } SortProperty sortProperty = gTransactions.SortProperty; if ( sortProperty != null ) { if ( sortProperty.Property == "TotalAmount" ) { if ( sortProperty.Direction == SortDirection.Ascending ) { qry = qry.OrderBy( t => t.TransactionDetails.Sum( d => (decimal?)d.Amount ) ?? 0.00M ); } else { qry = qry.OrderByDescending( t => t.TransactionDetails.Sum( d => (decimal?)d.Amount ) ?? 0.0M ); } } else { qry = qry.Sort( sortProperty ); } } else { qry = qry.OrderBy( t => t.Id ); } // Row Limit int? rowLimit = gfTransactions.GetUserPreference( "Row Limit" ).AsIntegerOrNull(); if ( rowLimit.HasValue ) { qry = qry.Take( rowLimit.Value ); } gTransactions.DataSource = qry.AsNoTracking().ToList(); gTransactions.DataBind(); }
private void GetData() { var rockContext = new RockContext(); var itemService = new ContentChannelItemService(rockContext); int personId = CurrentPerson != null ? CurrentPerson.Id : 0; // Get all of the content channels var allChannels = new ContentChannelService( rockContext ).Queryable( "ContentChannelType" ) .OrderBy( w => w.Name ) .ToList(); // Create variable for storing authorized channels and the count of active items var channelCounts = new Dictionary<int, int>(); foreach ( var channel in allChannels ) { if ( channel.IsAuthorized( Authorization.VIEW, CurrentPerson)) { channelCounts.Add( channel.Id, 0); } } // Get the pending approval item counts for each channel (if the channel requires approval) itemService.Queryable() .Where( i => channelCounts.Keys.Contains( i.ContentChannelId ) && i.Status == ContentChannelItemStatus.PendingApproval && i.ContentChannel.RequiresApproval ) .GroupBy( i => i.ContentChannelId ) .Select( i => new { Id = i.Key, Count = i.Count() }) .ToList() .ForEach( i => channelCounts[i.Id] = i.Count ); // Create a query to return channel, the count of items, and the selected class var qry = allChannels .Where( c => channelCounts.Keys.Contains( c.Id ) ) .Select( c => new { Channel = c, Count = channelCounts[c.Id], Class = ( SelectedChannelId.HasValue && SelectedChannelId.Value == c.Id ) ? "active" : "" } ); // If displaying active only, update query to exclude those content channels without any items if ( tglStatus.Checked ) { qry = qry.Where( c => c.Count > 0 ); } var contentChannels = qry.ToList(); rptChannels.DataSource = contentChannels; rptChannels.DataBind(); ContentChannel selectedChannel = null; if ( SelectedChannelId.HasValue ) { selectedChannel = allChannels .Where( w => w.Id == SelectedChannelId.Value && channelCounts.Keys.Contains( SelectedChannelId.Value ) ) .FirstOrDefault(); } if ( selectedChannel != null && contentChannels.Count > 0 ) { // show the content item panel divItemPanel.Visible = true; BindAttributes( selectedChannel ); AddDynamicControls( selectedChannel ); var itemQry = itemService.Queryable() .Where( i => i.ContentChannelId == selectedChannel.Id ); var drp = new DateRangePicker(); drp.DelimitedValues = gfFilter.GetUserPreference( "Date Range" ); if ( drp.LowerValue.HasValue ) { if ( selectedChannel.ContentChannelType.DateRangeType == ContentChannelDateType.SingleDate ) { itemQry = itemQry.Where( i => i.StartDateTime >= drp.LowerValue.Value ); } else { itemQry = itemQry.Where( i => i.ExpireDateTime.HasValue && i.ExpireDateTime.Value >= drp.LowerValue.Value ); } } if ( drp.UpperValue.HasValue ) { DateTime upperDate = drp.UpperValue.Value.Date.AddDays( 1 ); itemQry = itemQry.Where( i => i.StartDateTime <= upperDate ); } var status = gfFilter.GetUserPreference( "Status" ).ConvertToEnumOrNull<ContentChannelItemStatus>(); if ( status.HasValue ) { itemQry = itemQry.Where( i => i.Status == status ); } string title = gfFilter.GetUserPreference( "Title" ); if (!string.IsNullOrWhiteSpace(title)) { itemQry = itemQry.Where( i => i.Title.Contains( title ) ); } // Filter query by any configured attribute filters if ( AvailableAttributes != null && AvailableAttributes.Any() ) { var attributeValueService = new AttributeValueService( rockContext ); var parameterExpression = attributeValueService.ParameterExpression; foreach ( var attribute in AvailableAttributes ) { var filterControl = phAttributeFilters.FindControl( "filter_" + attribute.Id.ToString() ); if ( filterControl != null ) { var filterValues = attribute.FieldType.Field.GetFilterValues( filterControl, attribute.QualifierValues, Rock.Reporting.FilterMode.SimpleFilter ); var expression = attribute.FieldType.Field.AttributeFilterExpression( attribute.QualifierValues, filterValues, parameterExpression ); if ( expression != null ) { var attributeValues = attributeValueService .Queryable() .Where( v => v.Attribute.Id == attribute.Id ); attributeValues = attributeValues.Where( parameterExpression, expression, null ); itemQry = itemQry.Where( w => attributeValues.Select( v => v.EntityId ).Contains( w.Id ) ); } } } } var items = new List<ContentChannelItem>(); foreach ( var item in itemQry.ToList() ) { if ( item.IsAuthorized( Rock.Security.Authorization.VIEW, CurrentPerson ) ) { items.Add( item ); } } SortProperty sortProperty = gContentChannelItems.SortProperty; if ( sortProperty != null ) { items = items.AsQueryable().Sort( sortProperty ).ToList(); } else { items = items.OrderByDescending( p => p.StartDateTime ).ToList(); } gContentChannelItems.ObjectList = new Dictionary<string, object>(); items.ForEach( i => gContentChannelItems.ObjectList.Add( i.Id.ToString(), i ) ); gContentChannelItems.DataSource = items.Select( i => new { i.Id, i.Guid, i.Title, i.StartDateTime, i.ExpireDateTime, i.Priority, Status = DisplayStatus( i.Status ), Occurrences = i.EventItemOccurrences.Any() } ).ToList(); gContentChannelItems.DataBind(); lContentChannelItems.Text = selectedChannel.Name + " Items"; } else { divItemPanel.Visible = false; } }
/// <summary> /// Binds the payments grid. /// </summary> private void BindPaymentsGrid() { int? instanceId = hfRegistrationInstanceId.Value.AsIntegerOrNull(); if ( instanceId.HasValue ) { using ( var rockContext = new RockContext() ) { var currencyTypes = new Dictionary<int, string>(); var creditCardTypes = new Dictionary<int, string>(); // If configured for a registration and registration is null, return int registrationEntityTypeId = EntityTypeCache.Read( typeof( Rock.Model.Registration ) ).Id; // Get all the registrations for this instance PaymentRegistrations = new RegistrationService( rockContext ) .Queryable( "PersonAlias.Person,Registrants.PersonAlias.Person" ).AsNoTracking() .Where( r => r.RegistrationInstanceId == instanceId.Value && !r.IsTemporary ) .ToList(); // Get the Registration Ids var registrationIds = PaymentRegistrations .Select( r => r.Id ) .ToList(); // Get all the transactions relate to these registrations var qry = new FinancialTransactionService( rockContext ) .Queryable().AsNoTracking() .Where( t => t.TransactionDetails .Any( d => d.EntityTypeId.HasValue && d.EntityTypeId.Value == registrationEntityTypeId && d.EntityId.HasValue && registrationIds.Contains( d.EntityId.Value ) ) ); // Date Range var drp = new DateRangePicker(); drp.DelimitedValues = fPayments.GetUserPreference( "Date Range" ); if ( drp.LowerValue.HasValue ) { qry = qry.Where( t => t.TransactionDateTime >= drp.LowerValue.Value ); } if ( drp.UpperValue.HasValue ) { DateTime upperDate = drp.UpperValue.Value.Date.AddDays( 1 ); qry = qry.Where( t => t.TransactionDateTime < upperDate ); } SortProperty sortProperty = gPayments.SortProperty; if ( sortProperty != null ) { if ( sortProperty.Property == "TotalAmount" ) { if ( sortProperty.Direction == SortDirection.Ascending ) { qry = qry.OrderBy( t => t.TransactionDetails.Sum( d => (decimal?)d.Amount ) ?? 0.00M ); } else { qry = qry.OrderByDescending( t => t.TransactionDetails.Sum( d => (decimal?)d.Amount ) ?? 0.0M ); } } else { qry = qry.Sort( sortProperty ); } } else { qry = qry.OrderByDescending( t => t.TransactionDateTime ).ThenByDescending( t => t.Id ); } gPayments.SetLinqDataSource( qry.AsNoTracking() ); gPayments.DataBind(); } } }
/// <summary> /// Adds the grid columns. /// </summary> /// <param name="dataTable">The data table.</param> private void AddGridColumns( Grid grid, DataTable dataTable ) { bool showColumns = GetAttributeValue( "ShowColumns" ).AsBoolean(); var columnList = GetAttributeValue( "Columns" ).SplitDelimitedValues().ToList(); int rowsToEval = 10; if ( dataTable.Rows.Count < 10 ) { rowsToEval = dataTable.Rows.Count; } grid.Columns.Clear(); if ( !string.IsNullOrWhiteSpace( grid.PersonIdField ) ) { grid.Columns.Add( new SelectField() ); } GridFilterColumnLookup = new Dictionary<Control, string>(); foreach ( DataColumn dataTableColumn in dataTable.Columns ) { if ( columnList.Count > 0 && ( ( showColumns && !columnList.Contains( dataTableColumn.ColumnName, StringComparer.OrdinalIgnoreCase ) ) || ( !showColumns && columnList.Contains( dataTableColumn.ColumnName, StringComparer.OrdinalIgnoreCase ) ) ) ) { continue; } BoundField bf = new BoundField(); var splitCaseName = dataTableColumn.ColumnName.SplitCase(); if ( dataTableColumn.DataType == typeof( bool ) ) { bf = new BoolField(); if ( GridFilter != null ) { var id = "ddl" + dataTableColumn.ColumnName.RemoveSpecialCharacters(); var filterControl = new RockDropDownList() { Label = splitCaseName, ID = id }; GridFilterColumnLookup.Add( filterControl, dataTableColumn.ColumnName ); filterControl.Items.Add( BoolToString( null ) ); filterControl.Items.Add( BoolToString( true ) ); filterControl.Items.Add( BoolToString( false ) ); GridFilter.Controls.Add( filterControl ); var value = GridFilter.GetUserPreference( id ); if ( value != null ) { filterControl.SetValue( value ); } } } else if ( dataTableColumn.DataType == typeof( DateTime ) ) { bf = new DateField(); for ( int i = 0; i < rowsToEval; i++ ) { object dateObj = dataTable.Rows[i][dataTableColumn]; if ( dateObj is DateTime ) { DateTime dateTime = ( DateTime ) dateObj; if ( dateTime.TimeOfDay.Seconds != 0 ) { bf = new DateTimeField(); break; } } } if ( GridFilter != null ) { var id = "drp" + dataTableColumn.ColumnName.RemoveSpecialCharacters(); var filterControl = new DateRangePicker() { Label = splitCaseName, ID = id, }; GridFilterColumnLookup.Add( filterControl, dataTableColumn.ColumnName ); GridFilter.Controls.Add( filterControl ); var value = GridFilter.GetUserPreference( id ); if ( value != null ) { DateTime upper; DateTime lower; if ( DateRangePicker.TryParse( value, out lower, out upper ) ) { filterControl.LowerValue = lower; filterControl.UpperValue = upper; } } } } else { bf.HtmlEncode = false; if ( GridFilter != null ) { var id = "tb" + dataTableColumn.ColumnName.RemoveSpecialCharacters(); var filterControl = new RockTextBox() { Label = splitCaseName, ID = id }; GridFilterColumnLookup.Add( filterControl, dataTableColumn.ColumnName ); GridFilter.Controls.Add( filterControl ); var key = filterControl.ID; var value = GridFilter.GetUserPreference( key ); if ( value != null ) { filterControl.Text = value; } } } bf.DataField = dataTableColumn.ColumnName; bf.SortExpression = dataTableColumn.ColumnName; bf.HeaderText = splitCaseName; grid.Columns.Add( bf ); } }
/// <summary> /// Called by the ASP.NET page framework to notify server controls that use composition-based implementation to create any child controls they contain in preparation for posting back or rendering. /// </summary> protected override void CreateChildControls() { base.CreateChildControls(); Controls.Clear(); RockControlHelper.CreateChildControls( this, Controls ); _ddlLastCurrent = new DropDownList(); _ddlLastCurrent.CssClass = "form-control input-width-md js-slidingdaterange-select slidingdaterange-select"; _ddlLastCurrent.ID = "ddlLastCurrent_" + this.ID; _ddlLastCurrent.SelectedIndexChanged += ddl_SelectedIndexChanged; _nbNumber = new NumberBox(); _nbNumber.CssClass = "form-control input-width-sm js-number slidingdaterange-number"; _nbNumber.NumberType = ValidationDataType.Integer; _nbNumber.ID = "nbNumber_" + this.ID; _nbNumber.Text = "1"; _ddlTimeUnitTypeSingular = new DropDownList(); _ddlTimeUnitTypeSingular.CssClass = "form-control input-width-md js-time-units-singular slidingdaterange-timeunits-singular"; _ddlTimeUnitTypeSingular.ID = "ddlTimeUnitTypeSingular_" + this.ID; _ddlTimeUnitTypeSingular.SelectedIndexChanged += ddl_SelectedIndexChanged; _ddlTimeUnitTypePlural = new DropDownList(); _ddlTimeUnitTypePlural.CssClass = "form-control input-width-md js-time-units-plural slidingdaterange-timeunits-plural"; _ddlTimeUnitTypePlural.ID = "ddlTimeUnitTypePlural_" + this.ID; _ddlTimeUnitTypePlural.SelectedIndexChanged += ddl_SelectedIndexChanged; _drpDateRange = new DateRangePicker(); // change the inputsClass on the DateRangePicker to "" instead of "form-control-group"; _drpDateRange.InputsClass = ""; _drpDateRange.CssClass = "js-time-units-date-range slidingdaterange-daterange"; _drpDateRange.ID = "drpDateRange_" + this.ID; Controls.Add( _ddlLastCurrent ); Controls.Add( _nbNumber ); Controls.Add( _ddlTimeUnitTypeSingular ); Controls.Add( _ddlTimeUnitTypePlural ); Controls.Add( _drpDateRange ); PopulateDropDowns(); }
/// <summary> /// Binds the grid. /// </summary> private void BindGrid() { var rockContext = new RockContext(); var pledgeService = new FinancialPledgeService( rockContext ); var sortProperty = gPledges.SortProperty; var pledges = pledgeService.Queryable(); Person person = null; if ( TargetPerson != null ) { person = TargetPerson; } else { int? personId = gfPledges.GetUserPreference( "Person" ).AsIntegerOrNull(); if ( personId.HasValue && ppFilterPerson.Visible ) { person = new PersonService( rockContext ).Get( personId.Value ); } } if ( person != null ) { // if a person is specified, get pledges for that person ( and also anybody in their GivingUnit ) pledges = pledges.Where( p => p.PersonAlias.Person.GivingId == person.GivingId ); } // get the accounts and make sure they still exist by checking the database var accountIds = gfPledges.GetUserPreference( "Accounts" ).Split( ',' ).AsIntegerList(); accountIds = new FinancialAccountService( rockContext ).GetByIds( accountIds ).Select( a => a.Id ).ToList(); if ( accountIds.Any() && apFilterAccount.Visible ) { pledges = pledges.Where( p => p.AccountId.HasValue && accountIds.Contains( p.AccountId.Value ) ); } // Date Range var drp = new DateRangePicker(); drp.DelimitedValues = gfPledges.GetUserPreference( "Date Range" ); var filterStartDate = drp.LowerValue ?? DateTime.MinValue; var filterEndDate = drp.UpperValue ?? DateTime.MaxValue; if (filterEndDate != DateTime.MaxValue) { filterEndDate = filterEndDate.AddDays( 1 ); } /**** * Include any pledges whose Start/EndDates overlap with the Filtered Date Range * * * Pledge1 Range 1/1/2011 - 12/31/2011 * * Pledge2 Range 1/1/0000 - 1/1/9999 * * Pledge3 Range 6/1/2011 - 6/1/2012 * * Filter1 Range 1/1/2010 - 1/1/2013 * * * All Pledges should show * Filter1 Range 1/1/2012 - 1/1/2013 * * * Pledge2 and Pledge3 should show * Filter2 Range 5/1/2012 - 5/2/2012 * * * Pledge2 and Pledge3 should show * Filter3 Range 5/1/2012 - 1/1/9999 * * * Pledge2 and Pledge3 should show * Filter4 Range 5/1/2010 - 5/1/2010 * * * Pledge2 should show ***/ // exclude pledges that start after the filter's end date or end before the filter's start date if ( drpDates.Visible ) { pledges = pledges.Where( p => !(p.StartDate > filterEndDate) && !(p.EndDate < filterStartDate) ); } // Last Modified drp.DelimitedValues = gfPledges.GetUserPreference( "Last Modified" ); filterStartDate = drp.LowerValue ?? DateTime.MinValue; filterEndDate = drp.UpperValue ?? DateTime.MaxValue; if (filterEndDate != DateTime.MaxValue) { filterEndDate = filterEndDate.AddDays( 1 ); } if ( drpLastModifiedDates.Visible ) { pledges = pledges.Where( p => !(p.ModifiedDateTime >= filterEndDate) && !(p.ModifiedDateTime <= filterStartDate) ); } gPledges.DataSource = sortProperty != null ? pledges.Sort( sortProperty ).ToList() : pledges.OrderBy( p => p.AccountId ).ToList(); gPledges.DataBind(); }
/// <summary> /// Binds the grid. /// </summary> protected void BindGrid() { var attendanceService = new AttendanceService( new RockContext() ); var attendanceQuery = attendanceService.Queryable(); if ( _person != null ) { attendanceQuery = attendanceQuery.Where( a => a.PersonId == _person.Id ); } else if ( _group != null ) { attendanceQuery = attendanceQuery.Where( a => a.GroupId == _group.Id ); } var attendanceList = attendanceQuery.ToList(); var qry = attendanceList.AsQueryable() .Select( a => new { Location = a.Location, Schedule = a.Schedule, FullName = a.Person.FullName, Group = a.Group, StartDateTime = a.StartDateTime, EndDateTime = a.EndDateTime } ); // Filter by Date Range var drp = new DateRangePicker(); drp.DelimitedValues = rFilter.GetUserPreference( "Date Range" ); if ( drp.LowerValue.HasValue ) { qry = qry.Where( t => t.StartDateTime >= drp.LowerValue.Value ); } if ( drp.UpperValue.HasValue ) { DateTime upperDate = drp.UpperValue.Value.Date.AddDays( 1 ); qry = qry.Where( t => t.EndDateTime < upperDate ); } // Filter by Person if ( ddlPeople.SelectedIndex > 0 ) { if ( ddlPeople.SelectedValue.ToLower() != "all" ) { qry = qry.Where( h => h.FullName == ddlPeople.SelectedValue ); } } // Filter by Group if ( ddlGroups.SelectedIndex > 0 ) { if ( ddlGroups.SelectedValue.ToLower() != "all" ) { qry = qry.Where( h => h.Group.Name == ddlGroups.SelectedValue ); } } // Filter by Schedule if ( ddlSchedules.SelectedIndex > 0 ) { if ( ddlSchedules.SelectedValue.ToLower() != "all" ) { qry = qry.Where( h => h.Schedule.Name == ddlSchedules.SelectedValue ); } } SortProperty sortProperty = gHistory.SortProperty; if ( sortProperty != null ) { qry = qry.Sort( sortProperty ); } else { qry = qry.OrderByDescending( p => p.StartDateTime ); } gHistory.DataSource = qry.ToList(); gHistory.DataBind(); }
/// <summary> /// Initializes a new instance of the <see cref="ScheduleBuilder"/> class. /// </summary> public ScheduleBuilderPopupContents() { // common _dpStartDateTime = new DateTimePicker(); _tbDurationHours = new NumberBox(); _tbDurationMinutes = new NumberBox(); _radOneTime = new RadioButton(); _radRecurring = new RadioButton(); _radSpecificDates = new RadioButton(); _radDaily = new RadioButton(); _radWeekly = new RadioButton(); _radMonthly = new RadioButton(); // specific date _hfSpecificDateListValues = new HiddenField(); _dpSpecificDate = new DatePicker(); // daily _radDailyEveryXDays = new RadioButton(); _tbDailyEveryXDays = new NumberBox(); _radDailyEveryWeekday = new RadioButton(); _radDailyEveryWeekendDay = new RadioButton(); // weekly _tbWeeklyEveryX = new NumberBox(); _cbWeeklySunday = new RockCheckBox(); _cbWeeklyMonday = new RockCheckBox(); _cbWeeklyTuesday = new RockCheckBox(); _cbWeeklyWednesday = new RockCheckBox(); _cbWeeklyThursday = new RockCheckBox(); _cbWeeklyFriday = new RockCheckBox(); _cbWeeklySaturday = new RockCheckBox(); // monthly _radMonthlyDayX = new RadioButton(); _tbMonthlyDayX = new NumberBox(); _tbMonthlyXMonths = new NumberBox(); _radMonthlyNth = new RadioButton(); _ddlMonthlyNth = new RockDropDownList(); _ddlMonthlyDayName = new RockDropDownList(); // end date _radEndByNone = new RadioButton(); _radEndByDate = new RadioButton(); _dpEndBy = new DatePicker(); _radEndByOccurrenceCount = new RadioButton(); _tbEndByOccurrenceCount = new NumberBox(); // exclusions _hfExclusionDateRangeListValues = new HiddenField(); _dpExclusionDateRange = new DateRangePicker(); }
/// <summary> /// Binds the grid. /// </summary> private void BindGrid() { int? metricId = hfMetricId.Value.AsIntegerOrNull(); if ( !metricId.HasValue ) { return; } var rockContext = new RockContext(); SortProperty sortProperty = gMetricValues.SortProperty; MetricValueService metricValueService = new MetricValueService( rockContext ); var qry = metricValueService.Queryable(); qry = qry.Where( a => a.MetricId == metricId ); var entityColumn = gMetricValues.Columns.OfType<BoundField>().FirstOrDefault( a => a.DataField == "EntityId" ); var metric = new MetricService( rockContext ).Get( metricId ?? 0 ); entityColumn.Visible = metric != null && metric.EntityTypeId.HasValue; if ( metric != null ) { _entityNameLookup = new Dictionary<int, string>(); var entityTypeCache = EntityTypeCache.Read( metric.EntityTypeId ?? 0 ); if ( entityTypeCache != null ) { entityColumn.HeaderText = entityTypeCache.FriendlyName; IQueryable<IEntity> entityQry = null; if ( entityTypeCache.GetEntityType() == typeof( Rock.Model.Group ) ) { // special case for Group since there could be a very large number (especially if you include families), so limit to GroupType.ShowInGroupList entityQry = new GroupService( rockContext ).Queryable().Where( a => a.GroupType.ShowInGroupList ); } else { Type[] modelType = { entityTypeCache.GetEntityType() }; Type genericServiceType = typeof( Rock.Data.Service<> ); Type modelServiceType = genericServiceType.MakeGenericType( modelType ); var serviceInstance = Activator.CreateInstance( modelServiceType, new object[] { rockContext } ) as IService; MethodInfo qryMethod = serviceInstance.GetType().GetMethod( "Queryable", new Type[] { } ); entityQry = qryMethod.Invoke( serviceInstance, new object[] { } ) as IQueryable<IEntity>; } if ( entityQry != null ) { var entityList = entityQry.ToList(); foreach ( var e in entityList ) { _entityNameLookup.AddOrReplace( e.Id, e.ToString() ); } } } } var drp = new DateRangePicker(); drp.DelimitedValues = gfMetricValues.GetUserPreference( "Date Range" ); if ( drp.LowerValue.HasValue ) { qry = qry.Where( a => a.MetricValueDateTime >= drp.LowerValue.Value ); } if ( drp.UpperValue.HasValue ) { DateTime upperDate = drp.UpperValue.Value.Date.AddDays( 1 ); qry = qry.Where( a => a.MetricValueDateTime < upperDate ); } var metricValueType = gfMetricValues.GetUserPreference( "Goal/Measure" ).ConvertToEnumOrNull<MetricValueType>(); if ( metricValueType.HasValue ) { qry = qry.Where( a => a.MetricValueType == metricValueType.Value ); } var entityParts = gfMetricValues.GetUserPreference( this.EntityPreferenceKey ).Split( '|' ); if ( entityParts.Length == 2 ) { if ( entityParts[0].AsInteger() == metric.EntityTypeId ) { var entityId = entityParts[1].AsIntegerOrNull(); if ( entityId.HasValue ) { qry = qry.Where( a => a.EntityId == entityId ); } } } if ( sortProperty != null ) { gMetricValues.DataSource = qry.Sort( sortProperty ).ToList(); } else { gMetricValues.DataSource = qry.OrderBy( s => s.Order ).ThenBy( s => s.MetricValueDateTime ).ThenBy( s => s.YValue ).ThenBy( s => s.XValue ).ToList(); } gMetricValues.DataBind(); }
/// <summary> /// Creates the control(s) necessary for prompting user for a new value /// </summary> /// <param name="configurationValues">The configuration values.</param> /// <param name="id"></param> /// <returns> /// The control /// </returns> public override Control EditControl( System.Collections.Generic.Dictionary<string, ConfigurationValue> configurationValues, string id ) { var dateRangePicker = new DateRangePicker { ID = id }; return dateRangePicker; }
/// <summary> /// Binds the grid. /// </summary> private void BindGrid() { var queryable = new FinancialTransactionService().Queryable(); // Set up the selection filter if ( _batch != null ) { // If transactions are for a batch, the filter is hidden so only check the batch id queryable = queryable.Where( t => t.BatchId.HasValue && t.BatchId.Value == _batch.Id ); } else { // otherwise set the selection based on filter settings if ( _person != null ) { queryable = queryable.Where( t => t.AuthorizedPersonId == _person.Id ); } // Date Range var drp = new DateRangePicker(); drp.DelimitedValues = rFilter.GetUserPreference( "Date Range" ); if ( drp.LowerValue.HasValue ) { queryable = queryable.Where( t => t.TransactionDateTime >= drp.LowerValue.Value ); } if ( drp.UpperValue.HasValue ) { DateTime upperDate = drp.UpperValue.Value.Date.AddDays( 1 ); queryable = queryable.Where( t => t.TransactionDateTime < upperDate ); } // Amount Range var nre = new NumberRangeEditor(); nre.DelimitedValues = rFilter.GetUserPreference( "Amount Range" ); if ( nre.LowerValue.HasValue ) { queryable = queryable.Where( t => t.Amount >= nre.LowerValue.Value ); } if ( nre.UpperValue.HasValue ) { queryable = queryable.Where( t => t.Amount <= nre.UpperValue.Value ); } // Transaction Code string transactionCode = rFilter.GetUserPreference( "Transaction Code" ); if ( !string.IsNullOrWhiteSpace( transactionCode ) ) { queryable = queryable.Where( t => t.TransactionCode == transactionCode.Trim() ); } // Account Id int accountId = int.MinValue; if ( int.TryParse( rFilter.GetUserPreference( "Account" ), out accountId ) ) { queryable = queryable.Where( t => t.TransactionDetails.Any( d => d.AccountId == accountId ) ); } // Transaction Type int transactionTypeId = int.MinValue; if ( int.TryParse( rFilter.GetUserPreference( "Transaction Type" ), out transactionTypeId ) ) { queryable = queryable.Where( t => t.TransactionTypeValueId == transactionTypeId ); } // Currency Type int currencyTypeId = int.MinValue; if ( int.TryParse( rFilter.GetUserPreference( "Currency Type" ), out currencyTypeId ) ) { queryable = queryable.Where( t => t.CurrencyTypeValueId == currencyTypeId ); } // Credit Card Type int creditCardTypeId = int.MinValue; if ( int.TryParse( rFilter.GetUserPreference( "Credit Card Type" ), out creditCardTypeId ) ) { queryable = queryable.Where( t => t.CreditCardTypeValueId == creditCardTypeId ); } // Source Type int sourceTypeId = int.MinValue; if ( int.TryParse( rFilter.GetUserPreference( "Source Type" ), out sourceTypeId ) ) { queryable = queryable.Where( t => t.SourceTypeValueId == sourceTypeId ); } } SortProperty sortProperty = rGridTransactions.SortProperty; if ( sortProperty != null ) { queryable = queryable.Sort( sortProperty ); } else { queryable = queryable.OrderBy( t => t.TransactionDateTime ); } rGridTransactions.DataSource = queryable.AsNoTracking().ToList(); rGridTransactions.DataBind(); }