public void SetSubscriptionMethod(SubscriptionMethod m) { if (m == null) { throw new ArgumentNullException("m"); } ISqlInstruction i = null; if (m.Methods == null || m.Methods.Length == 0) { i = Delete("core_subscriptionmethod", m.Tenant) .Where("source", m.SourceId) .Where("action", m.ActionId) .Where("recipient", m.RecipientId); } else { i = Insert("core_subscriptionmethod", m.Tenant) .InColumnValue("source", m.SourceId) .InColumnValue("action", m.ActionId) .InColumnValue("recipient", m.RecipientId) .InColumnValue("sender", string.Join("|", m.Methods)); } ExecNonQuery(i); }
public void SetSubscriptionMethod(SubscriptionMethod m) { if (m == null) { throw new ArgumentNullException("m"); } using var tr = UserDbContext.Database.BeginTransaction(); if (m.Methods == null || m.Methods.Length == 0) { var q = UserDbContext.SubscriptionMethods .Where(r => r.Tenant == m.Tenant) .Where(r => r.Source == m.SourceId) .Where(r => r.Recipient == m.RecipientId) .Where(r => r.Action == m.ActionId); UserDbContext.SubscriptionMethods.Remove(q.FirstOrDefault()); } else { var sm = new DbSubscriptionMethod { Action = m.ActionId, Recipient = m.RecipientId, Source = m.SourceId, Tenant = m.Tenant, Sender = string.Join("|", m.Methods) }; UserDbContext.AddOrUpdate(r => r.SubscriptionMethods, sm); } UserDbContext.SaveChanges(); tr.Commit(); }
private void CompareSubscriptionMethods(SubscriptionMethod sm1, SubscriptionMethod sm2) { Assert.AreEqual(sm1.Tenant, sm2.Tenant); Assert.AreEqual(sm1.ActionId, sm2.ActionId); Assert.AreEqual(sm1.SourceId, sm2.SourceId); Assert.AreEqual(sm1.RecipientId, sm2.RecipientId); CollectionAssert.AreEqual(sm1.Methods, sm2.Methods); }
public void SetSubscriptionMethod(SubscriptionMethod m) { methods.RemoveAll(r => r.Tenant == m.Tenant && r.SourceId == m.SourceId && r.ActionId == m.ActionId && r.RecipientId == m.RecipientId); if (m.Methods != null && 0 < m.Methods.Length) { methods.Add(m); } BuildMethodsIndex(methods); }
public IEnumerable <SubscriptionMethod> GetSubscriptionMethods(int tenant, string sourceId, string actionId, string recipientId) { if (sourceId == null) { throw new ArgumentNullException("sourceId"); } if (actionId == null) { throw new ArgumentNullException("actionId"); } var q = new SqlQuery("core_subscriptionmethod") .Select("tenant", "recipient", "sender", "action") .Where(Exp.Eq("tenant", -1) | Exp.Eq("tenant", tenant)) .Where("source", sourceId) .GroupBy("recipient", "action") .OrderBy("tenant", true); if (recipientId != null) { q.Where("recipient", recipientId); } var methods = ExecList(q); var result = new List <SubscriptionMethod>(); var common = new Dictionary <string, SubscriptionMethod>(); foreach (var r in methods) { var m = new SubscriptionMethod { Tenant = Convert.ToInt32(r[0]), SourceId = sourceId, ActionId = Convert.ToString(r[3]), RecipientId = (string)r[1], Methods = Convert.ToString(r[2]).Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries), }; var key = m.SourceId + m.ActionId + m.RecipientId; if (m.Tenant == Tenant.DEFAULT_TENANT) { m.Tenant = tenant; common.Add(key, m); result.Add(m); } else { SubscriptionMethod rec; if (!common.TryGetValue(key, out rec)) { result.Add(m); } } } return(result); }
public void SetSubscriptionMethod(SubscriptionMethod m) { service.SetSubscriptionMethod(m); var store = GetSubsciptionsStore(m.Tenant, m.SourceId, m.ActionId); lock (store) { store.SetSubscriptionMethod(m); } }
public void ClearData() { service.RemoveSubscriptions(2024, "sourceId2", "actionId2"); service.RemoveSubscriptions(2024, "sourceId3", "actionId3", "objectId5"); service.RemoveSubscriptions(2024, "sourceId1", "actionId1", "objectId1"); var sm1 = new SubscriptionMethod { Tenant = 2024, ActionId = "actionId11", SourceId = "sourceId11", RecipientId = "recipientId11", }; service.SetSubscriptionMethod(sm1); var sm2 = new SubscriptionMethod { Tenant = 2024, ActionId = "actionId22", SourceId = "sourceId22", RecipientId = "recipientId22", }; service.SetSubscriptionMethod(sm2); }
public void CachedSubscriptionMethod() { var sb1 = new SubscriptionRecord { Tenant = 2024, ActionId = "actionId1", SourceId = "sourceId1", ObjectId = "objectId1", RecipientId = "recipientId1", Subscribed = false }; service.SaveSubscription(sb1); var sb2 = new SubscriptionRecord { Tenant = 2024, ActionId = "actionId2", SourceId = "sourceId2", ObjectId = "objectId2", RecipientId = "recipientId2", Subscribed = false }; service.SaveSubscription(sb2); var sb3 = new SubscriptionRecord { Tenant = 2024, ActionId = "actionId2", SourceId = "sourceId2", ObjectId = "objectId3", RecipientId = "recipientId3", Subscribed = false }; service.SaveSubscription(sb3); var sb4 = new SubscriptionRecord { Tenant = 2024, ActionId = "actionId2", SourceId = "sourceId2", ObjectId = "", RecipientId = "recipientId4", Subscribed = false }; service.SaveSubscription(sb4); var subscriptions = service.GetSubscriptions(2024, "sourceId1", "actionId1", "recipientId1", "objectId1"); Assert.AreEqual(subscriptions.Count(), 1); subscriptions = service.GetSubscriptions(2024, "sourceId1", "actionId1", null, "objectId1"); Assert.AreEqual(subscriptions.Count(), 1); subscriptions = service.GetSubscriptions(2024, "sourceId1", "actionId1", null, null); Assert.AreEqual(subscriptions.Count(), 0); subscriptions = service.GetSubscriptions(2024, "sourceId2", "actionId2"); Assert.AreEqual(subscriptions.Count(), 3); var subscription = service.GetSubscription(2024, "sourceId2", "actionId2", "recipientId3", "objectId3"); CompareSubscriptions(sb3, subscription); var sb5 = new SubscriptionRecord { Tenant = 2024, ActionId = "actionId3", SourceId = "sourceId3", ObjectId = "objectId5", RecipientId = "recipientId5", Subscribed = false }; subscription = service.GetSubscription(2024, "sourceId3", "actionId3", "recipientId5", "objectId5"); Assert.IsNull(subscription); service.SaveSubscription(sb5); subscription = service.GetSubscription(2024, "sourceId3", "actionId3", "recipientId5", "objectId5"); CompareSubscriptions(sb5, subscription); service.RemoveSubscriptions(2024, "sourceId2", "actionId2"); subscriptions = service.GetSubscriptions(2024, "sourceId2", "actionId2"); Assert.AreEqual(0, subscriptions.Count()); service.RemoveSubscriptions(2024, "sourceId3", "actionId3", "objectId5"); service.RemoveSubscriptions(2024, "sourceId1", "actionId1", "objectId1"); subscription = service.GetSubscription(2024, "sourceId3", "actionId3", "recipientId5", "objectId5"); Assert.IsNull(subscription); subscription = service.GetSubscription(2024, "sourceId1", "actionId1", "recipientId1", "objectId1"); Assert.IsNull(subscription); var sm1 = new SubscriptionMethod { Tenant = 2024, ActionId = "actionId11", SourceId = "sourceId11", RecipientId = "recipientId11", Methods = new string[] { "1", "2" } }; service.SetSubscriptionMethod(sm1); var sm2 = new SubscriptionMethod { Tenant = 2024, ActionId = "actionId22", SourceId = "sourceId22", RecipientId = "recipientId22", Methods = new string[] { "3", "4" } }; service.SetSubscriptionMethod(sm2); var methods = service.GetSubscriptionMethods(2024, "sourceId11", "actionId11", "recipientId11"); Assert.AreEqual(methods.Count(), 1); CompareSubscriptionMethods(methods.ElementAt(0), sm1); methods = service.GetSubscriptionMethods(2024, "sourceId22", "actionId22", "recipientId22"); Assert.AreEqual(methods.Count(), 1); CompareSubscriptionMethods(methods.ElementAt(0), sm2); sm2.Methods = null; service.SetSubscriptionMethod(sm2); methods = service.GetSubscriptionMethods(2024, "sourceId22", "actionId22", "recipientId11"); Assert.AreEqual(0, methods.Count()); sm1.Methods = null; service.SetSubscriptionMethod(sm1); methods = service.GetSubscriptionMethods(2024, "sourceId22", "actionId22", "recipientId22"); Assert.AreEqual(0, methods.Count()); }
public void SetSubscriptionMethod(SubscriptionMethod m) { service.SetSubscriptionMethod(m); notifyMethod.Publish(m, CacheNotifyAction.Any); }
public void SetSubscriptionMethod(SubscriptionMethod m) { if (m == null) throw new ArgumentNullException("m"); ISqlInstruction i = null; if (m.Methods == null || m.Methods.Length == 0) { i = Delete("core_subscriptionmethod", m.Tenant) .Where("source", m.SourceId) .Where("action", m.ActionId) .Where("recipient", m.RecipientId); } else { i = Insert("core_subscriptionmethod", m.Tenant) .InColumnValue("source", m.SourceId) .InColumnValue("action", m.ActionId) .InColumnValue("recipient", m.RecipientId) .InColumnValue("sender", string.Join("|", m.Methods)); } ExecNonQuery(i); }