示例#1
0
        public void ImportFromStubImportsStub()
        {
            DatabaseWebCampaign webCampaign = CreateWebCampaign(_campaign, new List <string>()
            {
            });

            webCampaign.Insert(Connection);

            string firstname = $"firstname {Guid.NewGuid()}";

            DatabaseStub stub = CreateStub(webCampaign, firstname);

            DatabaseStubPusher.GetInstance(Connection).Push(stub);

            DatabaseImportFromStub databaseImportFromStub = CreateDatabaseImportStub(webCampaign);

            ImportFromStub importFromStub = new ImportFromStub(Connection, databaseImportFromStub);

            importFromStub.ExecuteOption(new Administration.Option.Options.OptionReport(typeof(ImportFromStubTest)));

            Lead lead = Lead.ReadFromFetchXml(DynamicsCrmConnection, new List <string>()
            {
                "firstname"
            }, new Dictionary <string, string>()
            {
                { "firstname", firstname }
            }).Single();

            lead.Delete();
        }
示例#2
0
        protected DatabaseStub CreateStub(DatabaseWebCampaign webcampaign, string firstname, string lastname)
        {
            DatabaseStub stub = new DatabaseStub()
            {
                Contents = new List <DatabaseStubElement>()
                {
                    new DatabaseStubElement()
                    {
                        Key = "firstname", Value = firstname
                    }
                    , new DatabaseStubElement()
                    {
                        Key = "lastname", Value = lastname
                    }
                },
                PostTime = DateTime.Now,
            };

            if (webcampaign != null)
            {
                stub.WebCampaignId = webcampaign._id;
            }

            return(stub);
        }
示例#3
0
        public void ImportFromStubAssignsContactToAccount()
        {
            Account account = CreateAccount();

            account.InsertWithoutRead();

            DatabaseWebCampaign webCampaign = CreateWebCampaign(_campaign, new List <string>()
            {
                "emailaddress1"
            });

            webCampaign.Insert(Connection);

            DatabaseStub stub          = CreateStub(webCampaign);
            string       emailaddress1 = $"emailaddress1 {Guid.NewGuid()}";

            stub.Contents.Add(new DatabaseStubElement()
            {
                Key = "emailaddress1", Value = emailaddress1
            });
            stub.Contents.Add(new DatabaseStubElement()
            {
                Key = "indsamler2016", Value = account.Id.ToString()
            });
            DatabaseStubPusher.GetInstance(Connection).Push(stub);

            DatabaseImportFromStub databaseImportFromStub = CreateDatabaseImportStub(webCampaign);

            ImportFromStub importFromStub = new ImportFromStub(Connection, databaseImportFromStub);

            importFromStub.ExecuteOption(new Administration.Option.Options.OptionReport(typeof(ImportFromStubTest)));

            Lead lead = Lead.ReadFromFetchXml(DynamicsCrmConnection, new List <string>()
            {
                "emailaddress1"
            }, new Dictionary <string, string>()
            {
                { "emailaddress1", emailaddress1 }
            }).Single();
            Contact contact = Contact.ReadFromFetchXml(DynamicsCrmConnection, new List <string>()
            {
                "contactid", "emailaddress1", "new_indsamler2016"
            }, new Dictionary <string, string>()
            {
                { "emailaddress1", emailaddress1 }
            }).Single();
            Account accountRead = Account.ReadFromFetchXml(DynamicsCrmConnection, new List <string>()
            {
                "accountid"
            }, new Dictionary <string, string>()
            {
                { "accountid", contact.indsamler2016.ToString() }
            }).Single();

            lead.Delete();
            contact.Delete();
            accountRead.Delete();
        }
示例#4
0
        public void StubWillBeImportedWithoutCampaign()
        {
            string firstname = $"firstname {Guid.NewGuid()}";

            DatabaseStub stub = CreateStub(null, firstname);

            stub.Contents.AddRange(new List <DatabaseStubElement>()
            {
                new DatabaseStubElement()
                {
                    Key = "lastname", Value = "test"
                },
                new DatabaseStubElement()
                {
                    Key = "address1_line1", Value = "test"
                },
                new DatabaseStubElement()
                {
                    Key = "address1_postalcode", Value = "test"
                },
                new DatabaseStubElement()
                {
                    Key = "address1_city", Value = "test"
                },
                new DatabaseStubElement()
                {
                    Key = "emailaddress1", Value = "test"
                },
                new DatabaseStubElement()
                {
                    Key = "mobilephone", Value = "test"
                },
            });
            DatabaseStubPusher.GetInstance(Connection).Push(stub);

            DatabaseImportFromStub databaseImportFromStub = CreateDatabaseImportStub();

            ImportFromStub importFromStub = new ImportFromStub(Connection, databaseImportFromStub);

            importFromStub.ExecuteOption(new Administration.Option.Options.OptionReport(typeof(ImportFromStubTest)));

            Lead lead = Lead.ReadFromFetchXml(DynamicsCrmConnection, new List <string>()
            {
                "firstname"
            }, new Dictionary <string, string>()
            {
                { "firstname", firstname }
            }).Single();

            lead.Delete();
        }
