Esempio n. 1
0
        public void ScheduleRabbitMQMessages()
        {
            foreach (var scheduledMessage in _scheduledMessagesRetriever.GetScheduledMessages(true))
            {
                if (!scheduledMessage.MessageRuns.Any(mr => !mr.SendAttemptTime.HasValue))
                {
                    DateTimeOffset lastRunTime;

                    if (scheduledMessage.MessageRuns.Any())
                    {
                        lastRunTime = scheduledMessage.MessageRuns.Max(mr => mr.SendAttemptTime.Value);
                    }
                    else
                    {
                        lastRunTime = scheduledMessage.EffectiveDate;
                    }

                    var cronExpression = new Quartz.CronExpression(scheduledMessage.CronExpression);
                    cronExpression.TimeZone = TimeZoneInfo.Utc;
                    var nextRunTime = cronExpression.GetTimeAfter(lastRunTime);

                    if (nextRunTime <= DateTimeOffset.UtcNow)
                    {
                        var messageRun = SendMessage(scheduledMessage);

                        _messageRunLogger.LogMessageRun(messageRun);
                    }
                }
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="CronExpression"/> class.
        /// </summary>
        /// <param name="cronExpression">The cron expression.</param>
        public CronExpression(string cronExpression)
        {
            if (Keys.ContainsKey(cronExpression))
            {
                cronExpression = Keys[cronExpression];
            }

            cron = new Quartz.CronExpression(cronExpression);
        }
Esempio n. 3
0
        internal CronTrigger(string expression, Utils.IDateTimeProvider dateTimeProvider) {
            if (expression == null) {
                throw new ArgumentNullException("expression");
            }

            if (dateTimeProvider == null) {
                throw new ArgumentNullException("dateTimeProvider");
            }

            this.cronexpression = new Quartz.CronExpression(expression);
            this.dateTimeProvider = dateTimeProvider;
        }
        /// <summary>
        /// Gets the array of times.
        /// </summary>
        /// <param name="cronExpression">The cron expression.</param>
        /// <returns>IEnumerable&lt;System.Nullable&lt;DateTimeOffset&gt;&gt;.</returns>
        /// <exception cref="ArgumentException">cronExpression</exception>
        public static IEnumerable <DateTimeOffset?> GetArrayOfTimes(string cronExpression)
        {
            if (string.IsNullOrEmpty(cronExpression))
            {
                throw new ArgumentException("cronExpression");
            }
            var result            = new List <DateTimeOffset?>();
            var jobSchedules      = new List <DateTimeOffset>();
            var quartzHelper      = new Quartz.CronExpression(cronExpression);
            var dt                = DateTimeOffset.Now;
            var numberOfDays      = 0;
            var numberOfSchedules = 30;
            var restrictToDays    = 20;

            while (numberOfDays <= restrictToDays)
            {
                var nextScheduledJob = quartzHelper.GetNextValidTimeAfter(dt);

                if (nextScheduledJob != null)
                {
                    dt = nextScheduledJob.Value;
                    if (result.Count != 0)
                    {
                        var lastDate = result.Last();
                        var diff     = dt.Day - lastDate.Value.Day;
                        if (diff >= 1)
                        {
                            numberOfDays++;
                        }
                    }
                    result.Add(nextScheduledJob.GetValueOrDefault().ToLocalTime());
                    if (result.Count() == numberOfSchedules)
                    {
                        break;
                    }
                }
            }
            return(result);
        }
Esempio n. 5
0
        public JsonResult CalcRunTime(string CronExpression)
        {
            Quartz.CronExpression e = new Quartz.CronExpression(CronExpression);

            List <string>  results  = new List <string>();
            DateTimeOffset dto      = DateTimeOffset.Now;
            DateTimeOffset?lastfire = dto;

            for (int i = 0; i < 5 && lastfire != null; i++)
            {
                lastfire = e.GetNextValidTimeAfter(lastfire.Value);
                if (lastfire != null)
                {
                    results.Add(lastfire.Value.ToLocalTime().ToString("yyyy/MM/dd HH:mm:ss"));
                }
            }
            results = results.Take(5).ToList();
            while (results.Count < 5)
            {
                results.Add("");
            }
            return(Json(results, JsonRequestBehavior.AllowGet));
        }
Esempio n. 6
0
        /// <summary>
        /// Tests this instance.
        /// </summary>
        public static void Create()
        {
            const string  file = ".\\Cron Schedule Helper.md";
            StringBuilder sb   = new StringBuilder();

            foreach (var p in GetValues())
            {
                DateTime now = DateTime.Now.ToUniversalTime();
                try
                {
                    Quartz.CronExpression expr = new Quartz.CronExpression(p);
                    var value = expr.GetNextValidTimeAfter(now);

                    sb.AppendLine(p.PadRight(32) + "\t" +
                                  ExpressionDescriptor.GetDescription(p));
                }
                catch (Exception)
                {
                    continue;
                }
            }

            File.WriteAllText(file, sb.ToString());
        }