Esempio n. 1
0
        public virtual void Subscribe(string subscriptionId, string queryName, IEnumerable <QueryParam> parameters, Uri destination, SubscriptionControls controls, SubscriptionSchedule schedule)
        {
            var currentUser = _userProvider.GetCurrentUser();

            EnsureSubscriptionDoesNotExistForUser(subscriptionId, currentUser);
            EnsureQueryExistsAndAllowSubscription(queryName);
            EnsureDestinationIsValid(destination);

            var subscriptionParams = parameters.Select(SubscriptionParameter.Parse);

            var subscription = new Subscription
            {
                Name           = subscriptionId,
                DestinationUrl = destination?.ToString(),
                User           = currentUser,
                LastRunOn      = SystemContext.Clock.Now,
                QueryName      = queryName,
                Controls       = controls,
                Schedule       = schedule
            };

            foreach (var parameter in subscriptionParams)
            {
                subscription.AddParameter(parameter);
            }

            _subscriptionRepository.Save(subscription);
        }