/// <summary> /// Handles the ItemDataBound event of the rptrGroups control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.Web.UI.WebControls.RepeaterItemEventArgs"/> instance containing the event data.</param> protected void rptrGroups_ItemDataBound( object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e ) { if ( e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem ) { var group = e.Item.DataItem as Group; if ( group != null ) { HyperLink hlEditGroup = e.Item.FindControl( "hlEditGroup" ) as HyperLink; if ( hlEditGroup != null ) { hlEditGroup.Visible = _allowEdit; var pageParams = new Dictionary<string, string>(); pageParams.Add( "PersonId", Person.Id.ToString() ); pageParams.Add( "GroupId", group.Id.ToString() ); hlEditGroup.NavigateUrl = LinkedPageUrl( "GroupEditPage", pageParams ); } Repeater rptrMembers = e.Item.FindControl( "rptrMembers" ) as Repeater; if ( rptrMembers != null ) { // use the _bindGroupsRockContext that is created/disposed in BindFamilies() var members = new GroupMemberService( _bindGroupsRockContext ).Queryable( "GroupRole,Person", true ) .Where( m => m.GroupId == group.Id && m.PersonId != Person.Id ) .OrderBy( m => m.GroupRole.Order ) .ToList(); var orderedMembers = new List<GroupMember>(); if ( _IsFamilyGroupType ) { // Add adult males orderedMembers.AddRange( members .Where( m => m.GroupRole.Guid.Equals( new Guid( Rock.SystemGuid.GroupRole.GROUPROLE_FAMILY_MEMBER_ADULT ) ) && m.Person.Gender == Gender.Male ) .OrderByDescending( m => m.Person.Age ) ); // Add adult females orderedMembers.AddRange( members .Where( m => m.GroupRole.Guid.Equals( new Guid( Rock.SystemGuid.GroupRole.GROUPROLE_FAMILY_MEMBER_ADULT ) ) && m.Person.Gender != Gender.Male ) .OrderByDescending( m => m.Person.Age ) ); // Add non-adults orderedMembers.AddRange( members .Where( m => !m.GroupRole.Guid.Equals( new Guid( Rock.SystemGuid.GroupRole.GROUPROLE_FAMILY_MEMBER_ADULT ) ) ) .OrderByDescending( m => m.Person.Age ) ); } else { orderedMembers = members .OrderBy( m => m.GroupRole.Order ) .ThenBy( m => m.Person.LastName ) .ThenBy( m => m.Person.NickName ) .ToList(); } rptrMembers.ItemDataBound += rptrMembers_ItemDataBound; rptrMembers.DataSource = orderedMembers; rptrMembers.DataBind(); } Repeater rptrAddresses = e.Item.FindControl( "rptrAddresses" ) as Repeater; if ( rptrAddresses != null ) { rptrAddresses.ItemDataBound += rptrAddresses_ItemDataBound; rptrAddresses.ItemCommand += rptrAddresses_ItemCommand; rptrAddresses.DataSource = new GroupLocationService( _bindGroupsRockContext ).Queryable( "Location,GroupLocationTypeValue" ) .Where( l => l.GroupId == group.Id ) .OrderBy( l => l.GroupLocationTypeValue.Order ) .ToList(); rptrAddresses.DataBind(); } Panel pnlGroupAttributes = e.Item.FindControl( "pnlGroupAttributes" ) as Panel; HyperLink hlShowMoreAttributes = e.Item.FindControl( "hlShowMoreAttributes" ) as HyperLink; PlaceHolder phGroupAttributes = e.Item.FindControl( "phGroupAttributes" ) as PlaceHolder; PlaceHolder phMoreGroupAttributes = e.Item.FindControl( "phMoreGroupAttributes" ) as PlaceHolder; if ( pnlGroupAttributes != null && hlShowMoreAttributes != null && phGroupAttributes != null && phMoreGroupAttributes != null ) { hlShowMoreAttributes.Visible = false; phGroupAttributes.Controls.Clear(); phMoreGroupAttributes.Controls.Clear(); group.LoadAttributes(); var attributes = group.Attributes .Select( a => a.Value ) .OrderBy( a => a.Order ) .ToList(); foreach( var attribute in attributes ) { if ( attribute.IsAuthorized( Authorization.VIEW, CurrentPerson ) ) { string value = attribute.DefaultValue; if ( group.AttributeValues.ContainsKey( attribute.Key ) && group.AttributeValues[attribute.Key] != null ) { value = group.AttributeValues[attribute.Key].ValueFormatted; } if ( !string.IsNullOrWhiteSpace( value ) ) { var literalControl = new RockLiteral(); literalControl.ID = string.Format( "familyAttribute_{0}", attribute.Id ); literalControl.Label = attribute.Name; literalControl.Text = value; var div = new HtmlGenericControl( "div" ); div.AddCssClass( "col-md-3 col-sm-6" ); div.Controls.Add( literalControl ); if ( attribute.IsGridColumn ) { phGroupAttributes.Controls.Add( div ); } else { hlShowMoreAttributes.Visible = true; phMoreGroupAttributes.Controls.Add( div ); } } } } pnlGroupAttributes.Visible = phGroupAttributes.Controls.Count > 0 || phMoreGroupAttributes.Controls.Count > 0; } } } }
/// <summary> /// Loads the drop downs. /// </summary> private void LoadDropDowns( BenevolenceRequest benevolenceRequest ) { ddlRequestStatus.BindToDefinedType( DefinedTypeCache.Read( new Guid( Rock.SystemGuid.DefinedType.BENEVOLENCE_REQUEST_STATUS ) ), false ); ddlConnectionStatus.BindToDefinedType( DefinedTypeCache.Read( new Guid( Rock.SystemGuid.DefinedType.PERSON_CONNECTION_STATUS ) ), true ); Guid groupGuid = GetAttributeValue( "CaseWorkerRole" ).AsGuid(); var personList = new GroupMemberService( new RockContext() ) .Queryable( "Person, Group" ) .Where( gm => gm.Group.Guid == groupGuid ) .Select( gm => gm.Person ) .ToList(); string caseWorkerPersonAliasValue = benevolenceRequest.CaseWorkerPersonAliasId.ToString(); if ( benevolenceRequest.CaseWorkerPersonAlias != null && benevolenceRequest.CaseWorkerPersonAlias.Person != null && !personList.Select( p => p.Id ).ToList().Contains( benevolenceRequest.CaseWorkerPersonAlias.Person.Id ) ) { personList.Add( benevolenceRequest.CaseWorkerPersonAlias.Person ); } ddlCaseWorker.DataSource = personList.OrderBy( p => p.NickName ).ThenBy( p => p.LastName ).ToList(); ddlCaseWorker.DataTextField = "FullName"; ddlCaseWorker.DataValueField = "PrimaryAliasId"; ddlCaseWorker.DataBind(); ddlCaseWorker.Items.Insert( 0, new ListItem() ); }
/// <summary> /// Handles the ItemDataBound event of the rptrGroups control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.Web.UI.WebControls.RepeaterItemEventArgs"/> instance containing the event data.</param> protected void rptrGroups_ItemDataBound( object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e ) { if ( e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem ) { var group = e.Item.DataItem as Group; if ( group != null ) { HyperLink hlEditGroup = e.Item.FindControl( "hlEditGroup" ) as HyperLink; if ( hlEditGroup != null ) { hlEditGroup.Visible = _allowEdit; var pageParams = new Dictionary<string, string>(); pageParams.Add( "PersonId", Person.Id.ToString() ); pageParams.Add( "GroupId", group.Id.ToString() ); hlEditGroup.NavigateUrl = LinkedPageUrl( "GroupEditPage", pageParams ); } Literal lEditGroup = e.Item.FindControl( "lEditGroup" ) as Literal; if ( lEditGroup != null ) { lEditGroup.Text = "Edit " + _groupType.Name; } Repeater rptrMembers = e.Item.FindControl( "rptrMembers" ) as Repeater; if ( rptrMembers != null ) { // use the _bindGroupsRockContext that is created/disposed in BindFamilies() var members = new GroupMemberService( _bindGroupsRockContext ).Queryable( "GroupRole,Person", true ) .Where( m => m.GroupId == group.Id && m.PersonId != Person.Id ) .OrderBy( m => m.GroupRole.Order ) .ToList(); var orderedMembers = new List<GroupMember>(); if ( _IsFamilyGroupType ) { // Add adult males orderedMembers.AddRange( members .Where( m => m.GroupRole.Guid.Equals( new Guid( Rock.SystemGuid.GroupRole.GROUPROLE_FAMILY_MEMBER_ADULT ) ) && m.Person.Gender == Gender.Male ) .OrderByDescending( m => m.Person.Age ) ); // Add adult females orderedMembers.AddRange( members .Where( m => m.GroupRole.Guid.Equals( new Guid( Rock.SystemGuid.GroupRole.GROUPROLE_FAMILY_MEMBER_ADULT ) ) && m.Person.Gender != Gender.Male ) .OrderByDescending( m => m.Person.Age ) ); // Add non-adults orderedMembers.AddRange( members .Where( m => !m.GroupRole.Guid.Equals( new Guid( Rock.SystemGuid.GroupRole.GROUPROLE_FAMILY_MEMBER_ADULT ) ) ) .OrderByDescending( m => m.Person.Age ) ); } else { orderedMembers = members .OrderBy( m => m.GroupRole.Order ) .ThenBy( m => m.Person.LastName ) .ThenBy( m => m.Person.NickName ) .ToList(); } rptrMembers.ItemDataBound += rptrMembers_ItemDataBound; rptrMembers.DataSource = orderedMembers; rptrMembers.DataBind(); } Repeater rptrAddresses = e.Item.FindControl( "rptrAddresses" ) as Repeater; { rptrAddresses.ItemDataBound += rptrAddresses_ItemDataBound; rptrAddresses.ItemCommand += rptrAddresses_ItemCommand; rptrAddresses.DataSource = new GroupLocationService( _bindGroupsRockContext ).Queryable( "Location,GroupLocationTypeValue" ) .Where( l => l.GroupId == group.Id ) .OrderBy( l => l.GroupLocationTypeValue.Order ) .ToList(); rptrAddresses.DataBind(); } } } }