using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Caspian.WorkflowFramework.Models; namespace Caspian.WorkflowFramework.Utility { public static class ConversionExtensions { public static WorkflowModel ConvertToWorkflowModel(this Dictionary 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.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; //workflowModel.CurrentPageData = dictionary.ContainsKey(nameof(workflowModel.CurrentPageData)) // ? (object?)dictionary[nameof(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; 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; return workflowModel; } } }