Beispiel #1
0
        private static void InputChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            var m = (sender) as Model;

            m.Triggers.Clear();

            TextToScheduleResults results = null;

            TextToScheduleFactory parserFactory = new TextToScheduleFactory();
            var englishParser = parserFactory.CreateEnglishParser();
            var germanParser  = parserFactory.CreateGermanParser();
            var spanishParser = parserFactory.CreateSpanishParser();

            ITextToSchedule textToSchedule = new MultiTextToSchedule(
                parserFactory.CreateEnglishParser(),
                parserFactory.CreateGermanParser(),
                parserFactory.CreateSpanishParser(),
                parserFactory.CreateCronParser());

            string text = m.Input;

            results = textToSchedule.Parse(text, m.TimeZone);

            if (results != null)
            {
                List <DateTimeOffset> list = new List <DateTimeOffset>();

                foreach (var groups in results.RegisterGroups)
                {
                    var trigger = (IOperableTrigger)groups.TriggerBuilder.Build();

                    var dates = TriggerUtils.ComputeFireTimes(trigger, groups.Calendar, MaxResultsToReturn);

                    foreach (var d in dates)
                    {
                        list.Add(TimeZoneUtil.ConvertTime(d, m.TimeZone));
                    }
                }

                //sort the list
                list.Sort();

                foreach (var item in list.Take(MaxResultsToReturn))
                {
                    m.Triggers.Add(item.ToString("ddd, MM/dd/yyyy hh:mm:ss tt (zzz)"));
                }
            }
        }