elsa-core/src/activities/Elsa.Activities.Primitives/Handlers/IfElseHandler.cs
Sipke Schoorstra 5fbc8f04a5 Rename to Elsa
2018-12-31 10:59:35 +01:00

36 lines
1.5 KiB
C#

using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Elsa.Activities.Primitives.Activities;
using Elsa.Handlers;
using Elsa.Models;
using Elsa.Results;
using Microsoft.Extensions.Localization;
namespace Elsa.Activities.Primitives.Handlers
{
public class IfElseHandler : ActivityHandler<IfElse>
{
private readonly IWorkflowExpressionEvaluator expressionEvaluator;
public IfElseHandler(IStringLocalizer<IfElseHandler> localizer, IWorkflowExpressionEvaluator expressionEvaluator)
{
T = localizer;
this.expressionEvaluator = expressionEvaluator;
}
public override LocalizedString Category => T["Control Flow"];
public override LocalizedString DisplayText => T["If/Else Branch"];
public override LocalizedString Description => T["Evaluate a boolean condition and continues execution based on the outcome."];
public IStringLocalizer<IfElseHandler> T { get; }
public override IEnumerable<LocalizedString> GetEndpoints() => Endpoints(T["True"], T["False"]);
protected override async Task<ActivityExecutionResult> OnExecuteAsync(IfElse activity, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken)
{
var result = await expressionEvaluator.EvaluateAsync(activity.ConditionExpression, workflowContext, cancellationToken);
return TriggerEndpoint(result ? "True" : "False");
}
}
}