Exemple #1
0
        public void functionWithEmptyDictionaryCanBeUrlEncoded()
        {
            string expectedUrlEncoded = $"&function=addSubscriber";

            addSubscriber function = new addSubscriber()
            {
            };

            AssertToGet(function, expectedUrlEncoded);
        }
Exemple #2
0
        public int AddNewSubscriber(string name, string email, List <int> groups, Dictionary <string, string> customFields)
        {
            addSubscriber addSubscriberFunction = new addSubscriber()
            {
                name         = name,
                email        = email,
                groups       = groups,
                customFields = customFields,
            };

            MailrelayIntReply reply = (MailrelayIntReply)_mailrelayConnection.Send(addSubscriberFunction);

            return(reply.data);
        }
Exemple #3
0
        public void functionWithSingleElementDictionaryCanBeUrlEncoded()
        {
            string expectedUrlEncoded = $"&function=addSubscriber&customFields%5bf_1%5d=test+1";

            addSubscriber function = new addSubscriber()
            {
                customFields = new Dictionary <string, string>()
                {
                    { "f_1", "test 1" },
                },
            };

            AssertToGet(function, expectedUrlEncoded);
        }
        private addSubscriber GetSubscriberFromFetchXml(MailrelayInformation information, string email)
        {
            Dictionary <string, string> customFields = information.GetCustomFields();

            List <int> groups = new List <int>()
            {
                information.campaign_new_mailrelaygroupid.Value
            };

            addSubscriber add = new addSubscriber()
            {
                customFields = customFields,
                email        = email,
                name         = information.fullname,
                groups       = groups,
            };

            return(add);
        }
        public void addSubscriber()
        {
            addSubscriber function = new addSubscriber()
            {
                email  = "*****@*****.**",
                groups = new List <int>()
                {
                    1
                },
                name         = "test_name",
                customFields = new Dictionary <string, string>()
                {
                    { "f_1", "f1" },
                    { "f_3", "f3" },
                    { "f_4", "f4" },
                    { "f_5", "f5" },
                },
            };

            AbstractMailrelayReply reply = TestCall(function);

            Assert.AreEqual(1, reply.status);
        }
        public override void ExecuteOption(OptionReport report)
        {
            string urlLoginName = _databaseAddMailrelaySubscriberFromLead.urlLoginName;
            string email        = _databaseAddMailrelaySubscriberFromLead.email;
            Guid   leadId       = _databaseAddMailrelaySubscriberFromLead.leadId;

            DatabaseUrlLogin      login = DatabaseUrlLogin.GetUrlLogin(Connection, urlLoginName);
            DynamicsCrmConnection dynamicsCrmConnection = DynamicsCrmConnection.GetConnection(login.Url, login.Username, login.Password);

            DatabaseWebCampaign webCampaign = DatabaseWebCampaign.ReadByIdBytesSingleOrDefault(Connection, _databaseAddMailrelaySubscriberFromLead.WebCampaignIdValue());

            if (webCampaign == null)
            {
                Log.Write(Connection, $"Could not find campaign for {_databaseAddMailrelaySubscriberFromLead.Name}", typeof(AddMailrelaySubscriberFromLead), DataLayer.MongoData.Config.LogLevelEnum.OptionError);
                report.Success = false;
                return;
            }

            MailrelayInformation information = GetInformationFromFetchXml(dynamicsCrmConnection, webCampaign, email);

            if (information == null)
            {
                Log.Write(Connection, $"Information for lead {leadId} on {email} could not be found", typeof(AddMailrelaySubscriberFromLead), DataLayer.MongoData.Config.LogLevelEnum.OptionMessage);
                report.Success = true;
                return;
            }

            if (information.campaign_new_mailrelaygroupid.HasValue == false)
            {
                Log.Write(Connection, $"Subscriber not added, campaign {webCampaign.FormId} has no group", typeof(AddMailrelaySubscriberFromLead), DataLayer.MongoData.Config.LogLevelEnum.OptionMessage);
                report.Success = true;
                return;
            }

            getSubscribersReply ExistingSubscriber = GetExistingSubscribers(email);

            int subscriberId;

            if (ExistingSubscriber == null)
            {
                addSubscriber add = GetSubscriberFromFetchXml(information, email);

                subscriberId = SendSubscriberToMailrelay(add);
            }
            else
            {
                subscriberId = int.Parse(ExistingSubscriber.id);
                UdpateExistingSubscriberIfNeeded(information, ExistingSubscriber, email, subscriberId);
            }

            try
            {
                Lead.UpdateSubscriberId(dynamicsCrmConnection, leadId, subscriberId);
            }
            catch (Exception exception)
            {
                Log.Write(Connection, exception.Message, typeof(AddMailrelaySubscriberFromLead), exception.StackTrace, DataLayer.MongoData.Config.LogLevelEnum.OptionError);
            }

            report.Success = true;
        }
        private int SendSubscriberToMailrelay(addSubscriber add)
        {
            MailrelayIntReply intReply = (MailrelayIntReply)_mailrelayConnection.Send(add);

            return(intReply.data);
        }