Example #1
0
        private bool CanProcessSingleRunTimerInCampaign(CampaignTimerElement timer,
                                                        CampaignTimeParameters campaignParameter)
        {
            if (timer.ExpressionType != Core.Process.StartTimerEventExpresionType.SingleRun)
            {
                return(true);
            }
            var isLessThanNow = new Func <CampaignTimerElement, bool>(
                (t) => {
                return(t.StartDateTimeUtc < DateTime.UtcNow);
            });
            var isLessThanScheduledStart = new Func <CampaignTimerElement, CampaignTimeParameters, bool>(
                (t, c) => {
                return(c.ScheduledStartModeId == CampaignConsts.CampaingSpecifiedTimeModeId &&
                       t.StartDateTimeUtc < c.ScheduledStartDate);
            });
            var isGreaterThanScheduledStop = new Func <CampaignTimerElement, CampaignTimeParameters, bool>(
                (t, c) => {
                return(c.ScheduledStopModeId == CampaignConsts.CampaingSpecifiedTimeModeId &&
                       t.StartDateTimeUtc > c.ScheduledStopDate);
            });

            if (isLessThanNow(timer) || isLessThanScheduledStart(timer, campaignParameter) ||
                isGreaterThanScheduledStop(timer, campaignParameter))
            {
                return(false);
            }
            return(true);
        }
Example #2
0
        private bool CanProcessTimerPeriodInCampaign(CampaignTimerElement timer,
                                                     CampaignTimeParameters campaignParameter)
        {
            var isStartTimeGreaterThanScheduledStop = new Func <CampaignTimerElement, CampaignTimeParameters, bool>(
                (t, c) => {
                return(t.UseStartDateTime && c.ScheduledStopModeId == CampaignConsts.CampaingSpecifiedTimeModeId &&
                       t.StartDateTimeUtc > c.ScheduledStopDate);
            });
            var isEndDateLessThanNow = new Func <CampaignTimerElement, CampaignTimeParameters, bool>(
                (t, c) => {
                return(t.UseEndDateTime && t.EndDateTimeUtc < DateTime.UtcNow);
            });
            var isEndDateTimeLessThanScheduledStart = new Func <CampaignTimerElement, CampaignTimeParameters, bool>(
                (t, c) => {
                return(t.UseEndDateTime && c.ScheduledStartModeId == CampaignConsts.CampaingSpecifiedTimeModeId &&
                       t.EndDateTimeUtc < c.ScheduledStartDate);
            });

            if (isStartTimeGreaterThanScheduledStop(timer, campaignParameter) ||
                isEndDateLessThanNow(timer, campaignParameter) ||
                isEndDateTimeLessThanScheduledStart(timer, campaignParameter))
            {
                return(false);
            }
            return(true);
        }
Example #3
0
 /// <summary>
 /// Constructor for <see cref="CampaignTimerElement"/>.
 /// </summary>
 /// <param name="source">Instance of <see cref="CampaignTimerElement"/>.</param>
 /// <param name="dictToRebind">Dictionary to rebind schema elements' ids.</param>
 /// <param name="parentSchema">Parent campaign schema.</param>
 public CampaignTimerElement(CampaignTimerElement source, Dictionary <Guid, Guid> dictToRebind,
                             Core.Campaign.CampaignSchema parentSchema) : base(source, dictToRebind, parentSchema)
 {
     ExpressionType   = source.ExpressionType;
     StartDateTime    = source.StartDateTime;
     UseStartDateTime = source.UseStartDateTime;
     EndDateTime      = source.EndDateTime;
     UseEndDateTime   = source.UseEndDateTime;
     PeriodStartTime  = source.PeriodStartTime;
     PeriodEndTime    = source.PeriodEndTime;
     ExactTime        = source.ExactTime;
     UseExactTime     = source.UseExactTime;
     CronExpression   = source.CronExpression?.Clone() as CronExpression
                        ?? new CronExpression(DefaultCronExpression);
     UseCustomTimeZone = source.UseCustomTimeZone;
     if (source.TimeZoneOffset != null)
     {
         TimeZoneOffset = TimeZoneInfo.FromSerializedString(source.TimeZoneOffset.ToSerializedString());
     }
 }
Example #4
0
 /// <summary>
 /// Constructor for <see cref="CampaignTimerElement"/>.
 /// </summary>
 /// <param name="source">Instance of <see cref="CampaignTimerElement"/>.</param>
 public CampaignTimerElement(CampaignTimerElement source)
     : this(source, null, null)
 {
 }
Example #5
0
 private bool CanProcessTimerInCampaign(CampaignTimerElement timer, CampaignTimeParameters campaignParameter)
 {
     return(CanProcessSingleRunTimerInCampaign(timer, campaignParameter) &&
            CanProcessTimerPeriodInCampaign(timer, campaignParameter));
 }