/// <summary> /// Adds an attribute /// </summary> /// <param name="attributesXml">Attributes in XML format</param> /// <param name="ca">User attribute</param> /// <param name="value">Value</param> /// <returns>Attributes</returns> public virtual string AddUserAttribute(string attributesXml, UserAttribute ca, string value) { string result = string.Empty; try { var xmlDoc = new XmlDocument(); if (String.IsNullOrEmpty(attributesXml)) { var element1 = xmlDoc.CreateElement("Attributes"); xmlDoc.AppendChild(element1); } else { xmlDoc.LoadXml(attributesXml); } var rootElement = (XmlElement)xmlDoc.SelectSingleNode(@"//Attributes"); XmlElement attributeElement = null; //find existing var nodeList1 = xmlDoc.SelectNodes(@"//Attributes/UserAttribute"); foreach (XmlNode node1 in nodeList1) { if (node1.Attributes != null && node1.Attributes["ID"] != null) { string str1 = node1.Attributes["ID"].InnerText.Trim(); int id; if (int.TryParse(str1, out id)) { if (id == ca.Id) { attributeElement = (XmlElement)node1; break; } } } } //create new one if not found if (attributeElement == null) { attributeElement = xmlDoc.CreateElement("UserAttribute"); attributeElement.SetAttribute("ID", ca.Id.ToString()); rootElement.AppendChild(attributeElement); } var attributeValueElement = xmlDoc.CreateElement("UserAttributeValue"); attributeElement.AppendChild(attributeValueElement); var attributeValueValueElement = xmlDoc.CreateElement("Value"); attributeValueValueElement.InnerText = value; attributeValueElement.AppendChild(attributeValueValueElement); result = xmlDoc.OuterXml; } catch (Exception exc) { Debug.Write(exc.ToString()); } return result; }
/// <summary> /// Deletes a user attribute /// </summary> /// <param name="userAttribute">User attribute</param> public virtual void DeleteUserAttribute(UserAttribute userAttribute) { if (userAttribute == null) throw new ArgumentNullException("userAttribute"); _userAttributeRepository.Delete(userAttribute); _cacheManager.RemoveByPattern(USERATTRIBUTES_PATTERN_KEY); _cacheManager.RemoveByPattern(USERATTRIBUTEVALUES_PATTERN_KEY); //event notification _eventPublisher.EntityDeleted(userAttribute); }