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); }
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); }
/// <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()); } }
/// <summary> /// Constructor for <see cref="CampaignTimerElement"/>. /// </summary> /// <param name="source">Instance of <see cref="CampaignTimerElement"/>.</param> public CampaignTimerElement(CampaignTimerElement source) : this(source, null, null) { }
private bool CanProcessTimerInCampaign(CampaignTimerElement timer, CampaignTimeParameters campaignParameter) { return(CanProcessSingleRunTimerInCampaign(timer, campaignParameter) && CanProcessTimerPeriodInCampaign(timer, campaignParameter)); }