Esempio n. 1
0
        public IEnumerable <getSubscribersReply> GetMailrelaySubscribers(getSubscribers getSubscribersFunction, int subscribersPerPage)
        {
            getSubscribersFunction.sortField = "id";
            getSubscribersFunction.sortOrder = "ASC";

            bool allDone     = false;
            int  currentPage = 0;

            Queue <getSubscribersReply> replyBuffer = new Queue <getSubscribersReply>();

            while (allDone == false)
            {
                getSubscribersFunction.offset = subscribersPerPage * currentPage;
                getSubscribersFunction.count  = subscribersPerPage;

                MailrelayArrayReply <getSubscribersReply> reply = (MailrelayArrayReply <getSubscribersReply>)_mailrelayConnection.Send(getSubscribersFunction);

                if (reply.data.Count < subscribersPerPage)
                {
                    allDone = true;
                }

                reply.data.ForEach(replyBuffer.Enqueue);

                while (replyBuffer.Any())
                {
                    yield return(replyBuffer.Dequeue());
                }

                currentPage++;
            }
        }
Esempio n. 2
0
        private UpdateReport <int> AddOrRemoveMembersFromMailrelayGroup(DynamicsCrmConnection dynamicsCrmConnection, MarketingList marketingList, int groupId)
        {
            List <KeyValueEntity <Guid, int?> > crmIdsAndSubscriberIds = marketingList.CrmIdsAndSubscriberIds;

            List <getSubscribersReply> subscribersToRemoveFromMailrelay = new List <getSubscribersReply>();

            Subscriber subscriber = new Subscriber(_mailrelayConnection);

            getSubscribers getSubscribersFunction = new getSubscribers()
            {
                groups = new List <int>()
                {
                    groupId
                },
            };

            IEnumerable <getSubscribersReply> subscribersInMailrelay = subscriber.GetMailrelaySubscribers(getSubscribersFunction, 100);

            foreach (getSubscribersReply currentInMailrelay in subscribersInMailrelay)
            {
                int removed = crmIdsAndSubscriberIds.RemoveAll(idInCrm => currentInMailrelay.id == idInCrm.value.ToString());

                if (removed == 0)
                {
                    subscribersToRemoveFromMailrelay.Add(currentInMailrelay);
                }
            }

            UpdateReport <int> report = new UpdateReport <int>();

            RemoveFromMailrelayGroup(report, subscribersToRemoveFromMailrelay, subscriber, groupId);
            AddToMailrelayGroup(dynamicsCrmConnection, report, subscriber, crmIdsAndSubscriberIds, groupId);

            return(report);
        }
Esempio n. 3
0
        public void SubscribersEnumerationReturnSubscribers()
        {
            Dictionary <string, string> customFields = new Dictionary <string, string>();
            List <string> groups12 = new List <string>()
            {
                "1", "2"
            };

            EnqueueSubscribersReply(customFields, groups12, 2);
            EnqueueSubscribersReply(customFields, groups12, 2);
            EnqueueSubscribersReply(customFields, groups12, 2);
            EnqueueSubscribersReply(customFields, groups12, 1);

            Subscriber subscriber = new Subscriber(_mailrelayConnectionTester);

            getSubscribers getSubscribersFunction = new getSubscribers();

            IEnumerable <getSubscribersReply> replies = subscriber.GetMailrelaySubscribers(getSubscribersFunction, 2);

            Assert.AreEqual(0, _mailrelayConnectionTester.sendFunctions.Count);

            replies.ToList();

            Assert.AreEqual(4, _mailrelayConnectionTester.sendFunctions.Count);

            Console.Out.WriteLine(_mailrelayConnectionTester);
        }
        public void getSubscribers()
        {
            getSubscribers function = new getSubscribers()
            {
            };
            AbstractMailrelayReply reply = TestCall(function);

            Assert.AreEqual(1, reply.status);
        }
Esempio n. 5
0
        public void functionWithEmptyArrayCanBeUrlEncoded()
        {
            string expectedUrlEncoded = $"&function=getSubscribers";

            getSubscribers function = new getSubscribers()
            {
            };

            AssertToGet(function, expectedUrlEncoded);
        }
Esempio n. 6
0
        public getSubscribersReply GetMailrelaySubscribers(string email)
        {
            getSubscribers getSubscribers = new getSubscribers()
            {
                email = email,
            };

            MailrelayArrayReply <getSubscribersReply> reply = (MailrelayArrayReply <getSubscribersReply>)_mailrelayConnection.Send(getSubscribers);

            return(reply.data.FirstOrDefault(subscriber => subscriber.email == email));
        }
Esempio n. 7
0
        private getSubscribersReply GetMailrelaySubscribers(int id)
        {
            getSubscribers getSubscribers = new getSubscribers()
            {
                id = id,
            };

            MailrelayArrayReply <getSubscribersReply> reply = (MailrelayArrayReply <getSubscribersReply>)_mailrelayConnection.Send(getSubscribers);

            return(reply.data.FirstOrDefault());
        }
        private getSubscribersReply GetExistingSubscribers(string email)
        {
            getSubscribers getSubscribers = new getSubscribers()
            {
                email   = email,
                deleted = false,
            };

            MailrelayArrayReply <getSubscribersReply> reply = (MailrelayArrayReply <getSubscribersReply>)_mailrelayConnection.Send(getSubscribers);

            return(reply.data.Where(data => data.email == email).SingleOrDefault());
        }
Esempio n. 9
0
        public void functionWithSingleElementArrayCanBeUrlEncoded()
        {
            string expectedUrlEncoded = $"&function=getSubscribers&groups%5b0%5d=1";

            getSubscribers function = new getSubscribers()
            {
                groups = new List <int>()
                {
                    1
                },
            };

            AssertToGet(function, expectedUrlEncoded);
        }