using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Nethereum.BlockchainProcessing.Processor; namespace Nethereum.BlockchainProcessing.BlockProcessing { public static class BlockProcessingStepsExtensions { public static async Task HasAnyStepMatchAsync(this IEnumerable list, T value) { foreach (var item in list) { if (await item.GetStep().IsMatchAsync(value).ConfigureAwait(false)) return true; } return false; } public static async Task IsStepMatchAsync(this IEnumerable> list, T value) { foreach (var item in list) { if (await item.IsMatchAsync(value).ConfigureAwait(false)) return true; } return false; } public static IEnumerable> GetAllSteps( this IEnumerable list) { return list.Select(x => x.GetStep()); } public static async Task> FilterMatchingStepAsync( this IEnumerable list, T value) { var listResult = new List(); foreach (var item in list) { if (await item.GetStep().IsMatchAsync(value)) listResult.Add(item); } return listResult; } public static async Task ExecuteCurrentStepAsync( this IEnumerable list, T value) { var steps = list.GetAllSteps(); foreach (var step in steps) { await step.ExecuteAsync(value); } } } }