private CrmData GatherParticipationDataToSync(CrmDto data, CrmData legalDocument) { var crmData = new CrmData(); crmData.Data.Firstname = data.Firstname; crmData.Data.Lastname = data.Lastname; crmData.Data.Email = data.Email; crmData.Data.MobilePrivate = data.PhoneNumber; crmData.Data.Street1 = data.Address; crmData.Data.Street2 = data.AdditionalAddress; crmData.Data.City = data.City; crmData.Data.ZipCode = data.ZipCode; crmData.Data.Country = data.Country; crmData.Data.AccountNumber = data.AccountNumber; crmData.Data.SortCode = data.SortCode; crmData.Data.IBAN = data.IBAN; crmData.Data.BIC = data.BIC; 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(); crmData.Data.Payment = data.PaymentType; crmData.Data.PrizeValue = data.PrizeValue; crmData.Data.ParticipationId = data.ParticipationId; return(crmData); }
public async Task <CrmData> CreateParticipationAsync( CrmData data, CrmConfiguration requestWideSettings, bool requestConsumerId = false) { data.AddSetting("SourceName", requestWideSettings.Settings.SourceName); data.AddSetting("TransactionName", requestWideSettings.Settings.TransactionName); 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); }
private void CreateMessageProcessingStepImage( IOrganizationService service, ITracingService tracer, Guid stepId, string imageName, CrmData.SdkImageType imageType, CrmData.SdkMessageName messageName, string attributes) { var existingImages = GetStepImageReferences(service, stepId, imageName, imageType); if (existingImages.Any()) { tracer.Trace("A step image named '{0}' of type '{1}' already exists.", imageName, imageType.ToString()); } else { var image = new Entity(CrmData.SdkMessageProcessingStepImageEntityName); image[CrmData.SdkMessageProcessingStepImage_SdkMessageProcessingStepId] = new EntityReference(CrmData.SdkMessageProccessingStepEntityName, stepId); image[CrmData.SdkMessageProcessingStepImage_Name] = imageName; image[CrmData.SdkMessageProcessingStepImage_EntityAlias] = imageName; image[CrmData.SdkMessageProcessingStepImage_ImageType] = new OptionSetValue((int)imageType); image[CrmData.SdkMessageProcessingStepImage_MessagePropertyName] = CrmData.GetMessageProperyName(messageName); if (!string.IsNullOrEmpty(attributes)) { image[CrmData.SdkMessageProcessingStepImage_Attributes] = attributes; } service.Create(image); } }
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)); }
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)); }
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 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)); }
/// <summary> /// 客户模块 /// </summary> /// <param name="usertoken"></param> /// <param name="modelConfig"></param> /// <returns></returns> public List <CrmData> GetCustomerList(string usertoken, CrmApiData modelConfig) { List <CrmData> crmdata = new List <CrmData>(); if (modelConfig == null) { return(crmdata); } string starttime = modelConfig.CurrentTime; string endtime = modelConfig.CurrentTime; int pagesize = modelConfig.PageSize; int pageindex = modelConfig.PageIndex; string url = _crmApiHost + _customersUrl + $"?user_token={usertoken}&version_code={_versionCode}&device={_device}&start_date={starttime}&end_date={endtime}&per_page={pagesize}&page={pageindex}&date=other"; string result = HttpHelper.GetData(url); if (!string.IsNullOrEmpty(result)) { CrmBaseData <CRMNewIndexBoxData> returndata = Newtonsoft.Json.JsonConvert.DeserializeObject <CrmBaseData <CRMNewIndexBoxData> >(result); if (returndata != null && returndata.data.revisit_logs != null && returndata.data.revisit_logs.Count > 0) { if (modelConfig.TotalPageSize <= 0) { modelConfig.TotalPageSize = Convert.ToInt32(Math.Ceiling(returndata.data.total_count / Convert.ToDecimal(returndata.data.per_page))); base.Update(modelConfig, "totalpagesize"); } foreach (CRMNewIndexData item in returndata.data.revisit_logs) { CrmBaseData <CRMLeadsData> leaddata = GetCrmfilterLeads(usertoken, item.loggable_id); if (leaddata == null || leaddata.data == null || leaddata.data.address == null) { continue; } CrmData data = new CrmData(); data.phone = leaddata.data.address.tel; data.content = item.content; data.statecontent = leaddata.data.status_mapped; data.name = item.user.name; data.AddTime = item.real_revisit_at; crmdata.Add(data); } } } return(crmdata); }
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); }
public static string FormatParticipationData(CrmData data) { var participation = (Countries)data.Data.Country == Countries.IE ? new { Source = data.GetSetting <string>("SourceName"), Attributes = new[] { new { Name = "Firstname", Value = data.Data.Firstname }, new { Name = "Lastname", Value = data.Data.Lastname }, new { Name = "Email", Value = data.Data.Email }, new { Name = "MobilePrivate", Value = data.Data.MobilePrivate }, new { Name = "Street1", Value = data.Data.Street1 }, new { Name = "Street2", Value = data.Data.Street2 }, new { Name = "City", Value = data.Data.City }, new { Name = "Zipcode", Value = data.Data.ZipCode }, new { Name = "Country", Value = data.Data.Country.ToString().ToUpper() }, new { Name = "TBZZ190101_Accountnumber", Value = data.Data.AccountNumber }, new { Name = "TBZZ190101_Sortcode", Value = data.Data.SortCode }, new { Name = "TBZZ190101_IBAN", Value = data.Data.IBAN }, new { Name = "TBZZ190101_BIC", Value = data.Data.BIC }, new { Name = "List:Privacy_Policy_EN", Value = (object)1 }, new { Name = "List:TBZZ190101_Participants", Value = (object)1 } }, Transactions = new[] { new { Name = data.GetSetting <string>("TransactionName"), Date_Created = DateTime.UtcNow.ToString(), Parameters = new [] { new { Name = "Ident_short", Value = (PaymentType)data.Data.Payment == PaymentType.CHEQUE ? (dynamic)"Cheque" : (dynamic)"Bank Transfer" }, new { Name = "Value", Value = data.Data.PrizeValue }, new { Name = "Q1", Value = data.Data.AccountNumber }, new { Name = "Q2", Value = data.Data.SortCode }, new { Name = "Q3", Value = data.Data.IBAN }, new { Name = "Q4", Value = data.Data.BIC }, new { Name = "Q15", Value = data.Data.ParticipationId } } } }, LegalTextVersions = new[] { new { LegalTextName = data.Data.PrivacyPolicyTextName, Version = data.Data.PrivacyPolicyVersion, Created = data.Data.PrivacyPolicyCreation } } } : new { Source = data.GetSetting <string>("SourceName"), Attributes = new[] { new { Name = "Firstname", Value = data.Data.Firstname }, new { Name = "Lastname", Value = data.Data.Lastname }, new { Name = "Email", Value = data.Data.Email }, new { Name = "MobilePrivate", Value = data.Data.MobilePrivate }, new { Name = "Street1", Value = data.Data.Street1 }, new { Name = "Street2", Value = data.Data.Street2 }, new { Name = "City", Value = data.Data.City }, new { Name = "Zipcode", Value = data.Data.ZipCode }, new { Name = "Country", Value = (object)"GB" }, new { Name = "TBZZ190101_Accountnumber", Value = data.Data.AccountNumber }, new { Name = "TBZZ190101_Sortcode", Value = data.Data.SortCode }, new { Name = "List:Privacy_Policy_EN", Value = (object)1 }, new { Name = "List:TBZZ190101_Participants", Value = (object)1 } }, Transactions = new[] { new { Name = data.GetSetting <string>("TransactionName"), Date_Created = DateTime.UtcNow.ToString(), Parameters = new [] { new { Name = "Ident_short", Value = (PaymentType)data.Data.Payment == PaymentType.CHEQUE ? (dynamic)"Cheque" : (dynamic)"Bank Transfer" }, new { Name = "Value", Value = data.Data.PrizeValue }, new { Name = "Q1", Value = data.Data.AccountNumber }, new { Name = "Q2", Value = data.Data.SortCode }, new { Name = "Q15", Value = data.Data.ParticipationId } } } }, LegalTextVersions = new[] { new { LegalTextName = data.Data.PrivacyPolicyTextName, Version = data.Data.PrivacyPolicyVersion, Created = data.Data.PrivacyPolicyCreation } } }; return(JsonConvert.SerializeObject(participation)); }
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); }