// Get all WebHooks against an Action across all Users. Its used to send Notifications to all Parties against an Action public override async Task <ICollection <WebHook> > QueryWebHooksAcrossAllUsersAsync(IEnumerable <string> actions, Func <WebHook, string, bool> predicate) { if (actions == null) { throw new ArgumentNullException(nameof(actions)); } predicate = predicate ?? DefaultPredicate; try { var registrations = await _webHookRepository.GetAll <Registration>(); var matches = new List <WebHook>(); foreach (var registration in registrations) { var webHook = ConvertToWebHook(registration); if (MatchesAnyAction(webHook, actions) && predicate(webHook, registration.User)) { matches.Add(webHook); } } return(matches); } catch (Exception ex) { var message = string.Format(CultureInfo.CurrentCulture, Constants.Constants.OperationFailed, "Get", ex.Message); _logger.Error(message, ex); throw new InvalidOperationException(message, ex); } }