public async Task <object> RetryParticipationSyncImmediately( CrmData data, Configurations requestWideSettings, bool requestConsumerId = false) { var jobId = await Task.Run(() => BackgroundJob.Enqueue <ICrmConsumerProvider>( iCrmProvider => iCrmProvider.CreateParticipationAsync( data, requestWideSettings, requestConsumerId))); var result = new object(); IMonitoringApi monitoringApi = JobStorage.Current.GetMonitoringApi(); JobDetailsDto jobDetails = monitoringApi.JobDetails(jobId); SucceededJobDto jobDto = monitoringApi.SucceededJobs(0, int.MaxValue) .First() //.FirstOrDefault(job => job.Key == "Key") .Value; if (jobDto != null) { result = jobDto.Result; return(JsonConvert.DeserializeObject <CrmResponse>(result.ToString())); } return(null); }
public static string FormatMopupData(CrmData data) { var participation = new { Source = data.GetSetting <string>("SourceName"), Attributes = new[] { new { Name = "Email", Value = data.Data.Email }, new { Name = "Country", Value = data.Data.Country }, new { Name = "list:Privacy_Policy_EN", Value = (object)1 }, new { Name = "List:CBZZ190301_Participants", Value = (object)1 }, new { Name = "list:Cadbury_Email", Value = data.Data.NewsletterOptin ? (object)1 : (object)string.Empty } }, Transactions = new[] { new { Name = data.GetSetting <string>("TransactionName"), Date_Created = DateTimeOffset.UtcNow.ToString() } }, LegalTextVersions = new[] { new { LegalTextName = data.Data.PrivacyPolicyTextName, Version = data.Data.PrivacyPolicyVersion, Created = data.Data.PrivacyPolicyCreation } } }; return(JsonConvert.SerializeObject(participation)); }
private CrmData GatherParticipationCrmDataToSend(ParticipationDto participation, CrmData legalDocument, string country) { var crmData = new CrmData(); crmData.Data.Email = participation.Email; crmData.Data.Country = country; crmData.Data.PrivacyConsent = true; crmData.Data.NewsletterOptin = participation.NewsletterOptin; crmData.Data.PrivacyPolicyTextName = legalDocument.Data.Data.Versions[0].LegalTextName; crmData.Data.PrivacyPolicyVersion = legalDocument.Data.Data.Versions[0].Version; crmData.Data.PrivacyPolicyCreation = legalDocument.Data.Data.Versions[0].Created.ToString(); return(crmData); }
public async Task DelayedParticipationRetrySync( CrmData data, Configurations requestWideSettings, TimeSpan delay, bool requestConsumerId = false) { await Task.Run(() => BackgroundJob.Schedule <ICrmConsumerProvider>( iCrmProvider => iCrmProvider.CreateParticipationAsync( data, requestWideSettings, requestConsumerId), delay)); }
public async Task RetryParticipationSyncRecurrently( CrmData data, Configurations requestWideSettings, CronEnum occurence, bool requestConsumerId = false) { var frequency = occurence.MapjobFrequency(); await Task.Run(() => RecurringJob.AddOrUpdate <ICrmConsumerProvider>( iCrmProvider => iCrmProvider.CreateParticipationAsync( data, requestWideSettings, requestConsumerId), frequency)); }
public async Task <CrmData> CreateParticipationAsync( CrmData data, Configurations requestWideSettings, bool requestConsumerId = false) { data.AddSetting("SourceName", requestWideSettings.Settings.Source); data.AddSetting("TransactionName", requestWideSettings.Settings.Transaction); data.AddSetting("ListPrivacyPolicy", (bool)data.Data.PrivacyConsent ? 1 : 0); data.AddSetting("ListCadbury", (bool)data.Data.NewsletterOptin ? 1 : 0); data.AddSetting("IdentLong", (string)data.Data.Retailer); data.AddSetting("IdentShort", (int)data.Data.ChocolateBar); data.AddSetting("Q1", (string)data.Data.Place); data.AddSetting("Q2", (string)data.Data.TriedFlavours); data.AddSetting("PrivacyPolicyTextName", (string)data.Data.PrivacyPolicyTextName); data.AddSetting("PrivacyPolicyVersion", (long)data.Data.PrivacyPolicyVersion); data.AddSetting("PrivacyPolicyCreation", (string)data.Data.PrivacyPolicyCreation); var settings = new ProCampaignSettings { ConsumerBaseUrl = new Uri(Configuration.Settings.ConsumerBaseUrl), ParticipationPath = Configuration.Settings.ParticipationPath, ApiKey = requestWideSettings.Settings.ApiKey, ApiSecret = requestWideSettings.Settings.ApiSecret }; var ApiData = ProCampaignData.FormatParticipationData(data); var response = await ApiHelper.PostParticipationAsync(ApiData, settings, requestConsumerId); var returnData = new CrmData(); returnData.AddSetting("Success", response.IsSuccessful); returnData.AddSetting("ApiStatus", response.StatusCode); returnData.AddSetting("ApiMessage", response.StatusMessage); returnData.AddSetting("HttpStatus", response.HttpStatusCode); returnData.AddSetting("HttpMessage", response.HttpStatusMessage); returnData.AddSetting("Data", response.Data); return(returnData); }
public async Task <CrmData> ReadTextDocumentAsync() { var settings = new ProCampaignSettings { ApiBaseUrl = new Uri(Configuration.Settings.DocumentBaseUrl), DocumentPath = Configuration.Settings.DocumentPath, InternationalApiKey = Configuration.Settings.InternationalApiKey }; var response = await ApiHelper.GetPermissionTextAsync(settings); var returnData = new CrmData(); returnData.AddSetting("Success", response.IsSuccessful); returnData.AddSetting("ApiStatus", response.StatusCode); returnData.AddSetting("ApiMessage", response.StatusMessage); returnData.AddSetting("HttpStatus", response.HttpStatusCode); returnData.AddSetting("HttpMessage", response.HttpStatusMessage); returnData.AddSetting("Data", response.Data); return(returnData); }
private async Task <(bool, string)> ProceedToParticipationSyncRetryProcess(ParticipationDto participation, CrmData crmData, Configurations configuration) { var success = false; var consumerId = string.Empty; // Store locally var failed = new FailedTransactionDto { Id = Guid.NewGuid(), ParticipationId = participation.Id, TermsConsent = true, NewsletterOptin = participation.NewsletterOptin, CreatedDate = DateTimeOffset.UtcNow }; _failedTransactionService.Create(failed); // Another attempt var reSyncResponse = await _scheduler.RetryParticipationSyncImmediately(crmData, configuration, true); var typedResponse = (CrmResponse)reSyncResponse; success = typedResponse.Data.Success; if (success) { var currentParticipation = _participationService.GetParticipation(participation.Id); currentParticipation.Status = ParticipationStatus.PARTICIPATION_RETRY_SUCCESS.ToString(); currentParticipation.ApiStatus = typedResponse.Data.ApiStatus.ToString(); currentParticipation.ConsumerId = typedResponse.Data.Data.ConsumerId; currentParticipation.ApiMessage = typedResponse.Data.ApiMessage; currentParticipation.ModifiedDate = DateTimeOffset.UtcNow; _participationService.UpdateParticipation(currentParticipation); _failedTransactionService.Delete(failed.Id); consumerId = typedResponse.Data.Data.ConsumerId; } else { var currentParticipation = _participationService.GetParticipation(participation.Id); currentParticipation.Status = ParticipationStatus.PARTICIPATION_RETRY_FAILED.ToString(); currentParticipation.ModifiedDate = DateTimeOffset.UtcNow; _participationService.UpdateParticipation(currentParticipation); } return(success, consumerId); }