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);
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
 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);
 }
Ejemplo n.º 4
0
 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);
 }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 8
0
        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 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 void SetSubscriptionMethod(SubscriptionMethod m)
 {
     service.SetSubscriptionMethod(m);
     var store = GetSubsciptionsStore(m.Tenant, m.SourceId, m.ActionId);
     lock (store)
     {
         store.SetSubscriptionMethod(m);
     }
 }
Ejemplo n.º 11
0
        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());
        }
Ejemplo n.º 12
0
 public void SetSubscriptionMethod(SubscriptionMethod m)
 {
     service.SetSubscriptionMethod(m);
     notifyMethod.Publish(m, CacheNotifyAction.Any);
 }
Ejemplo n.º 13
0
        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 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());
        }
 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);
 }