diff --git a/src/Squidex/Areas/Api/Controllers/Apps/Models/UpdateWorkflowDto.cs b/src/Squidex/Areas/Api/Controllers/Apps/Models/UpdateWorkflowDto.cs index 08e1b4fa1..e22d45589 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/Models/UpdateWorkflowDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/Models/UpdateWorkflowDto.cs @@ -43,12 +43,7 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models Initial, Steps?.ToDictionary( x => x.Key, - x => new WorkflowStep( - x.Value?.Transitions.ToDictionary( - y => y.Key, - y => new WorkflowTransition(y.Value.Expression, y.Value.Role)), - x.Value.Color, - x.Value.NoUpdate)), + x => x.Value?.ToStep()), SchemaIds, Name); diff --git a/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowDto.cs b/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowDto.cs index 5e249085b..1601340cc 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowDto.cs @@ -46,16 +46,13 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models public static WorkflowDto FromWorkflow(Guid id, Workflow workflow, ApiController controller, string app) { - var result = SimpleMapper.Map(workflow, new WorkflowDto { Id = id }); - - result.Steps = workflow.Steps.ToDictionary( - x => x.Key, - x => SimpleMapper.Map(x.Value, new WorkflowStepDto - { - Transitions = x.Value.Transitions.ToDictionary( - y => y.Key, - y => new WorkflowTransitionDto { Expression = y.Value.Expression, Role = y.Value.Role }) - })); + var result = SimpleMapper.Map(workflow, new WorkflowDto + { + Steps = workflow.Steps.ToDictionary( + x => x.Key, + x => WorkflowStepDto.FromWorkflowStep(x.Value)), + Id = id + }); return result.CreateLinks(controller, app, id); } diff --git a/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowStepDto.cs b/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowStepDto.cs index 9012d406d..3007c454b 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowStepDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowStepDto.cs @@ -7,7 +7,9 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; +using System.Linq; using Squidex.Domain.Apps.Core.Contents; +using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Apps.Models { @@ -28,5 +30,29 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models /// Indicates if updates should not be allowed. /// public bool NoUpdate { get; set; } + + public static WorkflowStepDto FromWorkflowStep(WorkflowStep step) + { + if (step == null) + { + return null; + } + + return SimpleMapper.Map(step, new WorkflowStepDto + { + Transitions = step.Transitions.ToDictionary( + y => y.Key, + y => WorkflowTransitionDto.FromWorkflowTransition(y.Value)) + }); + } + + public WorkflowStep ToStep() + { + return new WorkflowStep( + Transitions?.ToDictionary( + y => y.Key, + y => y.Value?.ToTransition()), + Color, NoUpdate); + } } } diff --git a/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowTransitionDto.cs b/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowTransitionDto.cs index 94235a60d..fa96296e4 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowTransitionDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowTransitionDto.cs @@ -5,6 +5,8 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== +using Squidex.Domain.Apps.Core.Contents; + namespace Squidex.Areas.Api.Controllers.Apps.Models { public sealed class WorkflowTransitionDto @@ -18,5 +20,20 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models /// The optional restricted role. /// public string Role { get; set; } + + public static WorkflowTransitionDto FromWorkflowTransition(WorkflowTransition transition) + { + if (transition == null) + { + return null; + } + + return new WorkflowTransitionDto { Expression = transition.Expression, Role = transition.Role }; + } + + public WorkflowTransition ToTransition() + { + return new WorkflowTransition(Expression, Role); + } } }