/// <summary> /// Initializes a new instance of the <see cref="CheckInPersonSummary"/> class. /// </summary> /// <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(CheckInSchedule schedule, CheckInGroupType groupType, CheckInGroup group, CheckInLocation location) { Schedule = schedule; GroupType = groupType; Group = group; Location = location; }
/// <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 ) { bool loadAll = GetAttributeValue( action, "LoadAll" ).AsBoolean(); foreach ( var family in checkInState.CheckIn.GetFamilies( true ) ) { foreach ( var person in family.GetPeople( !loadAll ) ) { foreach ( var groupType in person.GetGroupTypes( !loadAll ).ToList() ) { var kioskGroupType = checkInState.Kiosk.ActiveGroupTypes( checkInState.ConfiguredGroupTypes ) .Where( g => g.GroupType.Id == groupType.GroupType.Id ) .FirstOrDefault(); if ( kioskGroupType != null ) { foreach ( var group in groupType.GetGroups( !loadAll ) ) { foreach ( var kioskGroup in kioskGroupType.KioskGroups .Where( g => g.Group.Id == group.Group.Id && g.IsCheckInActive ) .ToList() ) { foreach ( var kioskLocation in kioskGroup.KioskLocations.Where( l => l.IsCheckInActive && l.IsActiveAndNotFull ) ) { if ( !group.Locations.Any( l => l.Location.Id == kioskLocation.Location.Id ) ) { var checkInLocation = new CheckInLocation(); checkInLocation.Location = kioskLocation.Location.Clone( false ); checkInLocation.Location.CopyAttributesFrom( kioskLocation.Location ); checkInLocation.CampusId = kioskLocation.CampusId; checkInLocation.Order = kioskLocation.Order; group.Locations.Add( checkInLocation ); } } } } } } } } 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 ) { bool loadAll = false; if ( bool.TryParse( GetAttributeValue( action, "LoadAll" ), out loadAll ) && loadAll ) { loadAll = true; } foreach ( var family in checkInState.CheckIn.Families.Where( f => f.Selected ).ToList() ) { foreach ( var person in family.People.Where( p => p.Selected || loadAll ).ToList() ) { foreach ( var groupType in person.GroupTypes.Where( t => t.Selected || loadAll ).ToList() ) { var kioskGroupType = checkInState.Kiosk.FilteredGroupTypes( checkInState.ConfiguredGroupTypes ) .Where( g => g.GroupType.Id == groupType.GroupType.Id ).FirstOrDefault(); if ( kioskGroupType != null ) { foreach ( var group in groupType.Groups.Where( g => g.Selected || loadAll ).ToList() ) { foreach ( var kioskGroup in kioskGroupType.KioskGroups.Where( g => g.Group.Id == group.Group.Id ).ToList() ) { foreach ( var kioskLocation in kioskGroup.KioskLocations ) { if ( !group.Locations.Any( l => l.Location.Id == kioskLocation.Location.Id ) ) { var checkInLocation = new CheckInLocation(); checkInLocation.Location = kioskLocation.Location.Clone( false ); checkInLocation.Location.CopyAttributesFrom( kioskLocation.Location ); checkInLocation.CampuId = kioskLocation.CampusId; group.Locations.Add( checkInLocation ); } } } } } } } } 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) { // shouldn't happen since GroupType is a ModelCache<,> type return; } 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; } } } } }
/// <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.BINARY_FILE.AsGuid() && attribute.Value.QualifierValues.ContainsKey("binaryFileType") && attribute.Value.QualifierValues["binaryFileType"].Value.Equals(SystemGuid.BinaryFiletype.CHECKIN_LABEL, StringComparison.OrdinalIgnoreCase)) { Guid?binaryFileGuid = groupType.GroupType.GetAttributeValue(attribute.Key).AsGuidOrNull(); if (binaryFileGuid.HasValue && binaryFileGuid.Value == label.Guid) { GroupTypeConfiguredForLabel = true; break; } } } } }
/// <summary> /// Gets the attendance count for all of the schedules for a location. This will show on the schedule buttons. /// </summary> /// <param name="location"></param> protected void GetScheduleAttendance( CheckInLocation location ) { if ( location != null ) { var rockContext = new RockContext(); var attendanceService = new AttendanceService( rockContext ); var attendanceQuery = attendanceService.GetByDateAndLocation( DateTime.Now, location.Location.Id ); ScheduleAttendanceList.Clear(); foreach ( var schedule in location.Schedules ) { var attendance = new ScheduleAttendance(); attendance.ScheduleId = schedule.Schedule.Id; attendance.AttendanceCount = attendanceQuery.Where( l => l.ScheduleId == attendance.ScheduleId ).Count(); ScheduleAttendanceList.Add( attendance ); } } }