示例#5
0
        public override void ExecuteOption(OptionReport report)
        {
            string urlLoginName = _databaseImportFromStub.urlLoginName;

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

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

            DatabaseWebCampaign.CollectTypeEnum collectType;
            DatabaseStub stub;

            if (webCampaign == null)
            {
                collectType = DatabaseWebCampaign.CollectTypeEnum.Lead;
                stub        = DatabaseStub.ReadFirst(Connection);
            }
            else
            {
                collectType = webCampaign.CollectType;
                stub        = DatabaseStub.ReadFirst(Connection, webCampaign);
            }

            if (stub == null)
            {
                report.Success = true;
                return;
            }

            try
            {
                ImportStub(dynamicsCrmConnection, stub, webCampaign, collectType);
                stub.Delete(Connection);
                report.Success = true;
                return;
            }
            catch (Exception exception)
            {
                Log.Write(Connection, exception.Message, typeof(ImportFromStub), exception.StackTrace, DataLayer.MongoData.Config.LogLevelEnum.OptionError);
                stub.ImportAttempt++;
                stub.Update(Connection);
                report.Success = false;
                return;
            }
        }
示例#6
0
        public void ImportFromStubImportsStubAndCreatesContact()
        {
            DatabaseWebCampaign webCampaign = CreateWebCampaign(_campaign, new List <string>()
            {
                "emailaddress1", "mobilephone"
            });

            webCampaign.Insert(Connection);

            DatabaseStub stub          = CreateStub(webCampaign);
            string       emailaddress1 = $"emailaddress1 {Guid.NewGuid()}";

            stub.Contents.Add(new DatabaseStubElement()
            {
                Key = "emailaddress1", Value = emailaddress1
            });
            DatabaseStubPusher.GetInstance(Connection).Push(stub);

            DatabaseImportFromStub databaseImportFromStub = CreateDatabaseImportStub(webCampaign);

            ImportFromStub importFromStub = new ImportFromStub(Connection, databaseImportFromStub);

            importFromStub.ExecuteOption(new Administration.Option.Options.OptionReport(typeof(ImportFromStubTest)));

            Lead lead = Lead.ReadFromFetchXml(DynamicsCrmConnection, new List <string>()
            {
                "emailaddress1"
            }, new Dictionary <string, string>()
            {
                { "emailaddress1", emailaddress1 }
            }).Single();

            lead.Delete();

            Contact contact = Contact.ReadFromFetchXml(DynamicsCrmConnection, new List <string>()
            {
                "emailaddress1"
            }, new Dictionary <string, string>()
            {
                { "emailaddress1", emailaddress1 }
            }).Single();

            contact.Delete();
        }
示例#7
0
        private void ImportStub(DynamicsCrmConnection dynamicsCrmConnection, DatabaseStub stub, DatabaseWebCampaign webCampaign, DatabaseWebCampaign.CollectTypeEnum collectType)
        {
            List <string> keyFields;

            if (webCampaign == null)
            {
                keyFields = new List <string>();
            }
            else
            {
                keyFields = webCampaign.KeyFields;
            }

            List <DatabaseStubElement> contentList = Utilities.LinqExtension.DistinctBy(stub.Contents, content => content.Key).ToList();

            contentList = contentList.Where(content => content.Key != null).ToList();

            Dictionary <string, string> allContent = contentList.ToDictionary(content => content.Key, content => content.Value);

            Dictionary <string, string> keyContent = allContent.Where(content => keyFields.Contains(content.Key)).ToDictionary(content => content.Key, content => content.Value);

            Contact contact = null;

            int?numberOfMatchingContacts = null;

            if (keyContent.Any())
            {
                List <Contact> matchingContacts = Contact.ReadFromFetchXml(dynamicsCrmConnection, new List <string> {
                    "contactid", "ownerid"
                }, keyContent);
                numberOfMatchingContacts = matchingContacts.Count;

                if (numberOfMatchingContacts == 1)
                {
                    contact = matchingContacts.Single();
                }
            }

            Lead lead = Lead.Create(dynamicsCrmConnection, allContent);

            Guid?owner = null;

            if (webCampaign != null)
            {
                lead.campaign = webCampaign.FormId;
                owner         = webCampaign.FormOwner;
            }

            if (contact != null && owner.HasValue == false)
            {
                if (owner.HasValue == false)
                {
                    owner = contact.owner;
                }
            }

            switch (collectType)
            {
            case DatabaseWebCampaign.CollectTypeEnum.LeadOgContactHvisContactIkkeFindes:
                if (contact == null && numberOfMatchingContacts == 0)
                {
                    contact = Contact.Create(dynamicsCrmConnection, allContent);
                    contact.InsertWithoutRead();
                    if (owner.HasValue)
                    {
                        contact.owner = owner;
                        contact.Assign();
                    }
                }
                break;
            }

            lead.subject = _databaseImportFromStub.Name;

            if (contact != null)
            {
                lead.parentcontact = contact.Id;
            }

            lead.InsertWithoutRead();

            if (owner.HasValue)
            {
                lead.owner = owner;
                lead.Assign();
            }

            if (webCampaign != null && webCampaign.mailrelaygroupid.HasValue)
            {
                AddMailrelaySubscriberFromLead.CreateIfValid(Connection, lead.Id, $"Auto subscribe from {_databaseImportFromStub.Name}", _databaseImportFromStub.urlLoginName, lead.emailaddress1, webCampaign);
            }
        }