Add fileds 'InstanceMode' & 'PageNumber' in workflow response
This commit is contained in:
@@ -15,6 +15,14 @@ public class WorkflowModel
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string? InstanceId { get; set; }
|
public string? InstanceId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نوع نمونه
|
||||||
|
/// <remark>
|
||||||
|
/// exist, new, ...
|
||||||
|
/// </remark>
|
||||||
|
/// </summary>
|
||||||
|
public string? InstanceMode { get; set; } = "exist";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// نام گردش کار
|
/// نام گردش کار
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -25,6 +33,7 @@ public class WorkflowModel
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsComplete { get; set; }
|
public bool IsComplete { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// برای کدام کاربر؟
|
/// برای کدام کاربر؟
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -48,6 +57,11 @@ public class WorkflowModel
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string? NextPageUrl { get; set; }
|
public string? NextPageUrl { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره صفحه
|
||||||
|
/// </summary>
|
||||||
|
public int? PageNumber { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// رویدادی که باید پس از سابمیت صفحه بعدی منتشر شود
|
/// رویدادی که باید پس از سابمیت صفحه بعدی منتشر شود
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ public class WorkflowService : IWorkflowService, ILoggable
|
|||||||
var workflowModel = dictionary.ConvertToWorkflowModel();
|
var workflowModel = dictionary.ConvertToWorkflowModel();
|
||||||
workflowModel.InstanceId = workflowClient.WorkflowInstanceId;
|
workflowModel.InstanceId = workflowClient.WorkflowInstanceId;
|
||||||
workflowModel.UserId = input.UserId;
|
workflowModel.UserId = input.UserId;
|
||||||
|
workflowModel.InstanceMode = "exist";
|
||||||
|
|
||||||
response = new WorkflowResponse<WorkflowModel>()
|
response = new WorkflowResponse<WorkflowModel>()
|
||||||
{
|
{
|
||||||
@@ -194,6 +195,7 @@ public class WorkflowService : IWorkflowService, ILoggable
|
|||||||
if (runningWorkflowInstance != null)
|
if (runningWorkflowInstance != null)
|
||||||
{
|
{
|
||||||
workflowInstanceId = runningWorkflowInstance.Id;
|
workflowInstanceId = runningWorkflowInstance.Id;
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -220,6 +222,7 @@ public class WorkflowService : IWorkflowService, ILoggable
|
|||||||
var workflowModel = dictionary.ConvertToWorkflowModel();
|
var workflowModel = dictionary.ConvertToWorkflowModel();
|
||||||
workflowModel.InstanceId = workflowInstanceId;
|
workflowModel.InstanceId = workflowInstanceId;
|
||||||
workflowModel.UserId = input.UserId;
|
workflowModel.UserId = input.UserId;
|
||||||
|
workflowModel.InstanceId = runningWorkflowInstance != null ? "exist" : "new";
|
||||||
|
|
||||||
response = new WorkflowResponse<WorkflowModel>()
|
response = new WorkflowResponse<WorkflowModel>()
|
||||||
{
|
{
|
||||||
@@ -309,6 +312,7 @@ public class WorkflowService : IWorkflowService, ILoggable
|
|||||||
var workflowModel = dictionary.ConvertToWorkflowModel();
|
var workflowModel = dictionary.ConvertToWorkflowModel();
|
||||||
workflowModel.InstanceId = instance.Id;
|
workflowModel.InstanceId = instance.Id;
|
||||||
workflowModel.UserId = instance.ExternalUserId;
|
workflowModel.UserId = instance.ExternalUserId;
|
||||||
|
workflowModel.InstanceMode = "exist";
|
||||||
|
|
||||||
response = new WorkflowResponse<WorkflowModel>()
|
response = new WorkflowResponse<WorkflowModel>()
|
||||||
{
|
{
|
||||||
@@ -379,6 +383,7 @@ public class WorkflowService : IWorkflowService, ILoggable
|
|||||||
var workflowModel = dictionary.ConvertToWorkflowModel();
|
var workflowModel = dictionary.ConvertToWorkflowModel();
|
||||||
workflowModel.InstanceId = instance.Id;
|
workflowModel.InstanceId = instance.Id;
|
||||||
workflowModel.UserId = instance.ExternalUserId;
|
workflowModel.UserId = instance.ExternalUserId;
|
||||||
|
workflowModel.InstanceMode = "exist";
|
||||||
|
|
||||||
response = new WorkflowResponse<WorkflowModel>()
|
response = new WorkflowResponse<WorkflowModel>()
|
||||||
{
|
{
|
||||||
@@ -436,6 +441,7 @@ public class WorkflowService : IWorkflowService, ILoggable
|
|||||||
var model = dict.ConvertToWorkflowModel();
|
var model = dict.ConvertToWorkflowModel();
|
||||||
model.InstanceId = instance.Id;
|
model.InstanceId = instance.Id;
|
||||||
model.UserId = instance.ExternalUserId;
|
model.UserId = instance.ExternalUserId;
|
||||||
|
model.InstanceMode = "exist";
|
||||||
|
|
||||||
result.Add(model);
|
result.Add(model);
|
||||||
}
|
}
|
||||||
@@ -560,6 +566,7 @@ public class WorkflowService : IWorkflowService, ILoggable
|
|||||||
var model = dict.ConvertToWorkflowModel();
|
var model = dict.ConvertToWorkflowModel();
|
||||||
model.InstanceId = latest.Id;
|
model.InstanceId = latest.Id;
|
||||||
model.UserId = latest.ExternalUserId;
|
model.UserId = latest.ExternalUserId;
|
||||||
|
model.InstanceMode = "exist";
|
||||||
|
|
||||||
var response = new WorkflowResponse<WorkflowModel>
|
var response = new WorkflowResponse<WorkflowModel>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,15 +1,16 @@
|
|||||||
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;
|
||||||
using System.Text.Json.Nodes;
|
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
|
||||||
public static class ConversionExtensions
|
|
||||||
{
|
{
|
||||||
|
public static class ConversionExtensions
|
||||||
|
{
|
||||||
public static WorkflowModel ConvertToWorkflowModel(this Dictionary<string, object?> dictionary)
|
public static WorkflowModel ConvertToWorkflowModel(this Dictionary<string, object?> dictionary)
|
||||||
{
|
{
|
||||||
var workflowModel = new WorkflowModel();
|
var workflowModel = new WorkflowModel();
|
||||||
@@ -22,6 +23,10 @@ public static class ConversionExtensions
|
|||||||
? dictionary[nameof(workflowModel.InstanceId)]?.ToString()
|
? dictionary[nameof(workflowModel.InstanceId)]?.ToString()
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
|
workflowModel.InstanceMode = dictionary.ContainsKey(nameof(workflowModel.InstanceMode))
|
||||||
|
? dictionary[nameof(workflowModel.InstanceMode)]?.ToString()
|
||||||
|
: null;
|
||||||
|
|
||||||
workflowModel.Name = dictionary.ContainsKey(nameof(workflowModel.Name))
|
workflowModel.Name = dictionary.ContainsKey(nameof(workflowModel.Name))
|
||||||
? dictionary[nameof(workflowModel.Name)]?.ToString()
|
? dictionary[nameof(workflowModel.Name)]?.ToString()
|
||||||
: null;
|
: null;
|
||||||
@@ -34,6 +39,7 @@ public static class ConversionExtensions
|
|||||||
? 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;
|
||||||
|
|
||||||
|
//CurrentPageData
|
||||||
if (dictionary.TryGetValue(nameof(workflowModel.CurrentPageData), out var currentPageDataObj) &&
|
if (dictionary.TryGetValue(nameof(workflowModel.CurrentPageData), out var currentPageDataObj) &&
|
||||||
currentPageDataObj is not null)
|
currentPageDataObj is not null)
|
||||||
{
|
{
|
||||||
@@ -64,18 +70,7 @@ public static class ConversionExtensions
|
|||||||
workflowModel.CurrentPageData = null;
|
workflowModel.CurrentPageData = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
//workflowModel.CurrentPageData = dictionary.ContainsKey(nameof(workflowModel.CurrentPageData))
|
//NextPageData
|
||||||
// ? dictionary[nameof(workflowModel.CurrentPageData)]?.ToString()
|
|
||||||
// : null;
|
|
||||||
|
|
||||||
//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;
|
|
||||||
|
|
||||||
if (dictionary.TryGetValue(nameof(workflowModel.NextPageData), out var nextPageDataObj) &&
|
if (dictionary.TryGetValue(nameof(workflowModel.NextPageData), out var nextPageDataObj) &&
|
||||||
nextPageDataObj is not null)
|
nextPageDataObj is not null)
|
||||||
{
|
{
|
||||||
@@ -110,40 +105,15 @@ public static class ConversionExtensions
|
|||||||
? dictionary[nameof(workflowModel.NextPageUrl)]?.ToString()
|
? dictionary[nameof(workflowModel.NextPageUrl)]?.ToString()
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
|
workflowModel.PageNumber = dictionary.ContainsKey(nameof(workflowModel.PageNumber))
|
||||||
|
? int.TryParse(dictionary[nameof(workflowModel.PageNumber)]?.ToString(), out var pageNumber) ? pageNumber : (int?)null
|
||||||
|
: null;
|
||||||
|
|
||||||
workflowModel.NextPageEventName = dictionary.ContainsKey(nameof(workflowModel.NextPageEventName))
|
workflowModel.NextPageEventName = dictionary.ContainsKey(nameof(workflowModel.NextPageEventName))
|
||||||
? dictionary[nameof(workflowModel.NextPageEventName)]?.ToString()
|
? dictionary[nameof(workflowModel.NextPageEventName)]?.ToString()
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
if (dictionary.TryGetValue(nameof(workflowModel.WorkflowStash), out var workflowStashObj) &&
|
|
||||||
workflowStashObj is not null)
|
|
||||||
{
|
|
||||||
switch (workflowStashObj)
|
|
||||||
{
|
|
||||||
case JsonElement je:
|
|
||||||
workflowModel.WorkflowStash = je;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case JsonNode node:
|
|
||||||
// .NET 6+
|
|
||||||
workflowModel.WorkflowStash = JsonSerializer.SerializeToElement(node);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case string s:
|
|
||||||
// اگر به صورت string JSON ذخیره شده
|
|
||||||
workflowModel.WorkflowStash = JsonSerializer.Deserialize<JsonElement>(s);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
// هر نوع دیگری: serialize و تبدیل به JsonElement
|
|
||||||
workflowModel.WorkflowStash = JsonSerializer.SerializeToElement(workflowStashObj);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
workflowModel.WorkflowStash = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return workflowModel;
|
return workflowModel;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user