diff --git a/src/apps/Caspian.WorkflowFramework/Models/WorkflowModel.cs b/src/apps/Caspian.WorkflowFramework/Models/WorkflowModel.cs
index 36fadfe..33b8cf2 100644
--- a/src/apps/Caspian.WorkflowFramework/Models/WorkflowModel.cs
+++ b/src/apps/Caspian.WorkflowFramework/Models/WorkflowModel.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Text.Json;
using System.Threading.Tasks;
using JetBrains.Annotations;
@@ -32,7 +33,7 @@ public class WorkflowModel
///
/// داده صفحه جاری
///
- public string? CurrentPageData { get; set; }
+ public JsonElement? CurrentPageData { get; set; }
///
/// داده صفحه بعد
diff --git a/src/apps/Caspian.WorkflowFramework/Utility/ConversionExtensions.cs b/src/apps/Caspian.WorkflowFramework/Utility/ConversionExtensions.cs
index b917ae1..27f65a6 100644
--- a/src/apps/Caspian.WorkflowFramework/Utility/ConversionExtensions.cs
+++ b/src/apps/Caspian.WorkflowFramework/Utility/ConversionExtensions.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Text.Json;
+using System.Text.Json.Nodes;
using System.Threading.Tasks;
using Caspian.WorkflowFramework.Models;
@@ -32,13 +34,39 @@ public static class ConversionExtensions
? long.TryParse(dictionary[nameof(workflowModel.UserId)]?.ToString(), out var userId) ? userId : (long?)null
: null;
- //workflowModel.CurrentPageData = dictionary.ContainsKey(nameof(workflowModel.CurrentPageData))
- // ? (object?)dictionary[nameof(workflowModel.CurrentPageData)]
- // : null;
+ if (dictionary.TryGetValue(nameof(workflowModel.CurrentPageData), out var currentPageDataObj) &&
+ currentPageDataObj is not null)
+ {
+ switch (currentPageDataObj)
+ {
+ case JsonElement je:
+ workflowModel.CurrentPageData = je;
+ break;
- workflowModel.CurrentPageData = dictionary.ContainsKey(nameof(workflowModel.CurrentPageData))
- ? dictionary[nameof(workflowModel.CurrentPageData)]?.ToString()
- : null;
+ case JsonNode node:
+ // .NET 6+
+ workflowModel.CurrentPageData = JsonSerializer.SerializeToElement(node);
+ break;
+
+ case string s:
+ // اگر به صورت string JSON ذخیره شده
+ workflowModel.CurrentPageData = JsonSerializer.Deserialize(s);
+ break;
+
+ default:
+ // هر نوع دیگری: serialize و تبدیل به JsonElement
+ workflowModel.CurrentPageData = JsonSerializer.SerializeToElement(currentPageDataObj);
+ break;
+ }
+ }
+ else
+ {
+ workflowModel.CurrentPageData = null;
+ }
+
+ //workflowModel.CurrentPageData = dictionary.ContainsKey(nameof(workflowModel.CurrentPageData))
+ // ? dictionary[nameof(workflowModel.CurrentPageData)]?.ToString()
+ // : null;
//workflowModel.NextPageData = dictionary.ContainsKey(nameof(workflowModel.NextPageData))
// ? (object?)dictionary[nameof(workflowModel.NextPageData)]