} // beforeSave /// <summary> ///After Save. Insert - create tree /// </summary> /// <param name="newRecord">insert</param> /// <param name="success">success</param> /// <returns>true if inserted</returns> protected override bool AfterSave(bool newRecord, bool success) { if (!success) { return(success); } if (newRecord) { StringBuilder sb = new StringBuilder( "INSERT INTO AD_TreeNodeCMT " + "(AD_Client_ID,AD_Org_ID, IsActive,Created,CreatedBy,Updated,UpdatedBy, " + "AD_Tree_ID, Node_ID, Parent_ID, SeqNo) " + "VALUES (") .Append(GetAD_Client_ID()).Append( ",0, 'Y', SysDate, 0, SysDate, 0,").Append( GetAD_Tree_ID()).Append(",").Append(Get_ID()).Append( ", 0, 999)"); int no = DataBase.DB.ExecuteQuery(sb.ToString(), null, Get_TrxName()); if (no > 0) { log.Fine("#" + no + " - TreeType=CMT"); } else { log.Warning("#" + no + " - TreeType=CMT"); } return(no > 0); } if (!newRecord) { VAdvantage.CM.CacheHandler thisHandler = new VAdvantage.CM.CacheHandler( VAdvantage.CM.CacheHandler.ConvertJNPURLToCacheURL(GetCtx() .GetContext(System.Net.Dns.GetHostName())), log, GetCtx(), Get_TrxName()); if (!IsInclude()) { // Clean Main Templates on a single level. thisHandler.CleanTemplate(this.Get_ID()); // Check the elements in the Stage Area MCStage[] theseStages = MCStage.GetStagesByTemplate(GetWebProject(), Get_ID()); for (int i = 0; i < theseStages.Length; i++) { theseStages[i].CheckElements(); } } else { // Since we not know which main templates we will clean up all! thisHandler.EmptyTemplate(); } } return(success); } // afterSave
} // setStage /// <summary> /// Update Elements in Container from Stage /// </summary> /// <param name="project">project</param> /// <param name="stage">stage</param> /// <param name="trxName">trx</param> protected void UpdateElements(MWebProject project, MCStage stage, Trx trxName) { vcon = new VConnection(); VAdvantage.CM.CacheHandler thisHandler = new VAdvantage.CM.CacheHandler( VAdvantage.CM.CacheHandler.ConvertJNPURLToCacheURL(vcon.Apps_host), log, GetCtx(), Get_Trx()); // First update the new ones... int[] tableKeys = X_CM_CStage_Element.GetAllIDs("CM_CStage_Element", "CM_CStage_ID=" + stage.Get_ID(), trxName); if (tableKeys != null && tableKeys.Length > 0) { for (int i = 0; i < tableKeys.Length; i++) { X_CM_CStage_Element thisStageElement = new X_CM_CStage_Element( project.GetCtx(), tableKeys[i], trxName); int[] thisContainerElementKeys = X_CM_Container_Element .GetAllIDs("CM_Container_Element", "CM_Container_ID=" + stage.Get_ID() + " AND Name LIKE '" + thisStageElement.GetName() + "'", trxName); X_CM_Container_Element thisContainerElement; if (thisContainerElementKeys != null && thisContainerElementKeys.Length > 0) { thisContainerElement = new X_CM_Container_Element(project .GetCtx(), thisContainerElementKeys[0], trxName); } else { thisContainerElement = new X_CM_Container_Element(project .GetCtx(), 0, trxName); } thisContainerElement.SetCM_Container_ID(stage.Get_ID()); X_CM_CStage_Element stageElement = new X_CM_CStage_Element( project.GetCtx(), tableKeys[i], trxName); thisContainerElement.SetName(stageElement.GetName()); thisContainerElement.SetDescription(stageElement.GetDescription()); thisContainerElement.SetHelp(stageElement.GetHelp()); thisContainerElement.SetIsActive(stageElement.IsActive()); thisContainerElement.SetIsValid(stageElement.IsValid()); String contentHTML = thisStageElement.GetContentHTML(); thisContainerElement.SetContentHTML(contentHTML); // PO.copyValues(new // X_CM_CStage_Element(project.getCtx(),tableKeys[i],trxName), // thisContainerElement); thisContainerElement.Save(trxName); // Remove Container from cache thisHandler.CleanContainerElement(thisContainerElement .Get_ID()); } } // Now we are checking the existing ones to delete the unneeded ones... tableKeys = X_CM_Container_Element.GetAllIDs("CM_Container_Element", "CM_Container_ID=" + stage.Get_ID(), trxName); if (tableKeys != null && tableKeys.Length > 0) { for (int i = 0; i < tableKeys.Length; i++) { X_CM_Container_Element thisContainerElement = new X_CM_Container_Element( project.GetCtx(), tableKeys[i], trxName); int[] thisCStageElementKeys = X_CM_CStage_Element .GetAllIDs("CM_CStage_Element", "CM_CStage_ID=" + stage.Get_ID() + " AND Name LIKE '" + thisContainerElement.GetName() + "'", trxName); // If we cannot find a representative in the Stage we will delete from production if (thisCStageElementKeys == null || thisCStageElementKeys.Length < 1) { // First delete it from cache, then delete the record itself thisHandler.CleanContainerElement(thisContainerElement .Get_ID()); thisContainerElement.Delete(true); } } } }