/// <summary> /// Binds the grid. /// </summary> private void BindGrid() { // If configured for a person and person is null, return int personEntityTypeId = EntityTypeCache.Read<Person>().Id; if ( ContextTypesRequired.Any( e => e.Id == personEntityTypeId ) && _person == null ) { return; } var rockContext = new RockContext(); var qryCommunications = new CommunicationService( rockContext ).Queryable().Where( c => c.Status != CommunicationStatus.Transient ); string subject = tbSubject.Text; if ( !string.IsNullOrWhiteSpace( subject ) ) { qryCommunications = qryCommunications.Where( c => c.Subject.Contains( subject ) ); } Guid? entityTypeGuid = cpMedium.SelectedValue.AsGuidOrNull(); if ( entityTypeGuid.HasValue ) { qryCommunications = qryCommunications.Where( c => c.MediumEntityType != null && c.MediumEntityType.Guid.Equals( entityTypeGuid.Value ) ); } var communicationStatus = ddlStatus.SelectedValue.ConvertToEnumOrNull<CommunicationStatus>(); if ( communicationStatus.HasValue ) { qryCommunications = qryCommunications.Where( c => c.Status == communicationStatus.Value ); } // only communications for the selected recipient (_person) if ( _person != null ) { qryCommunications = qryCommunications .Where( c => c.Recipients.Any( a => a.PersonAlias.PersonId == _person.Id && a.Status == CommunicationRecipientStatus.Delivered ) ); } if ( drpDates.LowerValue.HasValue ) { qryCommunications = qryCommunications.Where( a => a.CreatedDateTime >= drpDates.LowerValue.Value ); } if ( drpDates.UpperValue.HasValue ) { DateTime upperDate = drpDates.UpperValue.Value.Date.AddDays( 1 ); qryCommunications = qryCommunications.Where( a => a.CreatedDateTime < upperDate ); } string content = tbContent.Text; if ( !string.IsNullOrWhiteSpace( content ) ) { qryCommunications = qryCommunications.Where( c => c.MediumDataJson.Contains( content ) ); } var sortProperty = gCommunication.SortProperty; if ( sortProperty != null ) { qryCommunications = qryCommunications.Sort( sortProperty ); } else { qryCommunications = qryCommunications.OrderByDescending( c => c.CreatedDateTime ); } gCommunication.EntityTypeId = EntityTypeCache.Read<Rock.Model.Communication>().Id; gCommunication.SetLinqDataSource( qryCommunications.Include(a => a.MediumEntityType).AsNoTracking() ); gCommunication.DataBind(); }