本文整理汇总了C#中Rock.Model.GroupMemberService.Any方法的典型用法代码示例。如果您正苦于以下问题:C# GroupMemberService.Any方法的具体用法?C# GroupMemberService.Any怎么用?C# GroupMemberService.Any使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Rock.Model.GroupMemberService
的用法示例。
在下文中一共展示了GroupMemberService.Any方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: BindGrid
/// <summary>
/// Binds the grid.
/// </summary>
private void BindGrid()
{
var rockContext = new RockContext();
var transactionIdsQry = new FinancialTransactionService( rockContext ).Queryable();
var transactionDetailService = new FinancialTransactionDetailService( rockContext );
var qry = transactionDetailService.Queryable();
var targetPerson = this.ContextEntity<Person>();
if ( targetPerson != null )
{
if ( targetPerson.GivingGroupId.HasValue )
{
// gives as part of giving group
var groupMemberQry = new GroupMemberService( rockContext ).GetByGroupId( targetPerson.GivingGroupId.Value );
qry = qry.Where( a => groupMemberQry.Any( b => b.PersonId == a.Transaction.AuthorizedPersonAlias.PersonId ) );
}
else
{
// gives individually
qry = qry.Where( a => a.Transaction.AuthorizedPersonAlias.PersonId == targetPerson.Id );
}
}
var qryTransactionsDetailsByYear = qry
.Where( a => a.Transaction.TransactionDateTime.HasValue )
.GroupBy( a => SqlFunctions.DatePart( "year", a.Transaction.TransactionDateTime.Value ) );
var qryAccountSummariesByYear = qryTransactionsDetailsByYear.Select( a => new
{
Year = a.Key,
Accounts = a.GroupBy( b => b.Account ).Select( c => new
{
Account = c.Key,
TotalAmount = c.Sum( d => d.Amount )
} ).OrderBy( e => e.Account.Name )
} ).OrderByDescending( a => a.Year );
var summaryList = qryAccountSummariesByYear.ToList();
var mergeObjects = GlobalAttributesCache.GetMergeFields( this.CurrentPerson );
var yearsMergeObjects = new List<Dictionary<string, object>>();
foreach ( var item in summaryList )
{
var accountsList = new List<object>();
foreach ( var a in item.Accounts )
{
var accountDictionary = new Dictionary<string, object>();
accountDictionary.Add( "Account", a.Account );
accountDictionary.Add( "TotalAmount", a.TotalAmount );
accountsList.Add( accountDictionary );
}
var yearDictionary = new Dictionary<string, object>();
yearDictionary.Add( "Year", item.Year );
yearDictionary.Add( "SummaryRows", accountsList );
yearsMergeObjects.Add( yearDictionary );
}
mergeObjects.Add( "Rows", yearsMergeObjects );
lLavaOutput.Text = string.Empty;
if ( GetAttributeValue( "EnableDebug" ).AsBooleanOrNull().GetValueOrDefault( false ) )
{
lLavaOutput.Text = mergeObjects.lavaDebugInfo( rockContext );
}
string template = GetAttributeValue( "LavaTemplate" );
lLavaOutput.Text += template.ResolveMergeFields( mergeObjects ).ResolveClientIds( upnlContent.ClientID );
}
示例2: modalAddPerson_SaveClick
/// <summary>
/// Handles the SaveClick event of the modalAddPerson control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
void modalAddPerson_SaveClick( object sender, EventArgs e )
{
if ( hfActiveTab.Value == "Existing" )
{
if ( ppPerson.PersonId.HasValue && !FamilyMembers.Any( m => m.Id == ppPerson.PersonId.Value ) )
{
var rockContext = new RockContext();
var person = new PersonService( rockContext ).Get( ppPerson.PersonId.Value );
if ( person != null )
{
var familyMember = new FamilyMember();
familyMember.SetValuesFromPerson( person );
var familyRoleIds = familyRoles.Select( r => r.Id ).ToList();
var existingFamilyRoles = new GroupMemberService( rockContext ).Queryable( "GroupRole" )
.Where( m => m.PersonId == person.Id && familyRoleIds.Contains( m.GroupRoleId ) )
.OrderBy( m => m.GroupRole.Order )
.ToList();
var existingRole = existingFamilyRoles.Select( m => m.GroupRole ).FirstOrDefault();
if ( existingRole != null )
{
familyMember.RoleGuid = existingRole.Guid;
familyMember.RoleName = existingRole.Name;
}
familyMember.ExistingFamilyMember = existingFamilyRoles.Any( r => r.GroupId == _family.Id );
familyMember.RemoveFromOtherFamilies = cbRemoveOtherFamilies.Checked;
FamilyMembers.Add( familyMember );
}
}
}
else
{
var familyMember = new FamilyMember();
familyMember.FirstName = tbNewPersonFirstName.Text;
familyMember.NickName = tbNewPersonFirstName.Text;
familyMember.LastName = tbNewPersonLastName.Text;
familyMember.Gender = ddlNewPersonGender.SelectedValueAsEnum<Gender>();
familyMember.BirthDate = dpNewPersonBirthDate.SelectedDate;
var role = familyRoles.Where( r => r.Id == ( rblNewPersonRole.SelectedValueAsInt() ?? 0 ) ).FirstOrDefault();
if ( role != null )
{
familyMember.RoleGuid = role.Guid;
familyMember.RoleName = role.Name;
}
FamilyMembers.Add( familyMember );
}
ppPerson.Required = false;
tbNewPersonFirstName.Required = false;
tbNewPersonLastName.Required = false;
confirmExit.Enabled = true;
hfActiveTab.Value = string.Empty;
modalAddPerson.Hide();
BindMembers();
}
示例3: Execute
//.........这里部分代码省略.........
var inactiveRecordValue = DefinedValueCache.Read( SystemGuid.DefinedValue.PERSON_RECORD_STATUS_INACTIVE );
var groupTypeEntityTypeId = EntityTypeCache.Read( "Rock.Model.GroupType" ).Id;
foreach ( var groupTypeGuid in groupTypeGuids )
{
var groupType = GroupTypeCache.Read( groupTypeGuid.AsGuid() );
if ( groupType != null )
{
// if the person is in a group of that type and the last history record for that group type isn't START write a start
RockContext rockContext = new RockContext();
// get history for this group type
var historyRecords = new HistoryService( rockContext ).Queryable()
.Where( h =>
h.EntityTypeId == personEntityTypeId
&& h.RelatedEntityTypeId == groupTypeEntityTypeId
&& h.RelatedEntityId == groupType.Id
)
.GroupBy( h => h.EntityId )
.Select( g => g.OrderByDescending( h => h.CreatedDateTime ).Select( h => new { h.EntityId, h.Verb } ).FirstOrDefault() )
.ToList();
// get group member information
var groupMemberInfo = new GroupMemberService( rockContext ).Queryable()
.Where( m =>
m.Group.GroupTypeId == groupType.Id
&& m.GroupMemberStatus == GroupMemberStatus.Active
&& m.Group.IsActive
//&& m.Person.RecordStatusValueId != inactiveRecordValue.Id
)
.GroupBy( m => m.PersonId )
.Select( g => g.OrderBy( m => m.CreatedDateTime ).Select( m => new { m.PersonId, m.CreatedDateTime, PersonAliasId = m.Person.Aliases.Select( p => p.Id ).FirstOrDefault() } ).FirstOrDefault() )
.ToList();
var needsStartDate = groupMemberInfo.Where( m => !historyRecords.Any( h => h.EntityId == m.PersonId && h.Verb == "STARTED" ) );
foreach ( var startItem in needsStartDate )
{
using ( RockContext updateContext = new RockContext() )
{
var historyService = new HistoryService( updateContext );
History history = new History();
historyService.Add( history );
history.EntityTypeId = personEntityTypeId;
history.EntityId = startItem.PersonId;
history.RelatedEntityTypeId = groupTypeEntityTypeId;
history.RelatedEntityId = groupType.Id;
history.Caption = groupType.Name;
history.Summary = "Started Membership in Group Of Type";
history.Verb = "STARTED";
history.CreatedDateTime = startItem.CreatedDateTime;
history.CreatedByPersonAliasId = startItem.PersonAliasId;
history.CategoryId = personAnalyticsCategoryId;
updateContext.SaveChanges();
}
}
var needsStoppedDate = historyRecords.Where( h => h.Verb == "STARTED" && !groupMemberInfo.Any( m => m.PersonId == h.EntityId ) );
foreach ( var stopItem in needsStoppedDate )
{
using ( RockContext updateContext = new RockContext() )
{
var person = new PersonService( updateContext ).Get( stopItem.EntityId );
if ( person != null )
{
var historyService = new HistoryService( updateContext );
History history = new History();
historyService.Add( history );
history.EntityTypeId = personEntityTypeId;
history.EntityId = person.Id;
history.RelatedEntityTypeId = groupTypeEntityTypeId;
history.RelatedEntityId = groupType.Id;
history.Caption = groupType.Name;
history.Summary = "Stopped Membership in Group Of Type";
history.Verb = "STOPPED";
history.CreatedDateTime = RockDateTime.Now;
history.CreatedByPersonAliasId = person.PrimaryAliasId;
history.CategoryId = personAnalyticsCategoryId;
updateContext.SaveChanges();
}
}
}
}
}
}
// process visit dates
if ( updateVisitDates )
{
resultContext.Database.ExecuteSqlCommand( "spCrm_FamilyAnalyticsUpdateVisitDates" );
}
}
示例4: GetExpression
/// <summary>
/// Creates a Linq Expression that can be applied to an IQueryable to filter the result set.
/// </summary>
/// <param name="entityType">The type of entity in the result set.</param>
/// <param name="serviceInstance">A service instance that can be queried to obtain the result set.</param>
/// <param name="parameterExpression">The input parameter that will be injected into the filter expression.</param>
/// <param name="selection">A formatted string representing the filter settings.</param>
/// <returns>
/// A Linq Expression that can be used to filter an IQueryable.
/// </returns>
/// <exception cref="System.Exception">Filter issue(s): + errorMessages.AsDelimited( ; )</exception>
public override Expression GetExpression( Type entityType, IService serviceInstance, ParameterExpression parameterExpression, string selection )
{
var settings = new FilterSettings( selection );
var context = (RockContext)serviceInstance.Context;
// Get the Location Data View that defines the set of candidates from which proximate Locations can be selected.
var dataView = DataComponentSettingsHelper.GetDataViewForFilterComponent( settings.DataViewGuid, context );
// Evaluate the Data View that defines the candidate Locations.
var locationService = new LocationService( context );
var locationQuery = locationService.Queryable();
if ( dataView != null )
{
locationQuery = DataComponentSettingsHelper.FilterByDataView( locationQuery, dataView, locationService );
}
// Get all the Family Groups that have a Location matching one of the candidate Locations.
int familyGroupTypeId = GroupTypeCache.Read( SystemGuid.GroupType.GROUPTYPE_FAMILY.AsGuid() ).Id;
var groupLocationsQuery = new GroupLocationService( context ).Queryable()
.Where( gl => gl.Group.GroupTypeId == familyGroupTypeId && locationQuery.Any( l => l.Id == gl.LocationId ) );
// If a Location Type is specified, apply the filter condition.
if (settings.LocationTypeGuid.HasValue)
{
int groupLocationTypeId = DefinedValueCache.Read( settings.LocationTypeGuid.Value ).Id;
groupLocationsQuery = groupLocationsQuery.Where( x => x.GroupLocationTypeValue.Id == groupLocationTypeId );
}
// Get all of the Group Members of the qualifying Families.
var groupMemberServiceQry = new GroupMemberService( context ).Queryable()
.Where( gm => groupLocationsQuery.Any( gl => gl.GroupId == gm.GroupId ) );
// Get all of the People corresponding to the qualifying Group Members.
var qry = new PersonService( context ).Queryable()
.Where( p => groupMemberServiceQry.Any( gm => gm.PersonId == p.Id ) );
// Retrieve the Filter Expression.
var extractedFilterExpression = FilterExpressionExtractor.Extract<Model.Person>( qry, parameterExpression, "p" );
return extractedFilterExpression;
}
示例5: modalAddPerson_SaveClick
/// <summary>
/// Handles the SaveClick event of the modalAddPerson control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
void modalAddPerson_SaveClick( object sender, EventArgs e )
{
if ( hfActiveTab.Value == "Existing" )
{
if ( ppPerson.PersonId.HasValue )
{
var existingfamilyMember = FamilyMembers.Where( m => m.Id == ppPerson.PersonId.Value ).FirstOrDefault();
if ( existingfamilyMember != null )
{
existingfamilyMember.Removed = false;
}
else
{
var rockContext = new RockContext();
var person = new PersonService( rockContext ).Get( ppPerson.PersonId.Value );
if ( person != null )
{
var familyMember = new FamilyMember();
familyMember.SetValuesFromPerson( person );
var familyRoleIds = familyRoles.Select( r => r.Id ).ToList();
var existingFamilyRoles = new GroupMemberService( rockContext ).Queryable( "GroupRole" )
.Where( m => m.PersonId == person.Id && familyRoleIds.Contains( m.GroupRoleId ) )
.OrderBy( m => m.GroupRole.Order )
.ToList();
var existingRole = existingFamilyRoles.Select( m => m.GroupRole ).FirstOrDefault();
if ( existingRole != null )
{
familyMember.RoleGuid = existingRole.Guid;
familyMember.RoleName = existingRole.Name;
}
familyMember.ExistingFamilyMember = existingFamilyRoles.Any( r => r.GroupId == _family.Id );
familyMember.RemoveFromOtherFamilies = cbRemoveOtherFamilies.Checked;
FamilyMembers.Add( familyMember );
}
}
}
}
else
{
var familyMember = new FamilyMember();
familyMember.TitleValueId = ddlNewPersonTitle.SelectedValueAsId();
familyMember.FirstName = tbNewPersonFirstName.Text;
familyMember.NickName = tbNewPersonFirstName.Text;
familyMember.LastName = tbNewPersonLastName.Text;
familyMember.SuffixValueId = ddlNewPersonSuffix.SelectedValueAsId();
familyMember.Gender = rblNewPersonGender.SelectedValueAsEnum<Gender>();
familyMember.MaritalStatusValueId = ddlNewPersonMaritalStatus.SelectedValueAsInt();
DateTime? birthdate = dpNewPersonBirthDate.SelectedDate;
if ( birthdate.HasValue )
{
// If setting a future birthdate, subtract a century until birthdate is not greater than today.
var today = RockDateTime.Today;
while ( birthdate.Value.CompareTo( today ) > 0 )
{
birthdate = birthdate.Value.AddYears( -100 );
}
}
familyMember.BirthDate = birthdate;
familyMember.GradeOffset = ddlGradePicker.SelectedValueAsInt();
familyMember.ConnectionStatusValueId = ddlNewPersonConnectionStatus.SelectedValueAsId();
var role = familyRoles.Where( r => r.Id == ( rblNewPersonRole.SelectedValueAsInt() ?? 0 ) ).FirstOrDefault();
if ( role != null )
{
familyMember.RoleGuid = role.Guid;
familyMember.RoleName = role.Name;
}
FamilyMembers.Add( familyMember );
}
ppPerson.Required = false;
tbNewPersonFirstName.Required = false;
tbNewPersonLastName.Required = false;
rblNewPersonRole.Required = false;
rblNewPersonGender.Required = false;
ddlNewPersonConnectionStatus.Required = false;
confirmExit.Enabled = true;
hfActiveTab.Value = string.Empty;
modalAddPerson.Hide();
BindMembers();
}
示例6: BindDefaultConnectors
/// <summary>
/// Binds the default connectors.
/// </summary>
private void BindDefaultConnectors()
{
var defaultConnectors = new List<DefaultConnector>();
foreach (var campusId in cblSelectedItemsAsInt( cblCampus) )
{
var connectorGroups = ConnectorGroupsState
.Where( g => !g.CampusId.HasValue || g.CampusId.Value == campusId )
.ToList();
if ( connectorGroups.Any() )
{
var groupIds = connectorGroups.Select( g => g.GroupId );
using ( var rockContext = new RockContext() )
{
var people = new GroupMemberService( rockContext )
.Queryable().AsNoTracking()
.Where( m =>
groupIds.Contains( m.GroupId ) &&
m.GroupMemberStatus == GroupMemberStatus.Active )
.Select( m => m.Person )
.ToList();
if ( people.Any() )
{
var defaultConnector = new DefaultConnector();
var campus = CampusCache.Read( campusId );
defaultConnector.CampusId = campus.Id;
defaultConnector.CampusName = campus.Name;
defaultConnector.PersonAliasId = DefaultConnectors.ContainsKey( campusId ) ? DefaultConnectors[campusId] : (int?)null;
defaultConnector.Options = new Dictionary<int, string>();
foreach( var person in people )
{
int? personAliasId = person.PrimaryAliasId;
if( personAliasId.HasValue )
{
defaultConnector.Options.AddOrIgnore(personAliasId.Value, person.FullName);
}
}
defaultConnectors.Add(defaultConnector);
}
}
}
}
lvDefaultConnectors.DataSource = defaultConnectors;
lvDefaultConnectors.DataBind();
}
示例7: ShowForm
/// <summary>
/// Shows the view.
/// </summary>
private void ShowForm()
{
lReceipt.Visible = false;
pnlAddPledge.Visible = true;
if ( CurrentPerson != null )
{
lName.Text = CurrentPerson.FullName;
lName.Visible = true;
tbFirstName.Visible = false;
tbLastName.Visible = false;
tbEmail.Visible = false;
using ( var rockContext = new RockContext() )
{
Guid? groupTypeGuid = GetAttributeValue( "SelectGroupType" ).AsGuidOrNull();
if ( groupTypeGuid.HasValue )
{
var groups = new GroupMemberService( rockContext )
.Queryable().AsNoTracking()
.Where( m =>
m.Group.GroupType.Guid == groupTypeGuid.Value &&
m.PersonId == CurrentPerson.Id &&
m.GroupMemberStatus == GroupMemberStatus.Active &&
m.Group.IsActive )
.Select( m => new
{
m.GroupId,
Name = m.Group.Name,
GroupTypeName = m.Group.GroupType.Name
} )
.ToList()
.Distinct()
.OrderBy( g => g.Name )
.ToList();
if ( groups.Any() )
{
ddlGroup.Label = "For " + groups.First().GroupTypeName;
ddlGroup.DataSource = groups;
ddlGroup.DataBind();
ddlGroup.Visible = true;
}
else
{
ddlGroup.Visible = false;
}
}
else
{
ddlGroup.Visible = false;
}
}
}
else
{
lName.Visible = false;
ddlGroup.Visible = false;
tbFirstName.Visible = true;
tbLastName.Visible = true;
tbEmail.Visible = true;
tbFirstName.Text = string.Empty;
tbLastName.Text = string.Empty;
tbEmail.Text = string.Empty;
}
// Warn if Financial Account is not specified (must be set up by administrator)
var financialAccount = new FinancialAccountService( new RockContext() ).Get( GetAttributeValue( "Account" ).AsGuid() );
if ( financialAccount == null )
{
nbWarningMessage.Text = "Warning: No Account is specified for this pledge. Please contact the administrator.";
nbWarningMessage.Visible = true;
}
else
{
nbWarningMessage.Visible = false;
}
drpDateRange.DelimitedValues = GetAttributeValue( "PledgeDateRange" );
// only show the date range picker if the block setting for date range isn't fully specified
drpDateRange.Visible = drpDateRange.LowerValue == null || drpDateRange.UpperValue == null;
ddlFrequency.Items.Clear();
var frequencies = DefinedTypeCache.Read( Rock.SystemGuid.DefinedType.FINANCIAL_FREQUENCY.AsGuid() ).DefinedValues.OrderBy( a => a.Order ).ThenBy( a => a.Value );
foreach ( var frequency in frequencies )
{
ddlFrequency.Items.Add( new ListItem( frequency.Value, frequency.Id.ToString() ) );
}
ddlFrequency.Visible = GetAttributeValue( "ShowPledgeFrequency" ).AsBooleanOrNull() ?? false;
ddlFrequency.SelectedValue = null;
// if Frequency is Visible, require it if RequirePledgeFrequency
ddlFrequency.Required = ddlFrequency.Visible && ( GetAttributeValue( "RequirePledgeFrequency" ).AsBooleanOrNull() ?? false );
//.........这里部分代码省略.........
示例8: NotifyAdmins
/// <summary>
/// Notifies the admins.
/// </summary>
/// <param name="subject">The subject.</param>
/// <param name="message">The message.</param>
/// <param name="appRoot">The application root.</param>
/// <param name="themeRoot">The theme root.</param>
/// <exception cref="System.Exception">
/// Error sending System Email: Could not read Email Medium Entity Type
/// </exception>
public static void NotifyAdmins( string subject, string message, string appRoot = "", string themeRoot = "" )
{
try
{
List<string> recipients = null;
Guid adminGroup = Rock.SystemGuid.Group.GROUP_ADMINISTRATORS.AsGuid();
using ( var rockContext = new RockContext() )
{
recipients = new GroupMemberService( rockContext ).Queryable()
.Where( m =>
m.Group.Guid.Equals( adminGroup ) &&
m.GroupMemberStatus == GroupMemberStatus.Active &&
m.Person.Email != null &&
m.Person.Email != "" )
.Select( m => m.Person.Email )
.ToList();
}
if ( recipients != null && recipients.Any() )
{
var mediumEntity = EntityTypeCache.Read( Rock.SystemGuid.EntityType.COMMUNICATION_MEDIUM_EMAIL.AsGuid() );
if ( mediumEntity != null )
{
var medium = MediumContainer.GetComponent( mediumEntity.Name );
if ( medium != null && medium.IsActive )
{
var transport = medium.Transport;
if ( transport != null && transport.IsActive )
{
try
{
transport.Send( recipients, null, subject, message, appRoot, themeRoot );
}
catch ( Exception ex1 )
{
throw new Exception( string.Format( "Error sending System Email ({0}).", subject ), ex1 );
}
}
else
{
throw new Exception( string.Format( "Error sending System Email: The '{0}' medium does not have a valid transport, or the transport is not active.", mediumEntity.FriendlyName ) );
}
}
else
{
throw new Exception( string.Format( "Error sending System Email: The '{0}' medium does not exist, or is not active (type: {1}).", mediumEntity.FriendlyName, mediumEntity.Name ) );
}
}
else
{
throw new Exception( "Error sending System Email: Could not read Email Medium Entity Type" );
}
}
}
catch ( Exception ex )
{
ExceptionLogService.LogException( ex, HttpContext.Current );
}
}
示例9: BindGroupMembersGrid
/// <summary>
/// Binds the group members grid.
/// </summary>
protected void BindGroupMembersGrid( bool isExporting = false )
{
if ( _group != null )
{
pnlGroupMembers.Visible = true;
lHeading.Text = string.Format( "{0} {1}", _group.GroupType.GroupTerm, _group.GroupType.GroupMemberTerm.Pluralize() );
if ( _group.GroupType.Roles.Any() )
{
nbRoleWarning.Visible = false;
rFilter.Visible = true;
gGroupMembers.Visible = true;
var rockContext = new RockContext();
if ( _group != null &&
_group.RequiredSignatureDocumentTemplateId.HasValue )
{
Signers = new SignatureDocumentService( rockContext )
.Queryable().AsNoTracking()
.Where( d =>
d.SignatureDocumentTemplateId == _group.RequiredSignatureDocumentTemplateId.Value &&
d.Status == SignatureDocumentStatus.Signed &&
d.BinaryFileId.HasValue &&
d.AppliesToPersonAlias != null )
.OrderByDescending( d => d.LastStatusDate )
.Select( d => d.AppliesToPersonAlias.PersonId )
.ToList();
}
GroupMemberService groupMemberService = new GroupMemberService( rockContext );
var qry = groupMemberService.Queryable( "Person,GroupRole", true ).AsNoTracking()
.Where( m => m.GroupId == _group.Id );
// Filter by First Name
string firstName = tbFirstName.Text;
if ( !string.IsNullOrWhiteSpace( firstName ) )
{
qry = qry.Where( m =>
m.Person.FirstName.StartsWith( firstName ) ||
m.Person.NickName.StartsWith( firstName ) );
}
// Filter by Last Name
string lastName = tbLastName.Text;
if ( !string.IsNullOrWhiteSpace( lastName ) )
{
qry = qry.Where( m => m.Person.LastName.StartsWith( lastName ) );
}
// Filter by role
var validGroupTypeRoles = _group.GroupType.Roles.Select( r => r.Id ).ToList();
var roles = new List<int>();
foreach ( var roleId in cblRole.SelectedValues.AsIntegerList() )
{
if ( validGroupTypeRoles.Contains( roleId ) )
{
roles.Add( roleId );
}
}
if ( roles.Any() )
{
qry = qry.Where( m => roles.Contains( m.GroupRoleId ) );
}
// Filter by Group Member Status
var statuses = new List<GroupMemberStatus>();
foreach ( string status in cblGroupMemberStatus.SelectedValues )
{
if ( !string.IsNullOrWhiteSpace( status ) )
{
statuses.Add( status.ConvertToEnum<GroupMemberStatus>() );
}
}
if ( statuses.Any() )
{
qry = qry.Where( m => statuses.Contains( m.GroupMemberStatus ) );
}
var genders = new List<Gender>();
foreach ( var item in cblGenderFilter.SelectedValues )
{
var gender = item.ConvertToEnum<Gender>();
genders.Add( gender );
}
if ( genders.Any() )
{
qry = qry.Where( m => genders.Contains( m.Person.Gender ) );
}
// Filter by Campus
if ( cpCampusFilter.SelectedCampusId.HasValue )
{
//.........这里部分代码省略.........
示例10: LoadGroups
private void LoadGroups( int? currentGroupId )
{
ddlGroup.Items.Clear();
int? personId = ppPerson.PersonId;
Guid? groupTypeGuid = GetAttributeValue( "SelectGroupType" ).AsGuidOrNull();
if ( personId.HasValue && groupTypeGuid.HasValue )
{
using ( var rockContext = new RockContext() )
{
var groups = new GroupMemberService( rockContext )
.Queryable().AsNoTracking()
.Where( m =>
m.Group.GroupType.Guid == groupTypeGuid.Value &&
m.PersonId == personId.Value &&
m.GroupMemberStatus == GroupMemberStatus.Active &&
m.Group.IsActive )
.Select( m => new
{
m.GroupId,
Name = m.Group.Name
} )
.ToList()
.Distinct()
.OrderBy( g => g.Name )
.ToList();
if ( groups.Any() )
{
ddlGroup.DataSource = groups;
ddlGroup.DataBind();
ddlGroup.Items.Insert(0, new ListItem() );
ddlGroup.SetValue( currentGroupId );
}
}
}
}
示例11: GetExpression
/// <summary>
/// Gets the expression.
/// </summary>
/// <param name="context">The context.</param>
/// <param name="entityIdProperty">The entity identifier property.</param>
/// <param name="selection">The selection.</param>
/// <returns></returns>
public override Expression GetExpression( RockContext context, MemberExpression entityIdProperty, string selection )
{
var settings = new GroupParticipationSelectSettings( selection );
//
// Define Candidate Groups.
//
// Get the Group Data View that defines the set of candidates from which matching Groups can be selected.
var dataView = DataComponentSettingsHelper.GetDataViewForFilterComponent( settings.DataViewGuid, context );
// Evaluate the Data View that defines the candidate Groups.
var groupService = new GroupService( context );
var groupQuery = groupService.Queryable();
if (dataView != null)
{
groupQuery = DataComponentSettingsHelper.FilterByDataView( groupQuery, dataView, groupService );
}
else
{
// Apply a default Group filter to only show Groups that would be visible in a Group List.
groupQuery = groupQuery.Where( x => x.GroupType.ShowInGroupList );
}
var groupKeys = groupQuery.Select( x => x.Id );
//
// Construct the Query to return the list of Group Members matching the filter conditions.
//
var groupMemberQuery = new GroupMemberService( context ).Queryable();
// Filter By Group.
groupMemberQuery = groupMemberQuery.Where( x => groupKeys.Contains( x.GroupId ) );
// Filter By Group Role Type.
switch ( settings.RoleType )
{
case RoleTypeSpecifier.Member:
groupMemberQuery = groupMemberQuery.Where( x => !x.GroupRole.IsLeader );
break;
case RoleTypeSpecifier.Leader:
groupMemberQuery = groupMemberQuery.Where( x => x.GroupRole.IsLeader );
break;
}
// Filter by Group Member Status.
if ( settings.MemberStatus.HasValue )
{
groupMemberQuery = groupMemberQuery.Where( x => x.GroupMemberStatus == settings.MemberStatus.Value );
}
//
// Create a Select Expression to return the requested values.
//
// Set the Output Format of the field.
Expression selectExpression;
if (settings.ListFormat == ListFormatSpecifier.YesNo)
{
// Define a Query to return True/False text indicating if the Person participates in any of the filtered Groups.
// Note that the text must be returned as an Enumerable to satisfy the expected output of this field.
var personGroupsQuery = new PersonService( context ).Queryable()
.Select( p => new List<string> { groupMemberQuery.Any( s => s.PersonId == p.Id ) ? "Yes" : "No" } );
selectExpression = SelectExpressionExtractor.Extract( personGroupsQuery, entityIdProperty, "p" );
}
else
{
// Define a Query to return the collection of filtered Groups for each Person.
Expression<Func<Rock.Model.GroupMember, string>> outputExpression;
if (settings.ListFormat == ListFormatSpecifier.GroupOnly)
{
outputExpression = ( ( m => m.Group.Name ) );
}
else
{
outputExpression = ( ( m => m.Group.Name + " [" + m.GroupRole.Name + "]" ) );
}
// Define a Query to return the collection of filtered Groups for each Person.
var personGroupsQuery = new PersonService( context ).Queryable()
.Select( p => groupMemberQuery.Where( s => s.PersonId == p.Id )
.OrderBy( x => x.Group.Name )
.ThenBy( x => x.GroupRole.Name )
.Select( outputExpression ).AsEnumerable() );
selectExpression = SelectExpressionExtractor.Extract( personGroupsQuery, entityIdProperty, "p" );
}
//.........这里部分代码省略.........