Esempio n. 1
0
        private void RunCampaignWithInProgress(CoreCampaignSchema campaignSchema,
                                               CampaignSchemaExecutionStrategy strategy, DateTime scheduledFireTime)
        {
            var campaignStatusId = GetCampaignStatusId(campaignSchema.EntityId);

            if (campaignStatusId == CampaignConsts.RunCampaignStatusId)
            {
                SetCampaignInProgress(campaignSchema.EntityId, true, null);
                RunCampaign(campaignSchema, strategy, scheduledFireTime);
            }
        }
Esempio n. 2
0
 private void RunCampaign(CoreCampaignSchema campaignSchema,
                          CampaignSchemaExecutionStrategy schemaGeneratorStrategy, DateTime scheduledFireTime)
 {
     try {
         DateTime?stopDate       = GetScheduledStopDate(campaignSchema.EntityId);
         var      latenessConfig = CampaignTimeScheduler.GetLatenessConfig(campaignSchema, scheduledFireTime);
         LogMisfiredRun(campaignSchema, latenessConfig, scheduledFireTime);
         if (stopDate <= DateTime.UtcNow)
         {
             LogAction(campaignSchema.EntityId, CampaignConsts.CampaignLogTypeStoppedBySchedule);
         }
         if (latenessConfig.Lateness == CampaignExecutionLateness.CriticalAndMisfiredTimeConditionElements ||
             stopDate <= DateTime.UtcNow)
         {
             CampaignEventFacade.Finalize(_userConnection, campaignSchema);
             CampaignEventFacade.Stop(_userConnection, campaignSchema);
             return;
         }
         if (latenessConfig.Lateness == CampaignExecutionLateness.NoMisfire)
         {
             campaignSchema.CampaignConfiguration["ScheduledUtcFireTime"] = scheduledFireTime;
             var config = new CampaignExecutionConfig {
                 CurrentFireTime   = scheduledFireTime,
                 ExecutionStrategy = schemaGeneratorStrategy
             };
             CampaignEngine.Run(campaignSchema, config);
         }
         else
         {
             scheduledFireTime = DateTime.UtcNow;
         }
     } catch (Exception e) {
         string message = CampaignHelper.GetLczStringValue(nameof(CampaignJobExecutor), "ExecutionException");
         Logger.Error(message, e);
     }
     TryScheduleNextJob(campaignSchema, scheduledFireTime);
 }