public override List <ImportExport.Result> XmlImport(System.Xml.XmlNode objectNode) { List <ImportExport.Result> response = base.XmlImport(objectNode); try { foreach (System.Xml.XmlNode currentNode in objectNode.ChildNodes) { switch (currentNode.Name) { case "Dependencies": #region Dependencies foreach (System.Xml.XmlNode currentDependencyNode in currentNode.ChildNodes) { switch (currentDependencyNode.Name) { case "ConditionClass": ConditionClass conditionClass = application.ConditionClassGet(currentDependencyNode.Attributes[Name].Value); if (conditionClass == null) { conditionClass = new Core.Condition.ConditionClass(application); response.AddRange(conditionClass.XmlImport(currentDependencyNode)); } break; } } #endregion break; case "Properties": #region Properties foreach (System.Xml.XmlNode currentPropertyNode in currentNode.ChildNodes) { switch (currentPropertyNode.Attributes["Name"].Value) { case "ConditionClassName": conditionClassId = application.ConditionClassGetIdByName(currentPropertyNode.InnerText); if (conditionClassId == 0) { throw new ApplicationException("Unable to retreive Condition Type: " + currentPropertyNode.InnerText); } break; } } #endregion break; case "ConditionCriteria": #region Condition Criteria foreach (System.Xml.XmlNode currentCriteriaNode in currentNode.ChildNodes) { switch (currentCriteriaNode.Name) { case "ConditionCriteriaDemographic": ConditionCriteria.ConditionCriteriaDemographic conditionCriteriaDemographic = new ConditionCriteria.ConditionCriteriaDemographic(application); response.AddRange(conditionCriteriaDemographic.XmlImport(currentCriteriaNode)); demographicCriteria.Add(conditionCriteriaDemographic); break; case "ConditionCriteriaEvent": ConditionCriteria.ConditionCriteriaEvent conditionCriteriaEvent = new ConditionCriteria.ConditionCriteriaEvent(application); response.AddRange(conditionCriteriaEvent.XmlImport(currentCriteriaNode)); eventCriteria.Add(conditionCriteriaEvent); break; } } #endregion break; case "ConditionEvents": #region Condition Events foreach (System.Xml.XmlNode currentEventNode in currentNode.ChildNodes) { String eventName = currentEventNode.Name; Core.Action.Action eventAction = new Action.Action(application); response.AddRange(eventAction.XmlImport(currentEventNode.FirstChild)); if (events.ContainsKey(eventName)) { events.Remove(eventName); } events.Add(eventName, eventAction); } #endregion break; } // switch (currentNode.Name) { } // foreach (System.Xml.XmlNode currentNode in objectNode.ChildNodes) { // SAVE IMPORTED OBJECT if (!Save()) { throw new ApplicationException("Unable to save " + ObjectType + ": " + Name + "."); } } catch (Exception importException) { response.Add(new ImportExport.Result(ObjectType, Name, importException)); } return(response); }
public override Boolean Save() { Boolean success = false; StringBuilder sqlStatement; String criteriaIds; if (!application.HasEnvironmentPermission(Server.EnvironmentPermissions.ConditionManage)) { throw new ApplicationException("Permission Denied"); } modifiedAccountInfo = new Mercury.Server.Data.AuthorityAccountStamp(application.Session); try { application.EnvironmentDatabase.BeginTransaction(); conditionClassId = application.ConditionClassGetIdByName(conditionClassName); if (conditionClassId == 0) { ConditionClass conditionClass = new ConditionClass(application); conditionClass.Name = conditionClassName; conditionClass.Description = conditionClassName; conditionClass.Enabled = true; conditionClass.Visible = true; conditionClass.Save(); conditionClassId = conditionClass.Id; } sqlStatement = new StringBuilder(); sqlStatement.Append("EXEC dbo.Condition_InsertUpdate "); sqlStatement.Append(Id.ToString() + ", "); sqlStatement.Append("'" + NameSql + "', "); sqlStatement.Append("'" + DescriptionSql + "', "); sqlStatement.Append(conditionClassId.ToString() + ", "); sqlStatement.Append(Convert.ToInt32(Enabled).ToString() + ", "); sqlStatement.Append(Convert.ToInt32(Visible).ToString() + ", "); //sqlStatement.Append (IdSqlAllowNull (OnBeforeMembershipAddWorkflowId) + ", "); //sqlStatement.Append (events["OnMembershipAdd"].Id.ToString () + ", "); //sqlStatement.Append ("'" + events["OnMembershipAdd"].ActionParametersXmlSqlParsedString + "', "); //sqlStatement.Append ("'" + events["OnMembershipAdd"].Description + "', "); //sqlStatement.Append (IdSqlAllowNull (OnBeforeMembershipTerminateWorkflowId) + ", "); //sqlStatement.Append (events["OnMembershipTerminate"].Id.ToString () + ", "); //sqlStatement.Append ("'" + events["OnMembershipTerminate"].ActionParametersXmlSqlParsedString + "', "); //sqlStatement.Append ("'" + events["OnMembershipTerminate"].Description + "', "); sqlStatement.Append("'" + ExtendedPropertiesSql + "', "); sqlStatement.Append("'" + modifiedAccountInfo.SecurityAuthorityNameSql + "', '" + modifiedAccountInfo.UserAccountIdSql + "', '" + modifiedAccountInfo.UserAccountNameSql + "'"); success = application.EnvironmentDatabase.ExecuteSqlStatement(sqlStatement.ToString(), 0); if (!success) { application.SetLastException(application.EnvironmentDatabase.LastException); throw application.EnvironmentDatabase.LastException; } SetIdentity(); #region Demographic Criteria if (success) { criteriaIds = String.Empty; foreach (ConditionCriteria.ConditionCriteriaDemographic currentCriteria in demographicCriteria) { currentCriteria.ConditionId = id; success = success && currentCriteria.Save(application); criteriaIds = criteriaIds + currentCriteria.Id.ToString() + ","; if (!success) { break; } } if (success) { sqlStatement = new StringBuilder("DELETE FROM ConditionCriteriaDemographic WHERE ConditionId = " + id.ToString()); if (criteriaIds.Length != 0) { criteriaIds = criteriaIds.Substring(0, criteriaIds.Length - 1); sqlStatement.Append(" AND ConditionCriteriaDemographicId NOT IN (" + criteriaIds + ")"); } success = application.EnvironmentDatabase.ExecuteSqlStatement(sqlStatement.ToString(), 0); } } #endregion #region Event Criteria if (success) { criteriaIds = String.Empty; foreach (ConditionCriteria.ConditionCriteriaEvent currentCriteria in eventCriteria) { currentCriteria.ConditionId = id; success = success && currentCriteria.Save(application); criteriaIds = criteriaIds + currentCriteria.Id.ToString() + ","; if (!success) { break; } } if (success) { sqlStatement = new StringBuilder("DELETE FROM ConditionCriteriaEvent WHERE ConditionId = " + id.ToString()); if (criteriaIds.Length != 0) { criteriaIds = criteriaIds.Substring(0, criteriaIds.Length - 1); sqlStatement.Append(" AND ConditionCriteriaEventId NOT IN (" + criteriaIds + ")"); } success = application.EnvironmentDatabase.ExecuteSqlStatement(sqlStatement.ToString(), 0); } } #endregion if (!success) { application.SetLastException(application.EnvironmentDatabase.LastException); throw application.EnvironmentDatabase.LastException; } success = true; application.EnvironmentDatabase.CommitTransaction(); } catch (Exception applicationException) { success = false; application.EnvironmentDatabase.RollbackTransaction(); application.SetLastException(applicationException); } return(success); }
public override System.Xml.XmlDocument XmlSerialize() { System.Xml.XmlDocument document = base.XmlSerialize(); System.Xml.XmlNode propertiesNode = document.ChildNodes[1].ChildNodes[0]; #region Properties CommonFunctions.XmlDocumentAppendPropertyNode(document, propertiesNode, "ConditionClassId", conditionClassId.ToString()); CommonFunctions.XmlDocumentAppendPropertyNode(document, propertiesNode, "ConditionClassName", ((ConditionClass != null) ? ConditionClass.Name : String.Empty)); #endregion #region Criteria System.Xml.XmlNode criteriaNode = document.CreateElement("ConditionCriteria"); document.LastChild.AppendChild(criteriaNode); foreach (ConditionCriteria.ConditionCriteriaDemographic currentDemographicCriteria in demographicCriteria) { criteriaNode.AppendChild(document.ImportNode(currentDemographicCriteria.XmlSerialize().LastChild, true)); } foreach (ConditionCriteria.ConditionCriteriaEvent currentEventCriteria in eventCriteria) { criteriaNode.AppendChild(document.ImportNode(currentEventCriteria.XmlSerialize().LastChild, true)); } #endregion #region Condition Events System.Xml.XmlNode conditionEventNode = document.CreateElement("ConditionEvents"); document.LastChild.AppendChild(conditionEventNode); foreach (String currentConditionEventName in events.Keys) { if (events[currentConditionEventName] != null) { System.Xml.XmlNode conditionEventActionNode = document.CreateElement(currentConditionEventName); conditionEventActionNode.AppendChild(document.ImportNode(events[currentConditionEventName].XmlSerialize().LastChild, true)); conditionEventNode.AppendChild(conditionEventActionNode); } } #endregion #region Dependencies Nodes System.Xml.XmlNode dependenciesNode = document.CreateElement("Dependencies"); document.LastChild.InsertBefore(dependenciesNode, propertiesNode); if (ConditionClass != null) { dependenciesNode.AppendChild(document.ImportNode(ConditionClass.XmlSerialize().LastChild, true)); } #endregion return(document); }