protected override void ProcessNewTransactions(IEnumerable <Transaction> transactions) { var count = transactions.Count(); if (count == 0) { Logger.LogWarning("Requested to process 0 transactions"); return; } Logger.LogInformation("Processing {0} transactions.", count); var recipients = transactions.GroupBy(t => t.RecipientId); var devicesToNotify = new List <(Device device, IEnumerable <Transaction> transactions)>(); foreach (var recipient in recipients) { var address = recipient.Key; if (string.IsNullOrEmpty(address)) { continue; } var registeredDevices = Context.Devices.Where(d => d.Address.Equals(address)); foreach (var device in registeredDevices) { devicesToNotify.Add((device, recipient.AsEnumerable())); } } Logger.LogInformation("Notifying {0} devices.", devicesToNotify.Count); foreach (var d in devicesToNotify) { _pusher.NotifyDevice(d.device, d.transactions); } }