// 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);
            }
        }