Exemplo n.º 1
0
        /// <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 Control EditControl(Dictionary <string, ConfigurationValue> configurationValues, string id)
        {
            var editControl = new RockDropDownList {
                ID = id
            };

            editControl.Items.Add(new ListItem());

            var activityTypes = new ConnectionActivityTypeService(new RockContext())
                                .Queryable().AsNoTracking()
                                .OrderBy(s => s.ConnectionType.Name)
                                .ThenBy(s => s.Name)
                                .Select(s => new
            {
                s.Guid,
                s.Name,
                ConnectionTypeName = s.ConnectionType.Name
            })
                                .ToList();

            if (activityTypes.Any())
            {
                foreach (var activity in activityTypes)
                {
                    var listItem = new ListItem(activity.Name, activity.Guid.ToString().ToUpper());
                    listItem.Attributes.Add("OptionGroup", activity.ConnectionTypeName);
                    editControl.Items.Add(listItem);
                }

                return(editControl);
            }

            return(null);
        }
        /// <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 Control EditControl( Dictionary<string, ConfigurationValue> configurationValues, string id )
        {
            var editControl = new RockDropDownList { ID = id };
            editControl.Items.Add( new ListItem() );

            var activityTypes = new ConnectionActivityTypeService( new RockContext() )
                .Queryable().AsNoTracking()
                .OrderBy( s => s.ConnectionType.Name )
                .ThenBy( s => s.Name )
                .Select( s => new
                {
                    s.Guid,
                    s.Name,
                    ConnectionTypeName = s.ConnectionType.Name
                } )
                .ToList();

            if ( activityTypes.Any() )
            {
                foreach ( var activity in activityTypes )
                {
                    var listItem = new ListItem( activity.Name, activity.Guid.ToString().ToUpper() );
                    listItem.Attributes.Add( "OptionGroup", activity.ConnectionTypeName );
                    editControl.Items.Add( listItem );
                }

                return editControl;
            }

            return null;
        }
        /// <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 Control EditControl(Dictionary <string, ConfigurationValue> configurationValues, string id)
        {
            var includeInactive        = false;
            int?connectionTypeFilterId = null;

            if (configurationValues != null)
            {
                includeInactive        = configurationValues.ContainsKey(INCLUDE_INACTIVE_KEY) && configurationValues[INCLUDE_INACTIVE_KEY].Value.AsBoolean();
                connectionTypeFilterId = configurationValues.ContainsKey(CONNECTION_TYPE_FILTER) ? configurationValues[CONNECTION_TYPE_FILTER].Value.AsIntegerOrNull() : null;
            }

            var activityTypes = new ConnectionActivityTypeService(new RockContext())
                                .Queryable().AsNoTracking()
                                .Where(o => o.IsActive || includeInactive)
                                .OrderBy(o => o.ConnectionType.Name)
                                .ThenBy(o => o.Name)
                                .Select(o => new { o.Guid, o.Name, o.ConnectionType })
                                .ToList();

            var editControl = new RockDropDownList {
                ID = id
            };

            editControl.Items.Add(new ListItem());

            if (activityTypes.Any())
            {
                foreach (var activityType in activityTypes)
                {
                    if (connectionTypeFilterId != null &&
                        (activityType.ConnectionType == null || activityType.ConnectionType.Id != connectionTypeFilterId))
                    {
                        continue;
                    }

                    var listItem = new ListItem(activityType.Name, activityType.Guid.ToString().ToUpper());

                    // Don't add an option group if there is a filter since that would be only one group.
                    if (connectionTypeFilterId == null &&
                        activityType.ConnectionType != null)
                    {
                        listItem.Attributes.Add("OptionGroup", activityType.ConnectionType.Name);
                    }

                    editControl.Items.Add(listItem);
                }

                return(editControl);
            }

            return(null);
        }