Normalize NextPageData & CurrentPageData formatting

This commit is contained in:
Behzad Alizadeh
2025-12-10 12:38:09 +03:30
parent 9b5412f33e
commit df027b61ca
5 changed files with 78 additions and 27 deletions
@@ -1,9 +1,11 @@
using System;
using Caspian.WorkflowFramework.Models;
using System;
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;
namespace Caspian.WorkflowFramework.Utility
{
@@ -33,21 +35,67 @@ namespace Caspian.WorkflowFramework.Utility
? 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;
//CurrentPageData
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;
//workflowModel.NextPageData = dictionary.ContainsKey(nameof(workflowModel.NextPageData))
// ? (object?)dictionary[nameof(workflowModel.NextPageData)]
// : null;
workflowModel.NextPageData = dictionary.ContainsKey(nameof(workflowModel.NextPageData))
? dictionary[nameof(workflowModel.NextPageData)]?.ToString()
: null;
case string s:
// اگر به صورت string JSON ذخیره شده
workflowModel.CurrentPageData = JsonSerializer.Deserialize<JsonElement>(s);
break;
default:
// هر نوع دیگری: serialize و تبدیل به JsonElement
workflowModel.CurrentPageData = JsonSerializer.SerializeToElement(currentPageDataObj);
break;
}
}
else
{
workflowModel.CurrentPageData = null;
}
//NextPageData
if (dictionary.TryGetValue(nameof(workflowModel.NextPageData), out var nextPageDataObj) &&
nextPageDataObj is not null)
{
switch (nextPageDataObj)
{
case JsonElement je:
workflowModel.NextPageData = je;
break;
case JsonNode node:
// .NET 6+
workflowModel.NextPageData = JsonSerializer.SerializeToElement(node);
break;
case string s:
// اگر به صورت string JSON ذخیره شده
workflowModel.NextPageData = JsonSerializer.Deserialize<JsonElement>(s);
break;
default:
// هر نوع دیگری: serialize و تبدیل به JsonElement
workflowModel.NextPageData = JsonSerializer.SerializeToElement(nextPageDataObj);
break;
}
}
else
{
workflowModel.NextPageData = null;
}
workflowModel.NextPageUrl = dictionary.ContainsKey(nameof(workflowModel.NextPageUrl))
? dictionary[nameof(workflowModel.NextPageUrl)]?.ToString()