本文整理汇总了C#中Rock.Model.GroupMemberService.WhereAttributeValue方法的典型用法代码示例。如果您正苦于以下问题:C# GroupMemberService.WhereAttributeValue方法的具体用法?C# GroupMemberService.WhereAttributeValue怎么用?C# GroupMemberService.WhereAttributeValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Rock.Model.GroupMemberService
的用法示例。
在下文中一共展示了GroupMemberService.WhereAttributeValue方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Execute
/// <summary>
/// Executes the specified workflow.
/// </summary>
/// <param name="rockContext">The rock context.</param>
/// <param name="action">The action.</param>
/// <param name="entity">The entity.</param>
/// <param name="errorMessages">The error messages.</param>
/// <returns></returns>
public override bool Execute( RockContext rockContext, WorkflowAction action, Object entity, out List<string> errorMessages )
{
errorMessages = new List<string>();
Guid? groupGuid = null;
string filterValue = string.Empty;
string filterKey = string.Empty;
// get the group attribute
groupGuid = GetAttributeValue( action, "SelectionGroup" ).AsGuid();
if ( !groupGuid.HasValue )
{
errorMessages.Add("The selection group could not be found!");
}
// get filter key
filterKey = GetAttributeValue( action, "GroupMemberAttributeKey" );
// get the filter value
filterValue = GetAttributeValue( action, "FilterValue" );
Guid? filterValueGuid = filterValue.AsGuidOrNull();
if ( filterValueGuid.HasValue )
{
filterValue = action.GetWorklowAttributeValue( filterValueGuid.Value );
}
else
{
filterValue = filterValue.ResolveMergeFields( GetMergeFields( action ) );
}
// get group members
var qry = new GroupMemberService( rockContext ).Queryable().AsNoTracking()
.Where( g => g.Group.Guid == groupGuid );
if (!string.IsNullOrWhiteSpace(filterKey)){
qry = qry.WhereAttributeValue( rockContext, filterKey, filterValue );
}
var groupMembers = qry.Select( g => new {
g.Person.NickName,
g.Person.LastName,
g.Person.SuffixValueId,
PrimaryAliasGuid = g.Person.Aliases.FirstOrDefault().Guid } )
.ToList();
if ( groupMembers.Count() > 0 )
{
// get random group member from options
Random rnd = new Random();
int r = rnd.Next( groupMembers.Count );
var selectedGroupMember = groupMembers[r];
// set value
Guid selectPersonGuid = GetAttributeValue( action, "SelectedPerson" ).AsGuid();
if ( !selectPersonGuid.IsEmpty() )
{
var selectedPersonAttribute = AttributeCache.Read( selectPersonGuid, rockContext );
if ( selectedPersonAttribute != null )
{
// If this is a person type attribute
if ( selectedPersonAttribute.FieldTypeId == FieldTypeCache.Read( Rock.SystemGuid.FieldType.PERSON.AsGuid(), rockContext ).Id )
{
SetWorkflowAttributeValue( action, selectPersonGuid, selectedGroupMember.PrimaryAliasGuid.ToString() );
}
else if ( selectedPersonAttribute.FieldTypeId == FieldTypeCache.Read( Rock.SystemGuid.FieldType.TEXT.AsGuid(), rockContext ).Id )
{
SetWorkflowAttributeValue( action, selectPersonGuid, Person.FormatFullName(selectedGroupMember.NickName, selectedGroupMember.LastName, selectedGroupMember.SuffixValueId) );
}
}
}
}
else
{
errorMessages.Add( "No group member for the selected campus could be found." );
}
errorMessages.ForEach( m => action.AddLogEntry( m, true ) );
return true;
}