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(); }
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); }
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(); }
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(); }
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; } }
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(); }
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); } }