using Mogafa.Common; using System.Linq; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; namespace Mogafa.App.LogEvents.Intercepts { public class AbGroupEventIntercept : MogafaBase, ILogEventIntercept { private readonly List abGroupEvents; public string Name => "AbGroupEventIntercept"; public int Order => 50; public AbGroupEventIntercept(List abGroupEvents) { this.abGroupEvents = abGroupEvents ?? new List(); } public Task>> Execute(string eventName, Dictionary parameters) { var events = new Dictionary> { { eventName, parameters } }; if (abGroupEvents.Count == 0) { return Task.FromResult(events); } var groups = abGroupEvents.Where(ab => ab.EventNames.FirstOrDefault(ev => (ev.EndsWith("_") && (eventName.StartsWith(ev) || eventName == ev.Substring(0, ev.Length - 1)) || (!ev.EndsWith("_") && eventName == ev))) != null); foreach(var group in groups) { events.Add($"{eventName}_{group.Name}_{group.Value}", parameters); } return Task.FromResult(events); } } }