public IEnumerable <NotificationSubscription> ListSubscriptionsForGroup()
        {
            Guid groupId = Guid.Empty; // TODO fix

            VssConnection          connection         = Context.Connection;
            NotificationHttpClient notificationClient = connection.GetClient <NotificationHttpClient>();

            // Return all subscriptions, includuing minimal details for subscriptions the caller doesn't have access to
            return(notificationClient.ListSubscriptionsAsync(targetId: groupId,
                                                             queryFlags: SubscriptionQueryFlags.AlwaysReturnBasicInformation).Result);
        }
        public IEnumerable <NotificationSubscription> ListCustomSubscriptions()
        {
            VssConnection          connection         = Context.Connection;
            NotificationHttpClient notificationClient = connection.GetClient <NotificationHttpClient>();

            List <NotificationSubscription> subscriptions = notificationClient.ListSubscriptionsAsync().Result;

            foreach (var subscription in subscriptions)
            {
                LogSubscription(subscription);
            }

            return(subscriptions);
        }
        public IEnumerable <NotificationSubscription> ListSubscriptionsForTeam()
        {
            WebApiTeamRef team = ClientSampleHelpers.FindAnyTeam(this.Context, null);

            VssConnection          connection         = Context.Connection;
            NotificationHttpClient notificationClient = connection.GetClient <NotificationHttpClient>();

            IEnumerable <NotificationSubscription> subscriptions = notificationClient.ListSubscriptionsAsync(targetId: team.Id).Result;

            foreach (var subscription in subscriptions)
            {
                LogSubscription(subscription);
            }

            return(subscriptions);
        }
        public IEnumerable <IGrouping <string, NotificationSubscription> > GetSubscriptionsGroupedByEventType()
        {
            VssConnection          connection         = Context.Connection;
            NotificationHttpClient notificationClient = connection.GetClient <NotificationHttpClient>();

            // Get existing subscriptions
            IEnumerable <NotificationSubscription> subscriptions = notificationClient.ListSubscriptionsAsync().Result;

            // Group subscriptions by event type
            var groupedSubscriptions = subscriptions.GroupBy <NotificationSubscription, String>(subscription =>
            {
                return(String.IsNullOrEmpty(subscription.Filter.EventType) ? subscription.Filter.EventType : "");
            });

            // Create map of avaialble event types
            Dictionary <string, NotificationEventType> eventTypes = notificationClient.ListEventTypesAsync().Result.ToDictionary(
                eventType => { return(eventType.Id); });

            // Show the subscriptions grouped by event type
            Context.Log("Custom subscriptions by event type");
            foreach (IGrouping <string, NotificationSubscription> group in groupedSubscriptions)
            {
                NotificationEventType eventType;
                if (eventTypes.TryGetValue(group.Key, out eventType))
                {
                    Context.Log("Event type {0}:", eventType.Name);
                    foreach (NotificationSubscription subscription in group)
                    {
                        Context.Log(" {0}, last modified: {1} by {2}",
                                    subscription.Description,
                                    subscription.ModifiedDate,
                                    subscription.LastModifiedBy?.DisplayName);
                    }
                }
            }

            return(groupedSubscriptions);
        }