/// <summary> /// Binds the grid. /// </summary> private void BindGrid() { if (CurrentPersonAlias != null) { var rockContext = new RockContext(); int personAliasEntityTypeId = EntityTypeCache.Read("Rock.Model.PersonAlias").Id; var personAliasIds = new FollowingService(rockContext).Queryable() .Where(f => f.EntityTypeId == personAliasEntityTypeId && f.PersonAliasId == CurrentPersonAlias.Id) .Select(f => f.EntityId) .Distinct() .ToList(); var qry = new PersonAliasService(rockContext).Queryable() .Where(p => personAliasIds.Contains(p.Id)) .Select(p => p.Person) .Distinct(); // Sort SortProperty sortProperty = gFollowings.SortProperty; if (sortProperty == null) { sortProperty = new SortProperty(new GridViewSortEventArgs("LastName,NickName", SortDirection.Ascending)); } Guid homePhoneGuid = Rock.SystemGuid.DefinedValue.PERSON_PHONE_TYPE_HOME.AsGuid(); Guid cellPhoneGuid = Rock.SystemGuid.DefinedValue.PERSON_PHONE_TYPE_MOBILE.AsGuid(); Guid adultGuid = Rock.SystemGuid.GroupRole.GROUPROLE_FAMILY_MEMBER_ADULT.AsGuid(); Guid marriedGuid = Rock.SystemGuid.DefinedValue.PERSON_MARITAL_STATUS_MARRIED.AsGuid(); gFollowings.DataSource = qry.Sort(sortProperty) .Select(p => new { Person = p, p.Id, p.LastName, p.NickName, p.BirthDate, p.Email, HomePhone = p.PhoneNumbers .Where(n => n.NumberTypeValue.Guid.Equals(homePhoneGuid)) .Select(n => n.NumberFormatted) .FirstOrDefault(), CellPhone = p.PhoneNumbers .Where(n => n.NumberTypeValue.Guid.Equals(cellPhoneGuid)) .Select(n => n.NumberFormatted) .FirstOrDefault(), Spouse = p.Members .Where(m => p.MaritalStatusValue.Guid.Equals(marriedGuid) && m.GroupRole.Guid.Equals(adultGuid)) .SelectMany(m => m.Group.Members) .Where(m => m.PersonId != p.Id && m.GroupRole.Guid.Equals(adultGuid) && m.Person.MaritalStatusValue.Guid.Equals(marriedGuid)) .Select(s => s.Person) .FirstOrDefault() }).ToList(); gFollowings.DataBind(); } }