/// <summary> /// Executes the specified workflow. /// </summary> /// <param name="rockContext">The rock context.</param> /// <param name="action">The workflow action.</param> /// <param name="entity">The entity.</param> /// <param name="errorMessages">The error messages.</param> /// <returns></returns> /// <exception cref="System.NotImplementedException"></exception> public override bool Execute( RockContext rockContext, Model.WorkflowAction action, Object entity, out List<string> errorMessages ) { var checkInState = GetCheckInState( entity, out errorMessages ); if ( checkInState != null ) { foreach ( var family in checkInState.CheckIn.Families.Where( f => f.Selected ).ToList() ) { foreach ( var person in family.People ) { foreach ( var kioskGroupType in checkInState.Kiosk.FilteredGroupTypes( checkInState.ConfiguredGroupTypes ) ) { if ( kioskGroupType.KioskGroups.SelectMany( g => g.KioskLocations ).Any( l => l.Location.IsActive ) ) { if ( !person.GroupTypes.Any( g => g.GroupType.Id == kioskGroupType.GroupType.Id ) ) { var checkinGroupType = new CheckInGroupType(); checkinGroupType.GroupType = kioskGroupType.GroupType.Clone( false ); checkinGroupType.GroupType.CopyAttributesFrom( kioskGroupType.GroupType ); person.GroupTypes.Add( checkinGroupType ); } } } } } return true; } return false; }
/// <summary> /// Executes the specified workflow. /// </summary> /// <param name="rockContext">The rock context.</param> /// <param name="action">The workflow action.</param> /// <param name="entity">The entity.</param> /// <param name="errorMessages">The error messages.</param> /// <returns></returns> /// <exception cref="System.NotImplementedException"></exception> public override bool Execute( RockContext rockContext, Model.WorkflowAction action, Object entity, out List<string> errorMessages ) { var checkInState = GetCheckInState( entity, out errorMessages ); if ( checkInState != null ) { foreach ( var family in checkInState.CheckIn.GetFamilies( true ) ) { foreach ( var person in family.People ) { foreach ( var kioskGroupType in checkInState.Kiosk.ActiveGroupTypes( checkInState.ConfiguredGroupTypes ) ) { if ( kioskGroupType.KioskGroups.SelectMany( g => g.KioskLocations ).Any( l => l.IsCheckInActive && l.IsActiveAndNotFull ) ) { if ( !person.GroupTypes.Any( g => g.GroupType.Id == kioskGroupType.GroupType.Id ) ) { var checkinGroupType = new CheckInGroupType(); checkinGroupType.GroupType = kioskGroupType.GroupType; person.GroupTypes.Add( checkinGroupType ); } } } } } return true; } return false; }
/// <summary> /// Initializes a new instance of the <see cref="CheckInPersonSummary" /> class. /// </summary> /// <param name="label">The label.</param> /// <param name="schedule">The schedule.</param> /// <param name="groupType">Type of the group.</param> /// <param name="group">The group.</param> /// <param name="location">The location.</param> public CheckInPersonSummary(KioskLabel label, CheckInSchedule schedule, CheckInGroupType groupType, CheckInGroup group, CheckInLocation location) : this(schedule, groupType, group, location) { if (groupType != null && groupType.GroupType != null && label != null) { if (groupType.GroupType.Attributes == null) { groupType.GroupType.LoadAttributes(); } foreach (var attribute in groupType.GroupType.Attributes.OrderBy(a => a.Value.Order)) { if (attribute.Value.FieldType.Guid == SystemGuid.FieldType.LABEL.AsGuid()) { Guid?binaryFileGuid = groupType.GroupType.GetAttributeValue(attribute.Key).AsGuidOrNull(); if (binaryFileGuid.HasValue && binaryFileGuid.Value == label.Guid) { GroupTypeConfiguredForLabel = true; break; } } } } }