public async Task <object> RetryParticipationSyncImmediately(
            CrmData data,
            CrmConfiguration 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 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);
        }
        public DynamicsSyncAgent(CrmConfiguration configuration, HttpClient crmClient, string crmBaseUrl)
        {
            _configurationId = configuration.msk12_configurationid;
            _oneRosterApiUrl = configuration.msk12_apiurl;
            _oneRosterKey    = configuration.msk12_consumerkey;
            _oneRosterSecret = configuration.msk12_consumersecret;
            _lastSyncDate    = configuration.msk12_lastsyncdate;

            _crmClient = crmClient;
            _crmApiUrl = crmBaseUrl;
        }
        public ConsumerProvider()
        {
            Configuration = new CrmConfiguration();

            // Consumer endpoint configuration
            Configuration.Settings.ConsumerBaseUrl   = ProCampaignConstants.ConsumerAPI.BaseUrl;
            Configuration.Settings.ParticipationPath = ProCampaignConstants.ConsumerAPI.ParticipationPath;

            // API endpoint configuration
            Configuration.Settings.DocumentBaseUrl = ProCampaignConstants.DocumentAPI.BaseUrl;
            Configuration.Settings.DocumentPath    = $"{ProCampaignConstants.DocumentAPI.DocumentPath}/" +
                                                     $"{ProCampaignConstants.DocumentAPI.DefaultListName}/" +
                                                     $"{ProCampaignConstants.DocumentAPI.DefaultDocumentName}";
            Configuration.Settings.InternationalApiKey = $"{ProCampaignConstants.DocumentAPI.InternationalApiKey}";
        }
 public async Task DelayedParticipationRetrySync(
     CrmData data,
     CrmConfiguration 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,
            CrmConfiguration requestWideSettings,
            CronEnum occurence,
            bool requestConsumerId = false)
        {
            var frequency = MapjobFrequency(occurence);

            await Task.Run(() => RecurringJob.AddOrUpdate <ICrmConsumerProvider>(
                               iCrmProvider =>
                               iCrmProvider.CreateParticipationAsync(
                                   data,
                                   requestWideSettings,
                                   requestConsumerId),
                               frequency));
        }
        private void UpdateLastSyncDate()
        {
            var record = new CrmConfiguration
            {
                msk12_configurationid = _configurationId,
                msk12_lastsyncdate    = DateTime.UtcNow
            };

            var request = new HttpRequestMessage(new HttpMethod("Patch"), new Uri($"{_crmApiUrl}{CrmConfiguration.EntitySetName}({record.msk12_configurationid})"));

            request.Headers.Add("OData-MaxVersion", "4.0");
            request.Headers.Add("OData-Version", "4.0");
            request.Headers.Add("If-Match", "*");
            request.Content = new StringContent(record.ToJson(), Encoding.UTF8, "application/json");

            var response = _crmClient.SendAsync(request);

            if (response.Result.StatusCode != System.Net.HttpStatusCode.OK &&
                response.Result.StatusCode != System.Net.HttpStatusCode.NoContent)
            {
                throw new Exception(response.Result.ToString());
            }
        }
Exemple #8
0
 public CrmService(IOptions <CrmConfiguration> crmConfiguration, TokenService tokenService)
 {
     _crmConfiguration = crmConfiguration.Value;
     _tokenService     = tokenService;
 }
Exemple #9
0
 public TokenService(IOptions <CrmConfiguration> crmConfiguration)
 {
     _crmConfiguration = crmConfiguration.Value;
 }