diff --git a/src/samples/console/Elsa.Samples.EntityChanged/ContextProvider.cs b/src/samples/console/Elsa.Samples.EntityChanged/ContextProvider.cs new file mode 100644 index 000000000..59f4d3f5a --- /dev/null +++ b/src/samples/console/Elsa.Samples.EntityChanged/ContextProvider.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Elsa.Services; +using Elsa.Services.Models; + +namespace Elsa.Samples.EntityChanged +{ + public class ContextProvider : ILoadWorkflowContext + { + private readonly SomeRepository _repository; + + public ContextProvider(SomeRepository repository) + { + _repository = repository; + } + + public IEnumerable SupportedTypes => new[] { typeof(Entity) }; + + public async ValueTask LoadAsync(LoadWorkflowContext context, CancellationToken cancellationToken = default) + { + return await _repository.GetAsync(context.ContextId); + } + } +} \ No newline at end of file diff --git a/src/samples/console/Elsa.Samples.EntityChanged/Elsa.Samples.EntityChanged.csproj b/src/samples/console/Elsa.Samples.EntityChanged/Elsa.Samples.EntityChanged.csproj index 868dd465e..f163c26a6 100644 --- a/src/samples/console/Elsa.Samples.EntityChanged/Elsa.Samples.EntityChanged.csproj +++ b/src/samples/console/Elsa.Samples.EntityChanged/Elsa.Samples.EntityChanged.csproj @@ -4,6 +4,7 @@ Exe net5.0 false + enable diff --git a/src/samples/console/Elsa.Samples.EntityChanged/SomeRepository.cs b/src/samples/console/Elsa.Samples.EntityChanged/SomeRepository.cs index a2682b6d0..a3ab383d4 100644 --- a/src/samples/console/Elsa.Samples.EntityChanged/SomeRepository.cs +++ b/src/samples/console/Elsa.Samples.EntityChanged/SomeRepository.cs @@ -1,4 +1,6 @@ -using System.Threading.Tasks; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; using Elsa.Activities.Entity; using Elsa.Activities.Entity.Extensions; using Elsa.Services; @@ -8,10 +10,22 @@ namespace Elsa.Samples.EntityChanged public class SomeRepository { private readonly IWorkflowRunner _workflowRunner; + private ICollection _collection = new List(); public SomeRepository(IWorkflowRunner workflowRunner) => _workflowRunner = workflowRunner; - public Task AddAsync(Entity entity) => TriggerWorkflowsAsync(entity, EntityChangedAction.Added); - public Task DeleteAsync(Entity entity) => TriggerWorkflowsAsync(entity, EntityChangedAction.Deleted); + public Task AddAsync(Entity entity) + { + _collection.Add(entity); + return TriggerWorkflowsAsync(entity, EntityChangedAction.Added); + } + + public Task DeleteAsync(Entity entity) + { + _collection.Remove(entity); + return TriggerWorkflowsAsync(entity, EntityChangedAction.Deleted); + } + + public Task GetAsync(string id) => Task.FromResult(_collection.FirstOrDefault(x => x.Id == id)); private async Task TriggerWorkflowsAsync(Entity entity, EntityChangedAction changedAction) => await _workflowRunner.TriggerEntityChangedWorkflowsAsync( @@ -19,7 +33,6 @@ namespace Elsa.Samples.EntityChanged entity.GetType().GetEntityName(), changedAction, entity.Id, - entity.Id, - entity); + entity.Id); } } \ No newline at end of file