public override void ExecuteOption(OptionReport report) { string urlLoginName = _databaseExportContactToMailrelay.urlLoginName; Guid?crmListId = _databaseExportContactToMailrelay.listId; DatabaseUrlLogin login = DatabaseUrlLogin.GetUrlLogin(Connection, urlLoginName); DynamicsCrmConnection dynamicsCrmConnection = DynamicsCrmConnection.GetConnection(login.Url, login.Username, login.Password); PagingInformation pagingInformation = new PagingInformation(); while (pagingInformation.FirstRun || pagingInformation.MoreRecords) { MarketingList marketingList = MarketingList.GetListForMailrelayUpdate(dynamicsCrmConnection, pagingInformation, crmListId); if (marketingList != null) { UpdateReport <Guid> result = ExportMailrelayContactFromList(dynamicsCrmConnection, marketingList); Log.Write(Connection, result.AsLogText($"ExportContactToMailrelay {marketingList.new_mailrelaygroupid.Value}"), typeof(ExportContactToMailrelay), DataLayer.MongoData.Config.LogLevelEnum.OptionReport); } } report.Success = true; return; }
public override void ExecuteOption(OptionReport report) { decimal kreds = Account.GetOptaltbeloebSumKreds(_dynamicsCrmConnection); decimal by = Account.GetOptaltbeloebSumBy(_dynamicsCrmConnection); decimal total = Account.GetOptaltbeloebSum(_dynamicsCrmConnection); Guid campaignid = _databaseSumOptalt.campaignid; if (_databaseSumOptalt.kreds != kreds) { _databaseSumOptalt.kreds = kreds; Campaign.WriteOptaltsumKreds(_dynamicsCrmConnection, campaignid, kreds); report.Workload++; } if (_databaseSumOptalt.by != by) { _databaseSumOptalt.by = by; Campaign.WriteOptaltsumBy(_dynamicsCrmConnection, campaignid, by); report.Workload++; } if (_databaseSumOptalt.total != total) { _databaseSumOptalt.total = total; Campaign.WriteOptaltsum(_dynamicsCrmConnection, campaignid, total); report.Workload++; } report.Success = true; }
public override void ExecuteOption(OptionReport report) { string urlLoginName = _databaseUpdateMailrelayFromContact.urlLoginName; int pageSize = _databaseUpdateMailrelayFromContact.pageSize; Guid? contactId = _databaseUpdateMailrelayFromContact.contactId; DatabaseUrlLogin login = DatabaseUrlLogin.GetUrlLogin(Connection, urlLoginName); DynamicsCrmConnection dynamicsCrmConnection = DynamicsCrmConnection.GetConnection(login.Url, login.Username, login.Password); PagingInformation pagingInformation = new PagingInformation(); List <MailrelayInformation> mailrelayInformations = new List <MailrelayInformation>(); UpdateReport <int> intReport = new UpdateReport <int>(); while (pagingInformation.FirstRun || pagingInformation.MoreRecords) { mailrelayInformations = MailrelayInformation.GetMailrelayFromContact(dynamicsCrmConnection, Config.GetResourcePath, pagingInformation, pageSize, contactId); mailrelayInformations.ForEach(information => UpdateIfNeeded(dynamicsCrmConnection, information, intReport)); } Log.Write(Connection, intReport.AsLogText("UpdateMailrelayFromContact"), typeof(UpdateMailrelayFromContact), DataLayer.MongoData.Config.LogLevelEnum.OptionReport); report.Success = true; return; }
public override void ExecuteOption(OptionReport report) { string urlLoginName = _databaseCreateImportFromStub.urlLoginName; DatabaseSchedule ImportFromStubSchedule = _databaseCreateImportFromStub.ImportFromStubSchedule; DatabaseUrlLogin login = DatabaseUrlLogin.GetUrlLogin(Connection, urlLoginName); DynamicsCrmConnection dynamicsCrmConnection = DynamicsCrmConnection.GetConnection(login.Url, login.Username, login.Password); List <Campaign> campaigns = Campaign.ReadCampaignsToImportStubDataTo(dynamicsCrmConnection); foreach (Campaign campaign in campaigns) { DatabaseWebCampaign webCampaign = ReadOrCreateWebCampaign(campaign); bool importExists = DatabaseImportFromStub.ReadByWebCampaign(Connection, webCampaign).Any(); if (importExists == false) { DatabaseImportFromStub.Create(Connection, webCampaign._id, urlLoginName, campaign.name, ImportFromStubSchedule); } } report.Success = true; return; }
public override void ExecuteOption(OptionReport report) { string urlLoginName = _databaseImportDanskeBank.urlLoginName; string importFolder = _databaseImportDanskeBank.importFolder; SetDynamicsCrmConnectionIfEmpty(urlLoginName); string folder = Config.GetOrCreateResourcePath(importFolder); string[] files = Directory.GetFiles(folder, "*.xml"); List <XDocument> bankXmlFiles = GetBankXml(files); if (bankXmlFiles.Any() == false) { report.Success = true; return; } bankXmlFiles.ForEach(ImportXml); files.ToList().ForEach(file => MoveFileToImported(file, folder)); DataLayer.MongoData.Option.Schedule recalculateSchedule = new DataLayer.MongoData.Option.Schedule() { NextAllowedExecution = DateTime.Now, Recurring = false, TimeBetweenAllowedExecutions = TimeSpan.FromSeconds(60), Enabled = true, ActionOnFail = DataLayer.MongoData.Option.Schedule.ActionOnFailEnum.TryAgain, }; DataLayer.MongoData.Option.Options.Logic.SumIndbetaling.Create(Connection, urlLoginName, "Auto Generated indbetaling calculation", recalculateSchedule); report.Success = true; }
public override void ExecuteOption(OptionReport report) { SetDynamicsCrmConnectionIfEmpty(); DatabaseAggregateSubTable.AggregateEnum aggregate = _databaseAggregateSubTable.aggregate; string topEntityName = _databaseAggregateSubTable.topEntityName; string topEntityIdName = _databaseAggregateSubTable.topEntityIdName; string topEntityResultFieldName = _databaseAggregateSubTable.topEntityResultFieldName; string topEntityReferenceIdName = _databaseAggregateSubTable.topEntityReferenceIdName; string aggregateEntityName = _databaseAggregateSubTable.aggregateEntityName; string aggregateEntityIdName = _databaseAggregateSubTable.aggregateEntityIdName; string aggregateFieldName = _databaseAggregateSubTable.aggregateFieldName; string aggregateReferenceIdName = _databaseAggregateSubTable.aggregateReferenceIdName; List <KeyValuePair <Guid, object> > topRows = GetTopFields(topEntityName, topEntityReferenceIdName, topEntityResultFieldName); report.Workload = topRows.Count; foreach (KeyValuePair <Guid, object> row in topRows) { object aggregateValue = GetAggregateValue(aggregateEntityName, aggregateEntityIdName, aggregateReferenceIdName, topEntityReferenceIdName, row.Key, aggregateFieldName, aggregate); if (aggregateValue.Equals(row.Value) == false) { report.SubWorkload++; UpdateRow(topEntityName, topEntityIdName, row.Key, topEntityResultFieldName, aggregateValue); } } report.Success = true; }
public override void ExecuteOption(OptionReport report) { string urlLoginName = _databaseSetMissingCampaignLeadtarget.urlLoginName; SetDynamicsCrmConnectionIfEmpty(urlLoginName); string baseUrl = _databaseSetMissingCampaignLeadtarget.baseUrl; List <Campaign> campaigns = Campaign.ReadAllCampaignsWithIdAndLeadtarget(_dynamicsCrmConnection); foreach (Campaign campaign in campaigns) { string oldUrl = campaign.new_leadtarget; StringBuilder urlBuilder = new StringBuilder(); urlBuilder.Append($"{baseUrl}?formId={campaign.Id}"); List <string> keyFields = campaign.GetKeyFields(); foreach (string field in keyFields) { urlBuilder.Append($"&{field}=[{field}]"); } string newUrl = urlBuilder.ToString(); if (oldUrl != newUrl) { campaign.SetLeadtarget(newUrl); } } report.Success = true; }
private void UpdateEstimatedStatistics(OptionReport report) { lock (_statusLock) { string optionName = report.OptionType.Name; DatabaseOptionStatusLine line = null; if (_databaseOptionStatus.options.ContainsKey(optionName)) { line = _databaseOptionStatus.options[optionName]; } else { line = new DatabaseOptionStatusLine(); _databaseOptionStatus.options.Add(optionName, line); } line.ExecutionTotal++; if (report.Success) { line.SuccessTotal++; line.Success10Minute++; } else { line.FailTotal++; line.Fail10Minute++; } } }
public void RunThread(object currentOptionObject) { OptionBase currentOption = (OptionBase)currentOptionObject; _optionStatus.BeginOption(currentOption, DatabaseWorker); OptionReport report = new OptionReport(currentOption.GetType()); try { currentOption.ExecuteOption(report); _optionDecider.DelayOptionFromFails(currentOption); currentOption.DatabaseOption?.Execute(_mongoConnection); } catch (Exception exception) { Log.Write(_mongoConnection, exception.Message, typeof(ThreadHolder), exception.StackTrace, Config.LogLevelEnum.HeartError); _optionDecider.DelayOptionFromFails(currentOption); currentOption.DatabaseOption?.ExecuteFail(_mongoConnection); } finally { report.FinishReport(); report.WriteLog(_mongoConnection); _optionStatus.EndOption(currentOption, report); } }
public override void ExecuteOption(OptionReport report) { string urlLoginName = _databaseMaterialeBehovAssignment.urlLoginName; int updateProgressFrequency = _databaseMaterialeBehovAssignment.updateProgressFrequency; DatabaseUrlLogin login = DatabaseUrlLogin.GetUrlLogin(Connection, urlLoginName); DynamicsCrmConnection dynamicsCrmConnection = DynamicsCrmConnection.GetConnection(login.Url, login.Username, login.Password); Materiale materiale = Materiale.ReadCalculationNeed(dynamicsCrmConnection, Config.GetResourcePath); if (materiale == null) { report.Success = true; return; } materiale.FindBehovDefinitioner(Config.GetResourcePath); int total = CountTotalAccountsToUpdate(dynamicsCrmConnection, materiale); int staleMaterialeBehovCount = materiale.CountStaleMaterialeBehov(Config.GetResourcePath); total += staleMaterialeBehovCount; materiale.new_beregningsstatus = 0; materiale.Update(); materiale.RemoveStaleMaterialeBehov(Config.GetResourcePath, currentProgress => updateProgress(materiale, currentProgress, total), updateProgressFrequency); int progress = staleMaterialeBehovCount; int materialeAddedCurrent = -1; MaterialeProcessState state = new MaterialeProcessState(); state.pagingInformation = new PagingInformation(); state.owningbusinessunit = materiale.owningbusinessunitGuid.Value; while (materialeAddedCurrent != 0) { materiale.AddMissingMateriale(state, Config.GetResourcePath); materialeAddedCurrent = state.AccountsProcessed; progress += materialeAddedCurrent; updateProgress(materiale, progress, total); } materialeAddedCurrent = -1; materiale.behovsberegning = Materiale.behovsberegningEnum.Afsluttet; materiale.new_beregningsstatus = null; materiale.Update(); report.Success = true; return; }
public override void ExecuteOption(OptionReport report) { string dns = _databaseAdjustDns.dnsIp; string name = _databaseAdjustDns.adapterName; DnsHelper.SetDns(dns, name); List <IPAddress> addresses = DnsHelper.GetActiveEthernetIpv4DnsAddresses(); report.Success = addresses.Any(address => address.ToString() == dns); return; }
public override void ExecuteOption(OptionReport report) { string insertedEntityName = _databaseCopyNN.insertedEntityName; string insertedEntityIdName = _databaseCopyNN.insertedEntityIdName; string insertedEntityOriginIdName = _databaseCopyNN.insertedEntityOriginIdName; SetDynamicsCrmConnectionIfEmpty(); List <dynamic> insertedEntities = GetInsertedEntities(insertedEntityName, insertedEntityIdName, insertedEntityOriginIdName); foreach (dynamic insertedEntity in insertedEntities) { CreateInsertedIntermediateEntity(insertedEntityName, insertedEntityIdName, insertedEntityOriginIdName, insertedEntity); } }
public override void ExecuteOption(OptionReport report) { TimeSpan sleepTime = TimeSpan.FromSeconds(_databaseTest.SleepForSeconds); Thread.Sleep(sleepTime); if (_databaseTest.ThrowException) { report.Success = false; throw new Exception($"Test exception {Guid.NewGuid()}"); } report.Success = true; }
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 override void ExecuteOption(OptionReport report) { string urlLoginName = _databaseSumIndbetaling.urlLoginName; SetDynamicsCrmConnectionIfEmpty(urlLoginName); IEnumerable <Indbetaling> indbetalings = Indbetaling.GetIndbetalingValue(_dynamicsCrmConnection); IndbetalingSumCollection byarbejdeCollection = new IndbetalingSumCollection(IndbetalingSumCollection.CollectionTypeEnum.byarbejde); IndbetalingSumCollection campaignCollection = new IndbetalingSumCollection(IndbetalingSumCollection.CollectionTypeEnum.campaign); IndbetalingSumCollection campaignCollectionBy = new IndbetalingSumCollection(IndbetalingSumCollection.CollectionTypeEnum.campaign); IndbetalingSumCollection campaignCollectionKreds = new IndbetalingSumCollection(IndbetalingSumCollection.CollectionTypeEnum.campaign); IndbetalingSumCollection indsamlingsstedCollection = new IndbetalingSumCollection(IndbetalingSumCollection.CollectionTypeEnum.indsamlingssted); IndbetalingSumCollection kontoCollection = new IndbetalingSumCollection(IndbetalingSumCollection.CollectionTypeEnum.konto); Dictionary <Guid, IndbetalingSumCollection> byarbejdesumByCampaign = new Dictionary <Guid, IndbetalingSumCollection>(); Dictionary <Guid, IndbetalingSumCollection> indsamlingsstedByCampaign = new Dictionary <Guid, IndbetalingSumCollection>(); int indbetalingCount = 0; foreach (Indbetaling indbetaling in indbetalings) { indbetalingCount++; if (indbetaling.kilde == null) { report.TextBuilder.AppendLine($"indbetaling {indbetaling.Id} has no kilde"); continue; } AddIndbetalingToSums(indbetaling, byarbejdeCollection, campaignCollection, campaignCollectionBy, campaignCollectionKreds, indsamlingsstedCollection, kontoCollection, byarbejdesumByCampaign, indsamlingsstedByCampaign); } report.Workload = indbetalingCount; WriteByarbejdeAmount(byarbejdeCollection, byarbejdesumByCampaign); WriteCampaignAmount(campaignCollection, campaignCollectionBy, campaignCollectionKreds); WriteIndsamlingsstedAmount(indsamlingsstedCollection, indsamlingsstedByCampaign); WriteKontoAmount(kontoCollection); report.Success = true; }
public void EndOption(OptionBase currentOption, OptionReport report) { lock (_statusLock) { _databaseOptionStatus.ActiveOptionsRemove(currentOption.DatabaseOption); if (report != null) { DatabaseOptionResult.Create(_mongoConnection, report.BeginTime, report.EndTime, report.OptionType.Name, report.Success, report.Memory); UpdateEstimatedStatistics(report); if (_databaseOptionStatus.optionLastMemory.ContainsKey(report.OptionType.Name)) { _databaseOptionStatus.optionLastMemory[report.OptionType.Name] = report.Memory; } else { _databaseOptionStatus.optionLastMemory.Add(report.OptionType.Name, report.Memory); } } } }
public override void ExecuteOption(OptionReport report) { string urlLoginName = _databaseExposeData.urlLoginName; string fetchXmlPath = _databaseExposeData.fetchXmlPath; string exposePath = _databaseExposeData.exposePath; string exposeName = _databaseExposeData.exposeName; DatabaseUrlLogin login = DatabaseUrlLogin.GetUrlLogin(Connection, urlLoginName); DynamicsCrmConnection dynamicsCrmConnection = DynamicsCrmConnection.GetConnection(login.Url, login.Username, login.Password); string fullFetchXmlPath = Config.GetResourcePath(fetchXmlPath); string fullExposePath = Config.GetResourcePath(exposePath); List <dynamic> dataList = DynamicFetch.ReadFromFetchXml(dynamicsCrmConnection, fullFetchXmlPath, new PagingInformation()); JsonSerializerSettings settings = new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore, StringEscapeHandling = StringEscapeHandling.EscapeNonAscii, }; string json = JsonConvert.SerializeObject(dataList, Formatting.None, settings); json = json.Replace("\\r\\n", "\\n"); if (Directory.Exists(fullExposePath) == false) { Directory.CreateDirectory(fullExposePath); } File.WriteAllText(fullExposePath + "/" + exposeName, json, Encoding.UTF8); report.Success = true; return; }
public override void ExecuteOption(OptionReport report) { string urlLoginName = _databaseSendTableFromMailrelay.urlLoginName; Guid? contactid = _databaseSendTableFromMailrelay.contactid; string contactIdName = _databaseSendTableFromMailrelay.contactidName; string queryFindContacts = _databaseSendTableFromMailrelay.queryFindContacts; string queryCreateTable = _databaseSendTableFromMailrelay.queryCreateTable; string subject = _databaseSendTableFromMailrelay.subject; string html = _databaseSendTableFromMailrelay.html; string tablerow = _databaseSendTableFromMailrelay.tablerow; string matchidname = _databaseSendTableFromMailrelay.matchidname; string limitOnDateName = _databaseSendTableFromMailrelay.limitOnDateName; List <int> requireDataOnDaysFromToday = _databaseSendTableFromMailrelay.requireDataOnDaysFromToday; TimeSpan sleepTimeOnFailiure = _databaseSendTableFromMailrelay.sleepTimeOnFailiure; string orderbyDescending = _databaseSendTableFromMailrelay.orderbyDescending; string orderby = _databaseSendTableFromMailrelay.orderby; string headerDateFormat = _databaseSendTableFromMailrelay.headerDateFormat; string tableDateFormat = _databaseSendTableFromMailrelay.tableDateFormat; int mailboxfromid = _databaseSendTableFromMailrelay.mailboxfromid; int mailboxreplyid = _databaseSendTableFromMailrelay.mailboxreplyid; int mailboxreportid = _databaseSendTableFromMailrelay.mailboxreportid; int packageid = _databaseSendTableFromMailrelay.packageid; string smtpHost = _databaseSendTableFromMailrelay.smtpHost; string fromEmail = _databaseSendTableFromMailrelay.fromEmail; string toEmail = _databaseSendTableFromMailrelay.toEmail; int port = _databaseSendTableFromMailrelay.port; string smtpUsername = _databaseSendTableFromMailrelay.smtpUsername; string smtpPassword = _databaseSendTableFromMailrelay.smtpPassword; DatabaseSendTableFromMailrelay.SendTypeEnum sendType = _databaseSendTableFromMailrelay.sendType; SetDynamicsCrmConnectionIfEmpty(urlLoginName); PagingInformation pagingInformation = new PagingInformation(); XDocument xDocument = XDocument.Parse(queryFindContacts); XmlHelper.SetCount(xDocument, 1); /* * if (contactid.HasValue) * { * XmlHelper.AddCondition(xDocument, contactIdName, "eq", contactid.ToString()); * } */ if (string.IsNullOrWhiteSpace(headerDateFormat)) { headerDateFormat = "yyyy-MM-dd"; } if (string.IsNullOrWhiteSpace(tableDateFormat)) { tableDateFormat = "yyyy-MM-dd"; } while (pagingInformation.FirstRun || pagingInformation.MoreRecords) { dynamic receiver = DynamicFetch.ReadFromFetchXml(_dynamicsCrmConnection, xDocument, pagingInformation).SingleOrDefault(); if (receiver == null) { report.Success = true; return; } IDictionary <string, object> receiverDictionary = (IDictionary <string, object>)receiver; if (contactid.HasValue) { if ((Guid)receiverDictionary[contactIdName] != contactid) { continue; } } if (receiverDictionary.ContainsKey("emailaddress1") == false) { continue; } report.Workload++; string fullname = receiver.fullname; string emailaddress1 = receiver.emailaddress1; Guid matchid = receiver.matchid; if (string.IsNullOrWhiteSpace(toEmail) == false) { emailaddress1 = toEmail; } XDocument tableDocument = XDocument.Parse(queryCreateTable); XmlHelper.AddCondition(tableDocument, matchidname, "eq", matchid.ToString()); List <dynamic> tableRowList = DynamicFetch.ReadFromFetchXml(_dynamicsCrmConnection, tableDocument, new PagingInformation()); StringBuilder rowBuilder = new StringBuilder(); if (string.IsNullOrWhiteSpace(orderby) == false) { tableRowList = tableRowList.OrderBy(row => { IDictionary <string, object> rowDictionary = (IDictionary <string, object>)row; object sortObject = null; if (rowDictionary.ContainsKey(orderby)) { sortObject = rowDictionary[orderby]; } return(sortObject); }).ToList(); } if (string.IsNullOrWhiteSpace(orderbyDescending) == false) { tableRowList = tableRowList.OrderByDescending(row => { IDictionary <string, object> rowDictionary = (IDictionary <string, object>)row; object sortObject = null; if (rowDictionary.ContainsKey(orderbyDescending)) { sortObject = rowDictionary[orderbyDescending]; } return(sortObject); }).ToList(); } foreach (dynamic rowDynamic in tableRowList) { IDictionary <string, object> rowDictionary = (IDictionary <string, object>)rowDynamic; string row = InsertFilledFields(tablerow, rowDictionary, tableDateFormat); rowBuilder.Append(row); } string htmlWithRows = html.Replace("{rows}", rowBuilder.ToString()); receiver.RowCount = tableRowList.Count(); DateTime today = DateTime.Now.Date; receiver.Today = today; receiver.Yesterday = today.AddDays(-1); if (string.IsNullOrWhiteSpace(limitOnDateName) == false) { if (requireDataOnDaysFromToday == null || requireDataOnDaysFromToday.Any() == false) { continue; } bool isMailAllowed = false; foreach (int daysToAdd in requireDataOnDaysFromToday) { int rowCount = FindRowCountInPeriod(tableRowList, limitOnDateName, today.AddDays(daysToAdd), today.AddDays(daysToAdd + 1)); receiverDictionary["RowCountDay" + daysToAdd.ToString()] = rowCount; if (rowCount != 0) { isMailAllowed = true; } } if (isMailAllowed == false) { continue; } } report.SubWorkload += receiver.RowCount; string htmlWithRowsAndFields = InsertFilledFields(htmlWithRows, receiverDictionary, headerDateFormat); bool mailSent = false; if (sendType == DatabaseSendTableFromMailrelay.SendTypeEnum.Api) { mailSent = TrySendMail(htmlWithRowsAndFields, fullname, emailaddress1, subject, packageid, mailboxfromid, mailboxreplyid, mailboxreportid); } if (sendType == DatabaseSendTableFromMailrelay.SendTypeEnum.Smtp) { mailSent = TrySendSmtpMail(htmlWithRowsAndFields, fullname, fromEmail, emailaddress1, subject, smtpHost, port, smtpUsername, smtpPassword); } if (mailSent == false) { Log.Write(Connection, $"failed sending email to {emailaddress1} sleeping {sleepTimeOnFailiure}", typeof(SendTableFromMailrelay), DataLayer.MongoData.Config.LogLevelEnum.OptionError); Thread.Sleep(sleepTimeOnFailiure); } report.TextBuilder.AppendLine($"Sent to {emailaddress1} - Rows {receiver.RowCount}"); } report.Success = true; }
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; }
public abstract void ExecuteOption(OptionReport report);