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);
|
||||||
}
|
}
|
||||||
@@ -466,7 +472,7 @@ public class WorkflowService : IWorkflowService, ILoggable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region GetActiveInstanceIdsAsync
|
#region GetActiveInstanceIdsAsync
|
||||||
public async Task<WorkflowResponse<List<string>>> GetActiveInstanceIdsAsync(GetActiveInstancesModel input)
|
public async Task<WorkflowResponse<List<string>>> GetActiveInstanceIdsAsync(GetActiveInstancesModel input)
|
||||||
{
|
{
|
||||||
@@ -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>
|
||||||
{
|
{
|
||||||
@@ -587,7 +594,7 @@ public class WorkflowService : IWorkflowService, ILoggable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region GetLatestActiveInstanceIdAsync
|
#region GetLatestActiveInstanceIdAsync
|
||||||
public async Task<WorkflowResponse<dynamic>> GetLatestActiveInstanceIdAsync(GetLatestActiveInstanceModel input)
|
public async Task<WorkflowResponse<dynamic>> GetLatestActiveInstanceIdAsync(GetLatestActiveInstanceModel input)
|
||||||
{
|
{
|
||||||
@@ -714,7 +721,7 @@ public class WorkflowService : IWorkflowService, ILoggable
|
|||||||
_logger.Log("Exception in CancelInstanceAsync", WFInstanceId: input.WorkflowInstanceId, response, sw.ElapsedMilliseconds, ex);
|
_logger.Log("Exception in CancelInstanceAsync", WFInstanceId: input.WorkflowInstanceId, response, sw.ElapsedMilliseconds, ex);
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
//#region EvictDefFromCacheAsync
|
//#region EvictDefFromCacheAsync
|
||||||
|
|||||||
@@ -1,149 +1,119 @@
|
|||||||
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 WorkflowModel ConvertToWorkflowModel(this Dictionary<string, object?> dictionary)
|
public static class ConversionExtensions
|
||||||
{
|
{
|
||||||
var workflowModel = new WorkflowModel();
|
public static WorkflowModel ConvertToWorkflowModel(this Dictionary<string, object?> dictionary)
|
||||||
|
{
|
||||||
|
var workflowModel = new WorkflowModel();
|
||||||
|
|
||||||
|
if (dictionary == null || dictionary.Count == 0)
|
||||||
|
return workflowModel;
|
||||||
|
|
||||||
|
//Map dictionary values to WorkflowModel properties
|
||||||
|
workflowModel.InstanceId = dictionary.ContainsKey(nameof(workflowModel.InstanceId))
|
||||||
|
? dictionary[nameof(workflowModel.InstanceId)]?.ToString()
|
||||||
|
: null;
|
||||||
|
|
||||||
|
workflowModel.InstanceMode = dictionary.ContainsKey(nameof(workflowModel.InstanceMode))
|
||||||
|
? dictionary[nameof(workflowModel.InstanceMode)]?.ToString()
|
||||||
|
: null;
|
||||||
|
|
||||||
|
workflowModel.Name = dictionary.ContainsKey(nameof(workflowModel.Name))
|
||||||
|
? dictionary[nameof(workflowModel.Name)]?.ToString()
|
||||||
|
: null;
|
||||||
|
|
||||||
|
workflowModel.IsComplete = dictionary.ContainsKey(nameof(workflowModel.IsComplete))
|
||||||
|
? bool.TryParse(dictionary[nameof(workflowModel.IsComplete)]?.ToString(), out var isComplete) && isComplete
|
||||||
|
: false;
|
||||||
|
|
||||||
|
workflowModel.UserId = dictionary.ContainsKey(nameof(workflowModel.UserId))
|
||||||
|
? long.TryParse(dictionary[nameof(workflowModel.UserId)]?.ToString(), out var userId) ? userId : (long?)null
|
||||||
|
: null;
|
||||||
|
|
||||||
|
//CurrentPageData
|
||||||
|
if (dictionary.TryGetValue(nameof(workflowModel.CurrentPageData), out var currentPageDataObj) &&
|
||||||
|
currentPageDataObj is not null)
|
||||||
|
{
|
||||||
|
switch (currentPageDataObj)
|
||||||
|
{
|
||||||
|
case JsonElement je:
|
||||||
|
workflowModel.CurrentPageData = je;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case JsonNode node:
|
||||||
|
// .NET 6+
|
||||||
|
workflowModel.CurrentPageData = JsonSerializer.SerializeToElement(node);
|
||||||
|
break;
|
||||||
|
|
||||||
|
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()
|
||||||
|
: 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))
|
||||||
|
? dictionary[nameof(workflowModel.NextPageEventName)]?.ToString()
|
||||||
|
: null;
|
||||||
|
|
||||||
if (dictionary == null || dictionary.Count == 0)
|
|
||||||
return workflowModel;
|
return workflowModel;
|
||||||
|
|
||||||
//Map dictionary values to WorkflowModel properties
|
|
||||||
workflowModel.InstanceId = dictionary.ContainsKey(nameof(workflowModel.InstanceId))
|
|
||||||
? dictionary[nameof(workflowModel.InstanceId)]?.ToString()
|
|
||||||
: null;
|
|
||||||
|
|
||||||
workflowModel.Name = dictionary.ContainsKey(nameof(workflowModel.Name))
|
|
||||||
? dictionary[nameof(workflowModel.Name)]?.ToString()
|
|
||||||
: null;
|
|
||||||
|
|
||||||
workflowModel.IsComplete = dictionary.ContainsKey(nameof(workflowModel.IsComplete))
|
|
||||||
? bool.TryParse(dictionary[nameof(workflowModel.IsComplete)]?.ToString(), out var isComplete) && isComplete
|
|
||||||
: false;
|
|
||||||
|
|
||||||
workflowModel.UserId = dictionary.ContainsKey(nameof(workflowModel.UserId))
|
|
||||||
? long.TryParse(dictionary[nameof(workflowModel.UserId)]?.ToString(), out var userId) ? userId : (long?)null
|
|
||||||
: null;
|
|
||||||
|
|
||||||
if (dictionary.TryGetValue(nameof(workflowModel.CurrentPageData), out var currentPageDataObj) &&
|
|
||||||
currentPageDataObj is not null)
|
|
||||||
{
|
|
||||||
switch (currentPageDataObj)
|
|
||||||
{
|
|
||||||
case JsonElement je:
|
|
||||||
workflowModel.CurrentPageData = je;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case JsonNode node:
|
|
||||||
// .NET 6+
|
|
||||||
workflowModel.CurrentPageData = JsonSerializer.SerializeToElement(node);
|
|
||||||
break;
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
//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)]
|
|
||||||
// : null;
|
|
||||||
|
|
||||||
//workflowModel.NextPageData = dictionary.ContainsKey(nameof(workflowModel.NextPageData))
|
|
||||||
// ? dictionary[nameof(workflowModel.NextPageData)]?.ToString()
|
|
||||||
// : null;
|
|
||||||
|
|
||||||
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()
|
|
||||||
: null;
|
|
||||||
|
|
||||||
workflowModel.NextPageEventName = dictionary.ContainsKey(nameof(workflowModel.NextPageEventName))
|
|
||||||
? dictionary[nameof(workflowModel.NextPageEventName)]?.ToString()
|
|
||||||
: 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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user