public GetByAttributeIdAndEntityId ( int attributeId, int entityId ) : AttributeValue | ||
attributeId | int | Attribute Id. |
entityId | int | Entity Id. |
return | AttributeValue |
/// <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 GlobalAttributesCache Read() { string cacheKey = GlobalAttributesCache.CacheKey(); ObjectCache cache = MemoryCache.Default; GlobalAttributesCache globalAttributes = cache[cacheKey] as GlobalAttributesCache; if (globalAttributes != null) { return(globalAttributes); } else { globalAttributes = new GlobalAttributesCache(); globalAttributes.Attributes = new List <AttributeCache>(); globalAttributes.AttributeValues = new Dictionary <string, KeyValuePair <string, string> >(); var attributeService = new Rock.Model.AttributeService(); var attributeValueService = new Rock.Model.AttributeValueService(); foreach (Rock.Model.Attribute attribute in attributeService.GetGlobalAttributes()) { var attributeCache = AttributeCache.Read(attribute); globalAttributes.Attributes.Add(attributeCache); var attributeValue = attributeValueService.GetByAttributeIdAndEntityId(attribute.Id, null).FirstOrDefault(); string value = (attributeValue != null && !string.IsNullOrEmpty(attributeValue.Value)) ? attributeValue.Value : attributeCache.DefaultValue; globalAttributes.AttributeValues.Add(attributeCache.Key, new KeyValuePair <string, string>(attributeCache.Name, value)); } cache.Set(cacheKey, globalAttributes, new CacheItemPolicy()); return(globalAttributes); } }
protected void btnSubmit_OnClick(object sender, EventArgs e) { pnlOpportunities.Visible = true; pnlSignature.Visible = false; pnlSuccess.Visible = true; AttributeValueService attributeValueService = new AttributeValueService(rockContext); PersonService personService = new PersonService(rockContext); List<Guid> personGuidList = new List<Guid>(); personGuidList.Add(_targetPerson.Guid); var p = attributeValueService.GetByAttributeIdAndEntityId(906, _targetPerson.Id); var p2 = attributeValueService.GetByAttributeIdAndEntityId(1434, _targetPerson.Id); var personFromService = personService.GetByGuids(personGuidList).FirstOrDefault(); DateTime dateToSave = DateTime.Now.AddYears(CurrentYearAdd); p.Value = dateToSave.ToString(); if (p2.Value.IsNullOrWhiteSpace()) { p2.Value = dateToSave.Year.ToString(); } else { if (!p2.Value.Contains(dateToSave.Year.ToString())) { p2.Value = p2.Value + "," + dateToSave.Year.ToString(); } } personFromService.ConnectionStatusValue.Value = "Partner"; personFromService.ConnectionStatusValueId = 65; rockContext.SaveChanges(); LoadOpportunities(); if (GetAttributeValue("SendConfirmationEmail") == "True") { SendEmail(personFromService.Email, CurrentDateTime.Year.ToString() + " Partnership Covenant", rockContext); } }
/// <summary> /// Returns a <see cref="Rock.Model.Person"/> user preference value by preference setting's key. /// </summary> /// <param name="person">The <see cref="Rock.Model.Person"/> to retrieve the preference value for.</param> /// <param name="key">A <see cref="System.String"/> representing the key name of the preference setting.</param> /// <returns>A list of <see cref="System.String"/> containing the values associated with the user's preference setting.</returns> public static List<string> GetUserPreference( Person person, string key ) { int? PersonEntityTypeId = Rock.Web.Cache.EntityTypeCache.Read( Person.USER_VALUE_ENTITY ).Id; var rockContext = new Rock.Data.RockContext(); var attributeService = new Model.AttributeService( rockContext ); var attribute = attributeService.Get( PersonEntityTypeId, string.Empty, string.Empty, key ); if (attribute != null) { var attributeValueService = new Model.AttributeValueService( rockContext ); var attributeValues = attributeValueService.GetByAttributeIdAndEntityId(attribute.Id, person.Id); if (attributeValues != null && attributeValues.Count() > 0) return attributeValues.Select( v => v.Value).ToList(); } return null; }
/// <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 GlobalAttributesCache Read( RockContext rockContext = null ) { string cacheKey = GlobalAttributesCache.CacheKey(); ObjectCache cache = MemoryCache.Default; GlobalAttributesCache globalAttributes = cache[cacheKey] as GlobalAttributesCache; if ( globalAttributes != null ) { return globalAttributes; } else { globalAttributes = new GlobalAttributesCache(); globalAttributes.Attributes = new List<AttributeCache>(); globalAttributes.AttributeValues = new Dictionary<string, KeyValuePair<string, string>>(); rockContext = rockContext ?? new RockContext(); var attributeService = new Rock.Model.AttributeService( rockContext ); var attributeValueService = new Rock.Model.AttributeValueService( rockContext ); foreach ( Rock.Model.Attribute attribute in attributeService.GetGlobalAttributes() ) { var attributeCache = AttributeCache.Read( attribute ); globalAttributes.Attributes.Add( attributeCache ); var attributeValue = attributeValueService.GetByAttributeIdAndEntityId( attribute.Id, null ).FirstOrDefault(); string value = ( attributeValue != null && !string.IsNullOrEmpty( attributeValue.Value ) ) ? attributeValue.Value : attributeCache.DefaultValue; globalAttributes.AttributeValues.Add( attributeCache.Key, new KeyValuePair<string, string>( attributeCache.Name, value ) ); } cache.Set( cacheKey, globalAttributes, new CacheItemPolicy() ); return globalAttributes; } }
/// <summary> /// Generic method to delete the members of a group and then the group. /// </summary> /// <param name="group">The group.</param> /// <param name="rockContext">The rock context.</param> /// <exception cref="System.InvalidOperationException">Unable to delete group: + group.Name</exception> private void DeleteGroupAndMemberData( Group group, RockContext rockContext ) { GroupService groupService = new GroupService( rockContext ); // delete addresses GroupLocationService groupLocationService = new GroupLocationService( rockContext ); if ( group.GroupLocations.Count > 0 ) { foreach ( var groupLocations in group.GroupLocations.ToList() ) { group.GroupLocations.Remove( groupLocations ); groupLocationService.Delete( groupLocations ); } } // delete members var groupMemberService = new GroupMemberService( rockContext ); var members = group.Members; foreach ( var member in members.ToList() ) { group.Members.Remove( member ); groupMemberService.Delete( member ); } // delete attribute values group.LoadAttributes( rockContext ); if ( group.AttributeValues != null ) { var attributeValueService = new AttributeValueService( rockContext ); foreach ( var entry in group.AttributeValues ) { var attributeValue = attributeValueService.GetByAttributeIdAndEntityId( entry.Value.AttributeId, group.Id ); if ( attributeValue != null ) { attributeValueService.Delete( attributeValue ); } } } // now delete the group if ( groupService.Delete( group ) ) { // ok } else { throw new InvalidOperationException( "Unable to delete group: " + group.Name ); } }
/// <summary> /// Returns a <see cref="Rock.Model.Person"/> user preference value by preference setting's key. /// </summary> /// <param name="person">The <see cref="Rock.Model.Person"/> to retrieve the preference value for.</param> /// <param name="key">A <see cref="System.String"/> representing the key name of the preference setting.</param> /// <returns>A list of <see cref="System.String"/> containing the values associated with the user's preference setting.</returns> public static string GetUserPreference( Person person, string key ) { int? PersonEntityTypeId = Rock.Web.Cache.EntityTypeCache.Read( Person.USER_VALUE_ENTITY ).Id; using ( var rockContext = new Rock.Data.RockContext() ) { var attributeService = new Model.AttributeService( rockContext ); var attribute = attributeService.Get( PersonEntityTypeId, string.Empty, string.Empty, key ); if ( attribute != null ) { var attributeValueService = new Model.AttributeValueService( rockContext ); var attributeValue = attributeValueService.GetByAttributeIdAndEntityId( attribute.Id, person.Id ); if ( attributeValue != null ) { return attributeValue.Value; } } } return null; }
/// <summary> /// Saves a <see cref="Rock.Model.Person">Person's</see> user preference setting by key. /// </summary> /// <param name="person">The <see cref="Rock.Model.Person"/> who the preference value belongs to.</param> /// <param name="key">A <see cref="System.String"/> representing the key (name) of the preference setting.</param> /// <param name="value">The value.</param> public static void SaveUserPreference( Person person, string key, string value ) { int? PersonEntityTypeId = Rock.Web.Cache.EntityTypeCache.Read( Person.USER_VALUE_ENTITY ).Id; using ( var rockContext = new RockContext() ) { var attributeService = new Model.AttributeService( rockContext ); var attribute = attributeService.Get( PersonEntityTypeId, string.Empty, string.Empty, key ); if ( attribute == null ) { var fieldTypeService = new Model.FieldTypeService( rockContext ); var fieldType = FieldTypeCache.Read( Rock.SystemGuid.FieldType.TEXT.AsGuid() ); attribute = new Model.Attribute(); attribute.IsSystem = false; attribute.EntityTypeId = PersonEntityTypeId; attribute.EntityTypeQualifierColumn = string.Empty; attribute.EntityTypeQualifierValue = string.Empty; attribute.Key = key; attribute.Name = key; attribute.IconCssClass = string.Empty; attribute.DefaultValue = string.Empty; attribute.IsMultiValue = false; attribute.IsRequired = false; attribute.Description = string.Empty; attribute.FieldTypeId = fieldType.Id; attribute.Order = 0; attributeService.Add( attribute ); rockContext.SaveChanges(); } var attributeValueService = new Model.AttributeValueService( rockContext ); var attributeValue = attributeValueService.GetByAttributeIdAndEntityId( attribute.Id, person.Id ); if ( string.IsNullOrWhiteSpace( value ) ) { // Delete existing value if no existing value if ( attributeValue != null ) { attributeValueService.Delete( attributeValue ); } } else { if ( attributeValue == null ) { attributeValue = new Model.AttributeValue(); attributeValue.AttributeId = attribute.Id; attributeValue.EntityId = person.Id; attributeValueService.Add( attributeValue ); } attributeValue.Value = value; } rockContext.SaveChanges(); } }
/// <summary> /// Handles the SaveClick event of the mdAttributeValue control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param> protected void mdAttributeValue_SaveClick( object sender, EventArgs e ) { if ( _displayValueEdit ) { int attributeId = 0; if ( hfIdValues.Value != string.Empty && !int.TryParse( hfIdValues.Value, out attributeId ) ) { attributeId = 0; } if ( attributeId != 0 && phEditControls.Controls.Count > 0 ) { var attribute = Rock.Web.Cache.AttributeCache.Read( attributeId ); var rockContext = new RockContext(); AttributeValueService attributeValueService = new AttributeValueService( rockContext ); var attributeValue = attributeValueService.GetByAttributeIdAndEntityId( attributeId, _entityId ); if ( attributeValue == null ) { attributeValue = new Rock.Model.AttributeValue(); attributeValue.AttributeId = attributeId; attributeValue.EntityId = _entityId; attributeValueService.Add( attributeValue ); } var fieldType = Rock.Web.Cache.FieldTypeCache.Read( attribute.FieldType.Id ); attributeValue.Value = fieldType.Field.GetEditValue( attribute.GetControl( phEditControls.Controls[0] ), attribute.QualifierValues ); rockContext.SaveChanges(); Rock.Web.Cache.AttributeCache.Flush( attributeId ); if ( !_entityTypeId.HasValue && _entityQualifierColumn == string.Empty && _entityQualifierValue == string.Empty && ( !_entityId.HasValue || _entityId.Value == 0 ) ) { Rock.Web.Cache.GlobalAttributesCache.Flush(); } } hfIdValues.Value = string.Empty; HideDialog(); } BindGrid(); }
/// <summary> /// Handles the RowDataBound event of the rGrid control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="GridViewRowEventArgs" /> instance containing the event data.</param> protected void rGrid_RowDataBound( object sender, GridViewRowEventArgs e ) { if ( e.Row.RowType == DataControlRowType.DataRow ) { int attributeId = (int)rGrid.DataKeys[e.Row.RowIndex].Value; var attribute = Rock.Web.Cache.AttributeCache.Read( attributeId ); var fieldType = Rock.Web.Cache.FieldTypeCache.Read( attribute.FieldTypeId ); Literal lCategories = e.Row.FindControl( "lCategories" ) as Literal; if ( lCategories != null ) { lCategories.Text = attribute.Categories.Select( c => c.Name ).ToList().AsDelimited( ", " ); } Literal lEntityQualifier = e.Row.FindControl( "lEntityQualifier" ) as Literal; if ( lEntityQualifier != null ) { if ( attribute.EntityTypeId.HasValue ) { string entityTypeName = EntityTypeCache.Read( attribute.EntityTypeId.Value ).FriendlyName; if ( !string.IsNullOrWhiteSpace( attribute.EntityTypeQualifierColumn ) ) { lEntityQualifier.Text = string.Format( "{0} where [{1}] = '{2}'", entityTypeName, attribute.EntityTypeQualifierColumn, attribute.EntityTypeQualifierValue ); } else { lEntityQualifier.Text = entityTypeName; } } else { lEntityQualifier.Text = "Global Attribute"; } } if ( _displayValueEdit ) { Literal lValue = e.Row.FindControl( "lValue" ) as Literal; if ( lValue != null ) { AttributeValueService attributeValueService = new AttributeValueService( new RockContext() ); var attributeValue = attributeValueService.GetByAttributeIdAndEntityId( attributeId, _entityId ); if ( attributeValue != null && !string.IsNullOrWhiteSpace( attributeValue.Value ) ) { lValue.Text = fieldType.Field.FormatValueAsHtml( lValue, attributeValue.Value, attribute.QualifierValues, true ); } else { lValue.Text = string.Format( "<span class='text-muted'>{0}</span>", fieldType.Field.FormatValueAsHtml( lValue, attribute.DefaultValue, attribute.QualifierValues, true ) ); } } } else { Literal lDefaultValue = e.Row.FindControl( "lDefaultValue" ) as Literal; if ( lDefaultValue != null ) { lDefaultValue.Text = fieldType.Field.FormatValueAsHtml( lDefaultValue, attribute.DefaultValue, attribute.QualifierValues, true ); } } } }
/// <summary> /// Shows the edit value. /// </summary> /// <param name="attributeId">The attribute id.</param> /// <param name="setValues">if set to <c>true</c> [set values].</param> protected void ShowEditValue( int attributeId, bool setValues ) { if ( _displayValueEdit ) { var attribute = Rock.Web.Cache.AttributeCache.Read( attributeId ); hfIdValues.Value = attribute.Id.ToString(); lCaption.Text = attribute.Name; AttributeValueService attributeValueService = new AttributeValueService(); var attributeValue = attributeValueService.GetByAttributeIdAndEntityId( attributeId, _entityId ).FirstOrDefault(); var fieldType = Rock.Web.Cache.FieldTypeCache.Read( attribute.FieldType.Id ); Control editControl = fieldType.Field.EditControl( attribute.QualifierValues ); editControl.ID = string.Format( "attribute_field_{0}", attribute.Id ); editControl.ClientIDMode = ClientIDMode.AutoID; if ( setValues && attributeValue != null ) { fieldType.Field.SetEditValue( editControl, attribute.QualifierValues, attributeValue.Value ); } phEditControl.Controls.Clear(); phEditControl.Controls.Add( editControl ); modalDetails.Show(); } }
/// <summary> /// Handles the RowDataBound event of the rGrid control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="GridViewRowEventArgs" /> instance containing the event data.</param> protected void rGrid_RowDataBound( object sender, GridViewRowEventArgs e ) { if ( e.Row.RowType == DataControlRowType.DataRow ) { int attributeId = (int)rGrid.DataKeys[e.Row.RowIndex].Value; var attribute = Rock.Web.Cache.AttributeCache.Read( attributeId ); var fieldType = Rock.Web.Cache.FieldTypeCache.Read( attribute.FieldTypeId ); if ( _displayValueEdit ) { Literal lValue = e.Row.FindControl( "lValue" ) as Literal; if ( lValue != null ) { AttributeValueService attributeValueService = new AttributeValueService(); var attributeValue = attributeValueService.GetByAttributeIdAndEntityId( attributeId, _entityId ).FirstOrDefault(); if ( attributeValue != null && !string.IsNullOrWhiteSpace( attributeValue.Value ) ) { lValue.Text = fieldType.Field.FormatValue( lValue, attributeValue.Value, attribute.QualifierValues, true ); } else { lValue.Text = string.Format( "<span class='muted'>{0}</span>", fieldType.Field.FormatValue( lValue, attribute.DefaultValue, attribute.QualifierValues, true ) ); } } } else { Literal lDefaultValue = e.Row.FindControl( "lDefaultValue" ) as Literal; if ( lDefaultValue != null ) { lDefaultValue.Text = fieldType.Field.FormatValue( lDefaultValue, attribute.DefaultValue, attribute.QualifierValues, true ); } } } }
/// <summary> /// Handles the SaveClick event of the modalDetails control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param> protected void modalDetails_SaveClick( object sender, EventArgs e ) { if ( _displayValueEdit ) { int attributeId = 0; if ( hfIdValues.Value != string.Empty && !int.TryParse( hfIdValues.Value, out attributeId ) ) { attributeId = 0; } if ( attributeId != 0 && phEditControl.Controls.Count > 0 ) { var attribute = Rock.Web.Cache.AttributeCache.Read( attributeId ); AttributeValueService attributeValueService = new AttributeValueService(); var attributeValue = attributeValueService.GetByAttributeIdAndEntityId( attributeId, _entityId ).FirstOrDefault(); if ( attributeValue == null ) { attributeValue = new Rock.Model.AttributeValue(); attributeValue.AttributeId = attributeId; attributeValue.EntityId = _entityId; attributeValueService.Add( attributeValue, CurrentPersonId ); } var fieldType = Rock.Web.Cache.FieldTypeCache.Read( attribute.FieldType.Id ); attributeValue.Value = fieldType.Field.GetEditValue( phEditControl.Controls[0], attribute.QualifierValues ); attributeValueService.Save( attributeValue, CurrentPersonId ); Rock.Web.Cache.AttributeCache.Flush( attributeId ); if ( !_entityTypeId.HasValue && _entityQualifierColumn == string.Empty && _entityQualifierValue == string.Empty && !_entityId.HasValue ) { Rock.Web.Cache.GlobalAttributesCache.Flush(); } } hfIdValues.Value = string.Empty; modalDetails.Hide(); } BindGrid(); }