本文整理汇总了C#中Rock.Model.LocationService.Queryable方法的典型用法代码示例。如果您正苦于以下问题:C# LocationService.Queryable方法的具体用法?C# LocationService.Queryable怎么用?C# LocationService.Queryable使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Rock.Model.LocationService
的用法示例。
在下文中一共展示了LocationService.Queryable方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Execute
/// <summary>
/// Job that updates the JobPulse setting with the current date/time.
/// This will allow us to notify an admin if the jobs stop running.
///
/// Called by the <see cref="IScheduler" /> when a
/// <see cref="ITrigger" /> fires that is associated with
/// the <see cref="IJob" />.
/// </summary>
public virtual void Execute(IJobExecutionContext context)
{
// get the job map
JobDataMap dataMap = context.JobDetail.JobDataMap;
int maxRecords = Int32.Parse( dataMap.GetString( "MaxRecordsPerRun" ) );
int throttlePeriod = Int32.Parse( dataMap.GetString( "ThrottlePeriod" ) );
int retryPeriod = Int32.Parse( dataMap.GetString( "RetryPeriod" ) );
DateTime retryDate = DateTime.Now.Subtract(new TimeSpan(retryPeriod, 0, 0, 0));
var rockContext = new Rock.Data.RockContext();
LocationService locationService = new LocationService(rockContext);
var addresses = locationService.Queryable()
.Where( l => (
(l.IsGeoPointLocked == null || l.IsGeoPointLocked == false) // don't ever try locked address
&& (l.IsActive == true && l.Street1 != null && l.PostalCode != null) // or incomplete addresses
&& (
(l.GeocodedDateTime == null && (l.GeocodeAttemptedDateTime == null || l.GeocodeAttemptedDateTime < retryDate)) // has not been attempted to be geocoded since retry date
||
(l.StandardizedDateTime == null && (l.StandardizeAttemptedDateTime == null || l.StandardizeAttemptedDateTime < retryDate)) // has not been attempted to be standardize since retry date
)
))
.Take( maxRecords ).ToList();
foreach ( var address in addresses )
{
locationService.Verify( address, false ); // currently not reverifying
rockContext.SaveChanges();
System.Threading.Thread.Sleep( throttlePeriod );
}
}
示例2: Search
/// <summary>
/// Returns a list of matching people
/// </summary>
/// <param name="searchterm"></param>
/// <returns></returns>
public override IQueryable<string> Search( string searchterm )
{
var service = new LocationService();
return service.Queryable().
Where( a => a.Street1.Contains( searchterm ) ).
OrderBy( a => a.Street1 ).
Select( a => a.Street1 + " " + a.City ).Distinct();
}
示例3: Execute
/// <summary>
/// Job that updates the JobPulse setting with the current date/time.
/// This will allow us to notify an admin if the jobs stop running.
///
/// Called by the <see cref="IScheduler" /> when a
/// <see cref="ITrigger" /> fires that is associated with
/// the <see cref="IJob" />.
/// </summary>
public virtual void Execute(IJobExecutionContext context)
{
// get the job map
JobDataMap dataMap = context.JobDetail.JobDataMap;
int maxRecords = Int32.Parse( dataMap.GetString( "MaxRecordsPerRun" ) );
int throttlePeriod = Int32.Parse( dataMap.GetString( "ThrottlePeriod" ) );
int retryPeriod = Int32.Parse( dataMap.GetString( "RetryPeriod" ) );
DateTime retryDate = DateTime.Now.Subtract(new TimeSpan(retryPeriod, 0, 0, 0));
var rockContext = new Rock.Data.RockContext();
LocationService locationService = new LocationService(rockContext);
var addresses = locationService.Queryable()
.Where( l =>
(
( l.IsGeoPointLocked == null || l.IsGeoPointLocked == false ) &&// don't ever try locked address
l.IsActive == true &&
l.Street1 != null &&
l.Street1 != "" &&
l.City != null &&
l.City != "" &&
(
( l.GeocodedDateTime == null && ( l.GeocodeAttemptedDateTime == null || l.GeocodeAttemptedDateTime < retryDate ) ) || // has not been attempted to be geocoded since retry date
( l.StandardizedDateTime == null && ( l.StandardizeAttemptedDateTime == null || l.StandardizeAttemptedDateTime < retryDate ) ) // has not been attempted to be standardize since retry date
)
) )
.Take( maxRecords ).ToList();
int attempts = 0;
int successes = 0;
foreach ( var address in addresses )
{
attempts++;
if ( locationService.Verify( address, true ) )
{
successes++;
}
rockContext.SaveChanges();
System.Threading.Thread.Sleep( throttlePeriod );
}
context.Result = string.Format( "{0:N0} address verifications attempted; {1:N0} successfully verified", attempts, successes );
}
示例4: GetLocationId
/// <summary>
/// Gets the Location ID of a location already in Rock. --looks under dbo.group.foreignId then compares group.description with location name.
/// </summary>
/// <param name="rlcID">rlc ID </param>
/// <returns>Location ID</returns>
private int GetLocationId(int rlcId)
{
var lookupContext = new RockContext();
var groupService = new GroupService(lookupContext);
var rlcGroup = new Group();
string rlcIdString = rlcId.ToString();
rlcGroup = groupService.Queryable().Where(g => g.ForeignId == (rlcIdString)).FirstOrDefault();
string groupLocation = String.Empty;
if ( rlcGroup != null ) { groupLocation = rlcGroup.Description; }
if (!String.IsNullOrWhiteSpace(groupLocation))
{
var locationService = new LocationService(lookupContext);
var location = new List<Location>();
location = locationService.Queryable().Where(l => l.ParentLocationId.HasValue).ToList();
switch (groupLocation)
{
case "A201":
{
return location.Where(l => l.Name == "A201").FirstOrDefault().Id;
}
case "A202":
{
return location.Where(l => l.Name == "A202").FirstOrDefault().Id;
}
case "Area X Basketball":
{
return location.Where(l => l.Name == "Area X").FirstOrDefault().Id;
}
case "Area X Main Area":
{
return location.Where(l => l.Name == "Area X").FirstOrDefault().Id;
}
case "Auditorium":
{
return location.Where(l => l.Name == "Auditorium").FirstOrDefault().Id;
}
case "Auditorium Recording Booth":
{
return location.Where(l => l.Name == "Auditorium").FirstOrDefault().Id;
}
case "Auditorium Sound Booth":
{
return location.Where(l => l.Name == "Auditorium").FirstOrDefault().Id;
}
case "Bookstore Downstairs":
{
return location.Where(l => l.Name == "Bookstore").FirstOrDefault().Id;
}
case "Bookstore Upstairs":
{
return location.Where(l => l.Name == "Bookstore").FirstOrDefault().Id;
}
case "Bug 117":
{
return location.Where(l => l.Name == "Bug").FirstOrDefault().Id;
}
case "Bunny 114":
{
return location.Where(l => l.Name == "Bunny").FirstOrDefault().Id;
}
case "Butterfly 108":
{
return location.Where(l => l.Name == "Butterfly").FirstOrDefault().Id;
}
case "C201":
{
return location.Where(l => l.Name == "C201").FirstOrDefault().Id;
}
case "C202":
{
return location.Where(l => l.Name == "C202").FirstOrDefault().Id;
}
case "C203":
{
return location.Where(l => l.Name == "C203").FirstOrDefault().Id;
}
case "Car 1":
{
return location.Where(l => l.Name == "Car 1").FirstOrDefault().Id;
}
case "Car 10":
{
return location.Where(l => l.Name == "Car 10").FirstOrDefault().Id;
}
case "Car 2":
{
return location.Where(l => l.Name == "Car 2").FirstOrDefault().Id;
}
case "Car 3":
{
return location.Where(l => l.Name == "Car 3").FirstOrDefault().Id;
}
case "Car 4":
//.........这里部分代码省略.........
示例5: btnSave_Click
/// <summary>
/// Handles the Click event of the btnSave control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
protected void btnSave_Click( object sender, EventArgs e )
{
Device Device = null;
var rockContext = new RockContext();
var deviceService = new DeviceService( rockContext );
var attributeService = new AttributeService( rockContext );
var locationService = new LocationService( rockContext );
int DeviceId = int.Parse( hfDeviceId.Value );
if ( DeviceId != 0 )
{
Device = deviceService.Get( DeviceId );
}
if ( Device == null )
{
// Check for existing
var existingDevice = deviceService.Queryable()
.Where( d => d.Name == tbName.Text )
.FirstOrDefault();
if ( existingDevice != null )
{
nbDuplicateDevice.Text = string.Format( "A device already exists with the name '{0}'. Please use a different device name.", existingDevice.Name );
nbDuplicateDevice.Visible = true;
}
else
{
Device = new Device();
deviceService.Add( Device );
}
}
if ( Device != null )
{
Device.Name = tbName.Text;
Device.Description = tbDescription.Text;
Device.IPAddress = tbIpAddress.Text;
Device.DeviceTypeValueId = ddlDeviceType.SelectedValueAsInt().Value;
Device.PrintToOverride = (PrintTo)System.Enum.Parse( typeof( PrintTo ), ddlPrintTo.SelectedValue );
Device.PrinterDeviceId = ddlPrinter.SelectedValueAsInt();
Device.PrintFrom = (PrintFrom)System.Enum.Parse( typeof( PrintFrom ), ddlPrintFrom.SelectedValue );
if ( Device.Location == null )
{
Device.Location = new Location();
}
Device.Location.GeoPoint = geopPoint.SelectedValue;
Device.Location.GeoFence = geopFence.SelectedValue;
if ( !Device.IsValid || !Page.IsValid )
{
// Controls will render the error messages
return;
}
// Remove any deleted locations
foreach ( var location in Device.Locations
.Where( l =>
!Locations.Keys.Contains( l.Id ) )
.ToList() )
{
Device.Locations.Remove( location );
}
// Add any new locations
var existingLocationIDs = Device.Locations.Select( l => l.Id ).ToList();
foreach ( var location in locationService.Queryable()
.Where( l =>
Locations.Keys.Contains( l.Id ) &&
!existingLocationIDs.Contains( l.Id ) ) )
{
Device.Locations.Add( location );
}
rockContext.SaveChanges();
Rock.CheckIn.KioskDevice.Flush( Device.Id );
NavigateToParentPage();
}
}
示例6: 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;
}
示例7: GetDeviceGroupTypes
/// <summary>
/// Gets the device group types.
/// </summary>
/// <param name="deviceId">The device identifier.</param>
/// <returns></returns>
private List<GroupType> GetDeviceGroupTypes( int deviceId )
{
var groupTypes = new Dictionary<int, GroupType>();
var locationService = new LocationService( new RockContext() );
// Get all locations (and their children) associated with device
var locationIds = locationService
.GetByDevice(deviceId, true)
.Select( l => l.Id)
.ToList();
// Requery using EF
foreach ( var groupType in locationService.Queryable()
.Where( l => locationIds.Contains( l.Id ) )
.SelectMany( l => l.GroupLocations )
.Select( gl => gl.Group.GroupType )
.ToList() )
{
if ( !groupTypes.ContainsKey( groupType.Id ) )
{
groupTypes.Add( groupType.Id, groupType );
}
}
return groupTypes.Select( g => g.Value ).ToList();
}
示例8: btnSave_Click
/// <summary>
/// Handles the Click event of the btnSave control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
protected void btnSave_Click( object sender, EventArgs e )
{
Campus campus;
var rockContext = new RockContext();
var campusService = new CampusService( rockContext );
var locationService = new LocationService( rockContext );
var locationCampusValue = DefinedValueCache.Read(Rock.SystemGuid.DefinedValue.LOCATION_TYPE_CAMPUS.AsGuid());
int campusId = int.Parse( hfCampusId.Value );
if ( campusId == 0 )
{
campus = new Campus();
campusService.Add( campus);
}
else
{
campus = campusService.Get( campusId );
}
campus.Name = tbCampusName.Text;
campus.IsActive = cbIsActive.Checked;
campus.Description = tbDescription.Text;
campus.Url = tbUrl.Text;
campus.PhoneNumber = tbPhoneNumber.Text;
if ( campus.Location == null )
{
var location = locationService.Queryable()
.Where( l =>
l.Name.Equals( campus.Name, StringComparison.OrdinalIgnoreCase ) &&
l.LocationTypeValueId == locationCampusValue.Id )
.FirstOrDefault();
if (location == null)
{
location = new Location();
locationService.Add( location );
}
campus.Location = location;
}
campus.Location.Name = campus.Name;
campus.Location.LocationTypeValueId = locationCampusValue.Id;
string preValue = campus.Location.GetFullStreetAddress();
acAddress.GetValues( campus.Location );
string postValue = campus.Location.GetFullStreetAddress();
campus.ShortCode = tbCampusCode.Text;
var personService = new PersonService( rockContext );
var leaderPerson = personService.Get( ppCampusLeader.SelectedValue ?? 0 );
campus.LeaderPersonAliasId = leaderPerson != null ? leaderPerson.PrimaryAliasId : null;
campus.ServiceTimes = kvlServiceTimes.Value;
campus.LoadAttributes( rockContext );
Rock.Attribute.Helper.GetEditValues( phAttributes, campus );
if ( !campus.IsValid && campus.Location.IsValid)
{
// Controls will render the error messages
return;
}
rockContext.WrapTransaction( () =>
{
rockContext.SaveChanges();
campus.SaveAttributeValues( rockContext );
if (preValue != postValue && !string.IsNullOrWhiteSpace(campus.Location.Street1))
{
locationService.Verify(campus.Location, true);
}
} );
Rock.Web.Cache.CampusCache.Flush( campus.Id );
NavigateToParentPage();
}
示例9: CreateGroupEditorControls
/// <summary>
/// Creates the group editor controls.
/// </summary>
/// <param name="group">The group.</param>
/// <param name="parentControl">The parent control.</param>
/// <param name="rockContext">The rock context.</param>
/// <param name="createExpanded">if set to <c>true</c> [create expanded].</param>
private void CreateGroupEditorControls( Group group, Control parentControl, RockContext rockContext, bool createExpanded = false )
{
CheckinGroupEditor groupEditor = new CheckinGroupEditor();
groupEditor.ID = "GroupEditor_" + group.Guid.ToString( "N" );
if ( createExpanded )
{
groupEditor.Expanded = true;
}
parentControl.Controls.Add( groupEditor );
groupEditor.SetGroup( group, rockContext );
var locationService = new LocationService( rockContext );
var locationQry = locationService.Queryable().Select( a => new { a.Id, a.ParentLocationId, a.Name } );
groupEditor.Locations = new List<CheckinGroupEditor.LocationGridItem>();
foreach ( var location in group.GroupLocations.Select( a => a.Location ).OrderBy( o => o.Name ) )
{
var gridItem = new CheckinGroupEditor.LocationGridItem();
gridItem.LocationId = location.Id;
gridItem.Name = location.Name;
gridItem.FullNamePath = location.Name;
gridItem.ParentLocationId = location.ParentLocationId;
var parentLocationId = location.ParentLocationId;
while ( parentLocationId != null )
{
var parentLocation = locationQry.FirstOrDefault( a => a.Id == parentLocationId );
gridItem.FullNamePath = parentLocation.Name + " > " + gridItem.FullNamePath;
parentLocationId = parentLocation.ParentLocationId;
}
groupEditor.Locations.Add( gridItem );
}
groupEditor.AddLocationClick += groupEditor_AddLocationClick;
groupEditor.DeleteLocationClick += groupEditor_DeleteLocationClick;
groupEditor.DeleteGroupClick += groupEditor_DeleteGroupClick;
}
示例10: GetGroupOccurrences
/// <summary>
/// Gets occurrence data for the selected group
/// </summary>
/// <param name="group">The group.</param>
/// <param name="fromDateTime">From date time.</param>
/// <param name="toDateTime">To date time.</param>
/// <param name="locationIds">The location ids.</param>
/// <param name="scheduleIds">The schedule ids.</param>
/// <param name="loadSummaryData">if set to <c>true</c> [load summary data].</param>
/// <returns></returns>
public List<ScheduleOccurrence> GetGroupOccurrences( Group group, DateTime? fromDateTime, DateTime? toDateTime,
List<int> locationIds, List<int> scheduleIds, bool loadSummaryData )
{
var occurrences = new List<ScheduleOccurrence>();
if ( group != null )
{
var rockContext = (RockContext)this.Context;
var attendanceService = new AttendanceService( rockContext );
var scheduleService = new ScheduleService( rockContext );
var locationService = new LocationService( rockContext );
// Set up an 'occurrences' query for the group
var qry = attendanceService
.Queryable().AsNoTracking()
.Where( a => a.GroupId == group.Id );
// Filter by date range
if ( fromDateTime.HasValue )
{
var fromDate = fromDateTime.Value.Date;
qry = qry.Where( a => DbFunctions.TruncateTime( a.StartDateTime ) >= ( fromDate ) );
}
if ( toDateTime.HasValue )
{
var toDate = toDateTime.Value.Date;
qry = qry.Where( a => DbFunctions.TruncateTime( a.StartDateTime ) < ( toDate ) );
}
// Location Filter
if ( locationIds.Any() )
{
qry = qry.Where( a =>
a.LocationId.HasValue &&
locationIds.Contains( a.LocationId.Value ) );
}
// Schedule Filter
if ( scheduleIds.Any() )
{
qry = qry.Where( a =>
a.ScheduleId.HasValue &&
scheduleIds.Contains( a.ScheduleId.Value ) );
}
// Get the unique combination of location/schedule/date for the selected group
var occurrenceDates = qry
.Select( a => new
{
a.LocationId,
a.ScheduleId,
Date = DbFunctions.TruncateTime( a.StartDateTime )
} )
.Distinct()
.ToList();
// Get the locations for each unique location id
var selectedlocationIds = occurrenceDates.Select( o => o.LocationId ).Distinct().ToList();
var locations = locationService
.Queryable().AsNoTracking()
.Where( l => selectedlocationIds.Contains( l.Id ) )
.Select( l => new { l.Id, l.ParentLocationId, l.Name } )
.ToList();
var locationNames = new Dictionary<int, string>();
locations.ForEach( l => locationNames.Add( l.Id, l.Name ) );
// Get the parent location path for each unique location
var parentlocationPaths = new Dictionary<int, string>();
locations
.Where( l => l.ParentLocationId.HasValue )
.Select( l => l.ParentLocationId.Value )
.Distinct()
.ToList()
.ForEach( l => parentlocationPaths.Add( l, locationService.GetPath( l ) ) );
var locationPaths = new Dictionary<int, string>();
locations
.Where( l => l.ParentLocationId.HasValue )
.ToList()
.ForEach( l => locationPaths.Add( l.Id, parentlocationPaths[l.ParentLocationId.Value] ) );
// Get the schedules for each unique schedule id
var selectedScheduleIds = occurrenceDates.Select( o => o.ScheduleId ).Distinct().ToList();
var schedules = scheduleService
.Queryable().AsNoTracking()
.Where( s => selectedScheduleIds.Contains( s.Id ) )
.ToList();
var scheduleNames = new Dictionary<int, string>();
var scheduleStartTimes = new Dictionary<int, TimeSpan>();
schedules
.ForEach( s => {
//.........这里部分代码省略.........
示例11: btnSave_Click
/// <summary>
/// Handles the Click event of the btnSave control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
protected void btnSave_Click( object sender, EventArgs e )
{
Device Device;
var rockContext = new RockContext();
var deviceService = new DeviceService( rockContext );
var attributeService = new AttributeService( rockContext );
var locationService = new LocationService( rockContext );
int DeviceId = int.Parse( hfDeviceId.Value );
if ( DeviceId == 0 )
{
Device = new Device();
deviceService.Add( Device );
}
else
{
Device = deviceService.Get( DeviceId );
}
Device.Name = tbName.Text;
Device.Description = tbDescription.Text;
Device.IPAddress = tbIpAddress.Text;
Device.DeviceTypeValueId = ddlDeviceType.SelectedValueAsInt().Value;
Device.PrintToOverride = (PrintTo)System.Enum.Parse( typeof( PrintTo ), ddlPrintTo.SelectedValue );
Device.PrinterDeviceId = ddlPrinter.SelectedValueAsInt();
Device.PrintFrom = (PrintFrom)System.Enum.Parse( typeof( PrintFrom ), ddlPrintFrom.SelectedValue );
if ( Device.Location == null )
{
Device.Location = new Location();
}
Device.Location.GeoPoint = geopPoint.SelectedValue;
Device.Location.GeoFence = geopFence.SelectedValue;
if ( !Device.IsValid || !Page.IsValid )
{
// Controls will render the error messages
return;
}
// Remove any deleted locations
foreach ( var location in Device.Locations
.Where( l =>
!Locations.Keys.Contains( l.Id ) )
.ToList() )
{
Device.Locations.Remove( location );
}
// Add any new locations
var existingLocationIDs = Device.Locations.Select( l => l.Id ).ToList();
foreach ( var location in locationService.Queryable()
.Where( l =>
Locations.Keys.Contains( l.Id ) &&
!existingLocationIDs.Contains( l.Id) ) )
{
Device.Locations.Add(location);
}
rockContext.SaveChanges();
NavigateToParentPage();
}
示例12: GetDeviceGroupTypes
/// <summary>
/// Gets the device group types.
/// </summary>
/// <param name="deviceId">The device identifier.</param>
/// <returns></returns>
private List<GroupType> GetDeviceGroupTypes( int deviceId, RockContext rockContext )
{
var groupTypes = new Dictionary<int, GroupType>();
var locationService = new LocationService( rockContext );
// Get all locations (and their children) associated with device
var locationIds = locationService
.GetByDevice( deviceId, true )
.Select( l => l.Id )
.ToList();
// Requery using EF
foreach ( var groupType in locationService
.Queryable().AsNoTracking()
.Where( l => locationIds.Contains( l.Id ) )
.SelectMany( l => l.GroupLocations )
.Where( gl => gl.Group.GroupType.TakesAttendance )
.Select( gl => gl.Group.GroupType )
.ToList() )
{
groupTypes.AddOrIgnore( groupType.Id, groupType );
}
return groupTypes
.Select( g => g.Value )
.OrderBy( g => g.Order )
.ToList();
}
示例13: SelectGroup
private void SelectGroup( Guid? groupGuid )
{
hfIsDirty.Value = "false";
checkinArea.Visible = false;
checkinGroup.Visible = false;
btnSave.Visible = false;
if ( groupGuid.HasValue )
{
using ( var rockContext = new RockContext() )
{
var groupService = new GroupService( rockContext );
var group = groupService.Get( groupGuid.Value );
if ( group != null )
{
_currentGroupGuid = group.Guid;
checkinGroup.SetGroup( group, rockContext );
var locationService = new LocationService( rockContext );
var locationQry = locationService.Queryable().Select( a => new { a.Id, a.ParentLocationId, a.Name } );
checkinGroup.Locations = new List<CheckinGroup.LocationGridItem>();
foreach ( var groupLocation in group.GroupLocations.OrderBy( gl => gl.Order ).ThenBy( gl => gl.Location.Name ) )
{
var location = groupLocation.Location;
var gridItem = new CheckinGroup.LocationGridItem();
gridItem.LocationId = location.Id;
gridItem.Name = location.Name;
gridItem.FullNamePath = location.Name;
gridItem.ParentLocationId = location.ParentLocationId;
gridItem.Order = groupLocation.Order;
var parentLocationId = location.ParentLocationId;
while ( parentLocationId != null )
{
var parentLocation = locationQry.FirstOrDefault( a => a.Id == parentLocationId );
gridItem.FullNamePath = parentLocation.Name + " > " + gridItem.FullNamePath;
parentLocationId = parentLocation.ParentLocationId;
}
checkinGroup.Locations.Add( gridItem );
}
checkinGroup.Visible = true;
btnSave.Visible = true;
}
else
{
_currentGroupGuid = null;
}
}
}
else
{
_currentGroupGuid = null;
checkinGroup.CreateGroupAttributeControls( null, null );
}
BuildRows();
}
示例14: AddChildLocations
private void AddChildLocations( LocationService service, int locationId, List<int> ids )
{
foreach ( var location in service.Queryable().Where( l => l.ParentLocationId == locationId ) )
{
ids.Add( location.Id );
AddChildLocations( service, location.Id, ids );
}
}