/// <summary> /// Deletes the given subscription from the database /// </summary> /// <param name="subscriptionId"></param> /// <param name="subscriptionType"></param> /// <returns></returns> private bool DeleteSubscription(Guid subscriptionId, CprBroker.EventBroker.Data.SubscriptionType.SubscriptionTypes subscriptionType) { // Find the Subscription object and delete it and its children using (EventBrokerDataContext dataContext = new EventBrokerDataContext()) { System.Data.Linq.DataLoadOptions loadOptions = new System.Data.Linq.DataLoadOptions(); Subscription.SetLoadOptionsForChildren(loadOptions); dataContext.LoadOptions = loadOptions; var subscription = (from sub in dataContext.Subscriptions where sub.SubscriptionId == subscriptionId && !sub.Deactivated.HasValue && sub.SubscriptionTypeId == (int)subscriptionType select sub ).SingleOrDefault(); if (subscription != null) { subscription.Deactivated = DateTime.Now; dataContext.SubmitChanges(); return(true); } else { return(false); } } }
/// <summary> /// Adds a new Subscription object to the <paramref name="dataContext"/> /// This method inserts rows in Subscription, Channel (and children) and SubscriptionPerson /// A later call to SubmitChanges() is required to save to the database /// </summary> /// <param name="dataContext"></param> /// <param name="subscriptionType"></param> /// <param name="applicationId"></param> /// <param name="PersonCivilRegistrationIdentifiers"></param> /// <param name="notificationChannel"></param> /// <returns></returns> private Subscription AddSubscription(EventBrokerDataContext dataContext, CprBroker.EventBroker.Data.SubscriptionType.SubscriptionTypes subscriptionType, Guid applicationId, ChannelBaseType notificationChannel, Guid[] personUuids, SoegObjektType soegObject) { List <Guid> listOfPersonsIDs = new List <Guid>(); Subscription subscription = new Subscription(); subscription.SubscriptionId = Guid.NewGuid(); subscription.SubscriptionTypeId = (int)subscriptionType; subscription.ApplicationId = applicationId; subscription.Created = DateTime.Now; if (soegObject != null) { var xml = Strings.SerializeObject(soegObject); subscription.Criteria = System.Xml.Linq.XElement.Load(new StringReader(xml)); subscription.LastCheckedUUID = Guid.Empty; } #region Set IsForAllPersons if (personUuids != null && personUuids.Length > 0) { subscription.IsForAllPersons = false; } else { subscription.IsForAllPersons = true; } #endregion #region Set the channel var dbChannel = Channel.FromXmlType(notificationChannel); subscription.Channels.Add(dbChannel); #endregion // Mark the new objects to be inserted later dataContext.Subscriptions.InsertOnSubmit(subscription); if (!subscription.IsForAllPersons && personUuids != null) { dataContext.SubscriptionPersons.InsertAllOnSubmit( from PersonUuid in personUuids select new SubscriptionPerson() { SubscriptionPersonId = Guid.NewGuid(), SubscriptionId = subscription.SubscriptionId, PersonUuid = PersonUuid, Created = subscription.Created } ); } dataContext.Channels.InsertOnSubmit(dbChannel); return(subscription); }