Normalize NextPageData & CurrentPageData formatting
This commit is contained in:
@@ -1,9 +1,10 @@
|
|||||||
using System;
|
using JetBrains.Annotations;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Text.Json;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using JetBrains.Annotations;
|
|
||||||
|
|
||||||
namespace Caspian.WorkflowFramework.Models
|
namespace Caspian.WorkflowFramework.Models
|
||||||
{
|
{
|
||||||
@@ -33,7 +34,7 @@ namespace Caspian.WorkflowFramework.Models
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// داده صفحه جاری
|
/// داده صفحه جاری
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? CurrentPageData { get; set; }
|
public JsonElement? CurrentPageData { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// داده صفحه بعد
|
/// داده صفحه بعد
|
||||||
@@ -41,7 +42,7 @@ namespace Caspian.WorkflowFramework.Models
|
|||||||
/// فعلا استفاده ای نداریم
|
/// فعلا استفاده ای نداریم
|
||||||
/// </remark>
|
/// </remark>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? NextPageData { get; set; }
|
public JsonElement? NextPageData { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// آدرس صفحه بعدی
|
/// آدرس صفحه بعدی
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
using System;
|
using Caspian.WorkflowFramework.Models;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Nodes;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Caspian.WorkflowFramework.Models;
|
|
||||||
|
|
||||||
namespace Caspian.WorkflowFramework.Utility
|
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
|
? long.TryParse(dictionary[nameof(workflowModel.UserId)]?.ToString(), out var userId) ? userId : (long?)null
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
//workflowModel.CurrentPageData = dictionary.ContainsKey(nameof(workflowModel.CurrentPageData))
|
//CurrentPageData
|
||||||
// ? (object?)dictionary[nameof(workflowModel.CurrentPageData)]
|
if (dictionary.TryGetValue(nameof(workflowModel.CurrentPageData), out var currentPageDataObj) &&
|
||||||
// : null;
|
currentPageDataObj is not null)
|
||||||
|
{
|
||||||
|
switch (currentPageDataObj)
|
||||||
|
{
|
||||||
|
case JsonElement je:
|
||||||
|
workflowModel.CurrentPageData = je;
|
||||||
|
break;
|
||||||
|
|
||||||
workflowModel.CurrentPageData = dictionary.ContainsKey(nameof(workflowModel.CurrentPageData))
|
case JsonNode node:
|
||||||
? dictionary[nameof(workflowModel.CurrentPageData)]?.ToString()
|
// .NET 6+
|
||||||
: null;
|
workflowModel.CurrentPageData = JsonSerializer.SerializeToElement(node);
|
||||||
|
break;
|
||||||
|
|
||||||
//workflowModel.NextPageData = dictionary.ContainsKey(nameof(workflowModel.NextPageData))
|
case string s:
|
||||||
// ? (object?)dictionary[nameof(workflowModel.NextPageData)]
|
// اگر به صورت string JSON ذخیره شده
|
||||||
// : null;
|
workflowModel.CurrentPageData = JsonSerializer.Deserialize<JsonElement>(s);
|
||||||
|
break;
|
||||||
workflowModel.NextPageData = dictionary.ContainsKey(nameof(workflowModel.NextPageData))
|
|
||||||
? dictionary[nameof(workflowModel.NextPageData)]?.ToString()
|
default:
|
||||||
: null;
|
// هر نوع دیگری: 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))
|
workflowModel.NextPageUrl = dictionary.ContainsKey(nameof(workflowModel.NextPageUrl))
|
||||||
? dictionary[nameof(workflowModel.NextPageUrl)]?.ToString()
|
? dictionary[nameof(workflowModel.NextPageUrl)]?.ToString()
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ public class HomeController : Controller, ILoggable
|
|||||||
{
|
{
|
||||||
EventName = input.PageEventName,
|
EventName = input.PageEventName,
|
||||||
WorkflowInstanceId = input.WorkflowId,
|
WorkflowInstanceId = input.WorkflowId,
|
||||||
EventData = JsonConvert.SerializeObject(input)
|
EventData = System.Text.Json.JsonSerializer.SerializeToElement(input)
|
||||||
};
|
};
|
||||||
|
|
||||||
var response = await _workflowService.PublishEventAsync(publishModel);
|
var response = await _workflowService.PublishEventAsync(publishModel);
|
||||||
@@ -173,7 +173,7 @@ public class HomeController : Controller, ILoggable
|
|||||||
{
|
{
|
||||||
EventName = input.PageEventName,
|
EventName = input.PageEventName,
|
||||||
WorkflowInstanceId = input.WorkflowId,
|
WorkflowInstanceId = input.WorkflowId,
|
||||||
EventData = JsonConvert.SerializeObject(input)
|
EventData = System.Text.Json.JsonSerializer.SerializeToElement(input)
|
||||||
};
|
};
|
||||||
|
|
||||||
var response = await _workflowService.PublishEventAsync(publishEventModel);
|
var response = await _workflowService.PublishEventAsync(publishEventModel);
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ namespace SampleWorkflowWeb.Controllers
|
|||||||
{
|
{
|
||||||
EventName = input.PageEventName,
|
EventName = input.PageEventName,
|
||||||
WorkflowInstanceId = input.WorkflowId,
|
WorkflowInstanceId = input.WorkflowId,
|
||||||
EventData = JsonConvert.SerializeObject(input)
|
EventData = System.Text.Json.JsonSerializer.SerializeToElement(input)
|
||||||
};
|
};
|
||||||
|
|
||||||
var response = await _workflowService.PublishEventAsync(publishModel);
|
var response = await _workflowService.PublishEventAsync(publishModel);
|
||||||
@@ -189,7 +189,7 @@ namespace SampleWorkflowWeb.Controllers
|
|||||||
{
|
{
|
||||||
EventName = input.PageEventName,
|
EventName = input.PageEventName,
|
||||||
WorkflowInstanceId = input.WorkflowId,
|
WorkflowInstanceId = input.WorkflowId,
|
||||||
EventData = JsonConvert.SerializeObject(input)
|
EventData = System.Text.Json.JsonSerializer.SerializeToElement(input)
|
||||||
};
|
};
|
||||||
|
|
||||||
var response = await _workflowService.PublishEventAsync(publishModel);
|
var response = await _workflowService.PublishEventAsync(publishModel);
|
||||||
@@ -258,7 +258,7 @@ namespace SampleWorkflowWeb.Controllers
|
|||||||
{
|
{
|
||||||
EventName = input.PageEventName,
|
EventName = input.PageEventName,
|
||||||
WorkflowInstanceId = input.WorkflowId,
|
WorkflowInstanceId = input.WorkflowId,
|
||||||
EventData = JsonConvert.SerializeObject(input)
|
EventData = System.Text.Json.JsonSerializer.SerializeToElement(input)
|
||||||
};
|
};
|
||||||
|
|
||||||
var response = await _workflowService.PublishEventAsync(publishModel);
|
var response = await _workflowService.PublishEventAsync(publishModel);
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
namespace SampleWorkflowWeb.Models
|
using System.Text.Json;
|
||||||
|
|
||||||
|
namespace SampleWorkflowWeb.Models
|
||||||
{
|
{
|
||||||
public class WorkflowModel
|
public class WorkflowModel
|
||||||
{
|
{
|
||||||
@@ -28,7 +30,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// داده صفحه جاری
|
/// داده صفحه جاری
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? CurrentPageData { get; set; }
|
public JsonElement? CurrentPageData { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// داده صفحه بعد
|
/// داده صفحه بعد
|
||||||
@@ -36,7 +38,7 @@
|
|||||||
/// فعلا استفاده ای نداریم
|
/// فعلا استفاده ای نداریم
|
||||||
/// </remark>
|
/// </remark>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? NextPageData { get; set; }
|
public JsonElement? NextPageData { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// آدرس صفحه بعدی
|
/// آدرس صفحه بعدی
|
||||||
|
|||||||
Reference in New Issue
Block a user