/// <summary> /// this will change all back end code id because of compiled dll duplicated. /// </summary> /// <param name="dynamicForm"></param> public void UpdateBackendCodeID(sysBpmsDynamicForm dynamicForm) { if (!string.IsNullOrWhiteSpace(dynamicForm.DesignJson)) { FormModel formModel = new FormModel(JObject.Parse(dynamicForm.DesignJson), HtmlElementHelper.MakeModel(null, null, HtmlElementHelperModel.e_FormAction.FillMode, dynamicForm), null, null, dynamicForm, false); formModel.ContentHtml.Rows.ForEach((row) => { generateCodeID(row); if (row is RowHtml) { readRow(row); } else { ((AccordionHtml)row).Cards.ForEach((car) => { generateCodeID(car); ((CardHtml)car).Rows.ForEach((item) => { readRow(item); }); }); } }); void readRow(object row) { ((RowHtml)row).Columns.ForEach((column) => { generateCodeID(column); column.children.ForEach((item) => { generateCodeID(item); }); }); } void generateCodeID(object item) { replaceID(((ElementBase)item).ExpressionVisibilityCode); if (item is ButtonHtml) { replaceID(((ButtonHtml)item).ExpressionConfirmCode); replaceID(((ButtonHtml)item).BackendCoding); } else if (item is DataGridHtml) { DataGridHtml dataGridHtml = (DataGridHtml)item; dataGridHtml.DataGridColumns.ForEach((column) => { column.ItemList.ForEach((cItem) => { if (!string.IsNullOrWhiteSpace(cItem.ExpressionConfirmCode)) { replaceID(cItem.ExpressionConfirmCode.FromBase64()); } if (!string.IsNullOrWhiteSpace(cItem.RunCodeData)) { replaceID(cItem.RunCodeData.FromBase64()); } }); }); } } void replaceID(string decodedCode) { if (!string.IsNullOrWhiteSpace(decodedCode)) { DesignCodeModel designCode = DesignCodeUtility.GetDesignCodeFromXml(decodedCode); if (designCode != null && !string.IsNullOrWhiteSpace(designCode.ID)) { dynamicForm.DesignJson = dynamicForm.DesignJson.Replace(decodedCode.ToBase64(), decodedCode.Replace(designCode.ID, Guid.NewGuid().ToStringObj()).ToBase64()); } } } DesignCodeModel codeModel = DesignCodeUtility.GetDesignCodeFromXml(dynamicForm.OnEntryFormCode); if (codeModel != null && !string.IsNullOrWhiteSpace(codeModel.ID)) { dynamicForm.OnEntryFormCode = dynamicForm.OnEntryFormCode.Replace(codeModel.ID, Guid.NewGuid().ToString()); } codeModel = DesignCodeUtility.GetDesignCodeFromXml(dynamicForm.OnExitFormCode); if (codeModel != null && !string.IsNullOrWhiteSpace(codeModel.ID)) { dynamicForm.OnExitFormCode = dynamicForm.OnExitFormCode.Replace(codeModel.ID, Guid.NewGuid().ToString()); } } }
public ResultOperation GetSourceCode(sysBpmsDynamicForm dynamicForm) { ResultOperation resultOperation = new ResultOperation(); try { FormModel formModel = new FormModel(JObject.Parse(dynamicForm.DesignJson), HtmlElementHelper.MakeModel(null, null, HtmlElementHelperModel.e_FormAction.FillMode, dynamicForm), null, null, dynamicForm, false); string renderedCode = string.Empty; formModel.ContentHtml.Rows.ForEach((row) => { renderedCode += renderCode(row); if (row is RowHtml) { readRow(row); } else { ((AccordionHtml)row).Cards.ForEach((car) => { renderedCode += renderCode(car); ((CardHtml)car).Rows.ForEach((item) => { readRow(item); }); }); } }); void readRow(object row) { ((RowHtml)row).Columns.ForEach((column) => { renderedCode += renderCode(column); column.children.ForEach((item) => { renderedCode += renderCode(item); }); }); } string renderCode(object item) { DesignCodeModel designCode = null; string code = string.Empty; //VisibilityDesignCodeModel code += makeClass(((ElementBase)item).VisibilityDesignCodeModel); //if is button if (item is ButtonHtml) { code += makeClass(((ButtonHtml)item).ConfirmDesignCodeModel); code += makeClass(DesignCodeUtility.GetDesignCodeFromXml(((ButtonHtml)item).BackendCoding)); } if (item is DataGridHtml) { DataGridHtml dataGridHtml = (DataGridHtml)item; dataGridHtml.DataGridColumns.ForEach((column) => { column.ItemList.ForEach((cItem) => { designCode = DesignCodeUtility.GetDesignCodeFromXml(cItem.ExpressionConfirmCode.FromBase64()); if (designCode != null && !string.IsNullOrWhiteSpace(designCode.Code)) { code += makeClass(designCode); } designCode = DesignCodeUtility.GetDesignCodeFromXml(cItem.RunCodeData.FromBase64()); if (designCode != null && !string.IsNullOrWhiteSpace(designCode.Code)) { code += makeClass(designCode); } }); }); } return(code); } string makeClass(DesignCodeModel designCode) { string code = string.Empty; if (designCode != null && !string.IsNullOrWhiteSpace(designCode.Code)) { code = DynamicCodeEngine.MakeClass(designCode.Code, designCode.ID); } return(code); } renderedCode += makeClass(DesignCodeUtility.GetDesignCodeFromXml(dynamicForm.OnEntryFormCode)); renderedCode += makeClass(DesignCodeUtility.GetDesignCodeFromXml(dynamicForm.OnExitFormCode)); dynamicForm.SourceCode = renderedCode; if (dynamicForm.ApplicationPageID.HasValue) { DynamicCodeEngine.GenerateAppPageAssembly(dynamicForm); } } catch (Exception ex) { resultOperation.AddError(ex.ToString()); resultOperation.AddError("Error while creating code"); } return(resultOperation); }