/// <summary> /// Creates the control(s) necessary for prompting user for a new value /// </summary> /// <param name="configurationValues">The configuration values.</param> /// <param name="id"></param> /// <returns> /// The control /// </returns> public override System.Web.UI.Control EditControl(Dictionary <string, ConfigurationValue> configurationValues, string id) { GroupAndRolePicker editControl = new GroupAndRolePicker { ID = id }; if (configurationValues != null) { editControl.GroupControlLabel = configurationValues[CONFIG_GROUP_AND_ROLE_PICKER_LABEL].Value; } return(editControl); }
/// <summary> /// Reads new values entered by the user for the field ( as Guid ) /// </summary> /// <param name="control">Parent control that controls were added to in the CreateEditControl() method</param> /// <param name="configurationValues">The configuration values.</param> /// <returns></returns> public override string GetEditValue(System.Web.UI.Control control, Dictionary <string, ConfigurationValue> configurationValues) { GroupAndRolePicker groupAndRolePicker = control as GroupAndRolePicker; if (groupAndRolePicker != null) { var rockContext = new RockContext(); Guid?groupTypeGuid = null; Guid?groupGuid = null; Guid?groupTypeRoleGuid = null; if (groupAndRolePicker.GroupTypeId.HasValue) { var groupType = new GroupTypeService(rockContext).GetNoTracking(groupAndRolePicker.GroupTypeId.Value); if (groupType != null) { groupTypeGuid = groupType.Guid; } } if (groupAndRolePicker.GroupId.HasValue) { var group = new GroupService(rockContext).Get(groupAndRolePicker.GroupId.Value); if (group != null) { groupGuid = group.Guid; } } if (groupAndRolePicker.GroupRoleId.HasValue) { var groupTypeRole = new GroupTypeRoleService(rockContext).Get(groupAndRolePicker.GroupRoleId.Value); if (groupTypeRole != null) { groupTypeRoleGuid = groupTypeRole.Guid; } } if (groupTypeGuid.HasValue || groupGuid.HasValue || groupTypeRoleGuid.HasValue) { return(string.Format("{0}|{1}|{2}", groupTypeGuid, groupGuid, groupTypeRoleGuid)); } } return(null); }
/// <summary> /// Sets the value. ( as Guid ) /// </summary> /// <param name="control">The control.</param> /// <param name="configurationValues">The configuration values.</param> /// <param name="value">The value.</param> public override void SetEditValue(System.Web.UI.Control control, Dictionary <string, ConfigurationValue> configurationValues, string value) { GroupAndRolePicker groupAndRolePicker = control as GroupAndRolePicker; if (groupAndRolePicker != null) { // initialize in case the value isn't set groupAndRolePicker.GroupTypeId = null; groupAndRolePicker.GroupId = null; groupAndRolePicker.GroupRoleId = null; string[] parts = (value ?? string.Empty).Split('|'); var rockContext = new RockContext(); if (parts.Length >= 1) { var groupType = new GroupTypeService(rockContext).Get(parts[0].AsGuid()); if (groupType != null) { groupAndRolePicker.GroupTypeId = groupType.Id; } if (parts.Length >= 2) { var group = new GroupService(rockContext).Get(parts[1].AsGuid()); if (group != null) { groupAndRolePicker.GroupId = group.Id; } } if (parts.Length >= 3) { var groupTypeRole = new GroupTypeRoleService(rockContext).Get(parts[2].AsGuid()); if (groupTypeRole != null) { groupAndRolePicker.GroupRoleId = groupTypeRole.Id; } } } } }