forked from elsa-workflows/elsa-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
OrderFoodTaskHandler.cs
33 lines (26 loc) · 1.01 KB
/
OrderFoodTaskHandler.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using System;
using System.Threading;
using System.Threading.Tasks;
using Elsa.Mediator.Contracts;
using Elsa.Workflows.Runtime.Contracts;
using Elsa.Workflows.Runtime.Notifications;
namespace Elsa.Samples.AspNet.RunTaskIntegration.Handlers;
public class OrderFoodTaskHandler : INotificationHandler<RunTaskRequest>
{
private readonly ITaskReporter _taskReporter;
public OrderFoodTaskHandler(ITaskReporter taskReporter)
{
_taskReporter = taskReporter;
}
public async Task HandleAsync(RunTaskRequest notification, CancellationToken cancellationToken)
{
if (notification.TaskName != "OrderFood")
return;
var args = (dynamic)notification.TaskPayload!;
var foodName = args.Food;
Console.WriteLine("Preparing {0}...", foodName);
await Task.Delay(1000, cancellationToken);
Console.WriteLine("Food is ready for delivery!");
await _taskReporter.ReportCompletionAsync(notification.TaskId, foodName, cancellationToken);
}
}