Example #1
0
        /// <summary>
        /// Returns Global Attributes from cache.  If they are not already in cache, they
        /// will be read and added to cache
        /// </summary>
        /// <returns></returns>
        public static GlobalAttributes Read()
        {
            string cacheKey = GlobalAttributes.CacheKey();

            ObjectCache      cache            = MemoryCache.Default;
            GlobalAttributes globalAttributes = cache[cacheKey] as GlobalAttributes;

            if (globalAttributes != null)
            {
                return(globalAttributes);
            }
            else
            {
                globalAttributes = new GlobalAttributes();
                globalAttributes.AttributeValues = new Dictionary <string, KeyValuePair <string, string> >();

                var attributeService      = new Rock.Core.AttributeService();
                var attributeValueService = new Rock.Core.AttributeValueService();

                foreach (Rock.Core.Attribute attribute in attributeService.Queryable().
                         Where(a => a.Entity == "" &&
                               (a.EntityQualifierColumn ?? string.Empty) == "" &&
                               (a.EntityQualifierValue ?? string.Empty) == ""))
                {
                    // TODO: Need to add support for multiple values
                    var attributeValue = attributeValueService.GetByAttributeIdAndEntityId(attribute.Id, null).FirstOrDefault();
                    globalAttributes.AttributeValues.Add(attribute.Key, new KeyValuePair <string, string>(attribute.Name, (attributeValue != null && !string.IsNullOrEmpty(attributeValue.Value)) ? attributeValue.Value : attribute.DefaultValue));
                }

                cache.Set(cacheKey, globalAttributes, new CacheItemPolicy());

                return(globalAttributes);
            }
        }
Example #2
0
        /// <summary>
        /// Removes Global Attributes from cache
        /// </summary>
        public static void Flush()
        {
            ObjectCache cache = MemoryCache.Default;

            cache.Remove(GlobalAttributes.CacheKey());
        }