public GetActiveByLocation ( int locationId ) : IQueryable |
||
locationId | int | A |
return | IQueryable |
/// <summary> /// Loads the kiosk locations. /// </summary> /// <param name="kioskDevice">The kiosk device.</param> /// <param name="location">The location.</param> /// <param name="rockContext">The rock context.</param> private static void LoadKioskLocations( KioskDevice kioskDevice, Location location, RockContext rockContext ) { var groupLocationService = new GroupLocationService( rockContext ); foreach ( var groupLocation in groupLocationService.GetActiveByLocation( location.Id ) ) { DateTimeOffset nextGroupActiveTime = DateTimeOffset.MaxValue; var kioskLocation = new KioskLocation( location ); // Populate each kioskLocation with it's schedules (kioskSchedules) foreach ( var schedule in groupLocation.Schedules.Where( s => s.CheckInStartOffsetMinutes.HasValue ) ) { var nextScheduleActiveTime = schedule.GetNextCheckInStartTime( DateTimeOffset.Now ); if ( nextScheduleActiveTime.HasValue && nextScheduleActiveTime.Value.CompareTo( nextGroupActiveTime.DateTime ) < 0 ) { nextGroupActiveTime = nextScheduleActiveTime.Value; } if ( schedule.IsCheckInActive && kioskLocation != null ) { kioskLocation.KioskSchedules.Add( new KioskSchedule( schedule ) ); } } // If the group location has any active OR future schedules, add the group's group type to the kiosk's // list of group types if ( kioskLocation.KioskSchedules.Count > 0 || nextGroupActiveTime < DateTimeOffset.MaxValue ) { KioskGroupType kioskGroupType = kioskDevice.KioskGroupTypes.Where( g => g.GroupType.Id == groupLocation.Group.GroupTypeId ).FirstOrDefault(); if ( kioskGroupType == null ) { kioskGroupType = new KioskGroupType( groupLocation.Group.GroupType ); kioskGroupType.GroupType.LoadAttributes(); kioskGroupType.NextActiveTime = DateTimeOffset.MaxValue; kioskDevice.KioskGroupTypes.Add( kioskGroupType ); } if ( nextGroupActiveTime.CompareTo( kioskGroupType.NextActiveTime ) < 0 ) { kioskGroupType.NextActiveTime = nextGroupActiveTime; } // If there are active schedules, add the group to the group type groups if ( kioskLocation.KioskSchedules.Count > 0 ) { KioskGroup kioskGroup = kioskGroupType.KioskGroups.Where( g => g.Group.Id == groupLocation.GroupId ).FirstOrDefault(); if ( kioskGroup == null ) { kioskGroup = new KioskGroup( groupLocation.Group ); kioskGroup.Group.LoadAttributes(); kioskGroupType.KioskGroups.Add( kioskGroup ); } kioskLocation.Location.LoadAttributes(); kioskGroup.KioskLocations.Add( kioskLocation ); } } } foreach ( var childLocation in location.ChildLocations ) { LoadKioskLocations( kioskDevice, childLocation, rockContext ); } }