Example #1
0
        void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target)
        {
            switch (connectionId)
            {
            case 1:
                this.DlgOverdue = ((PNotes.NET.WndOverdue)(target));

            #line 16 "..\..\WndOverdue.xaml"
                this.DlgOverdue.Loaded += new System.Windows.RoutedEventHandler(this.DlgOverdue_Loaded);

            #line default
            #line hidden
                return;

            case 2:
                this.grdOverdue = ((System.Windows.Controls.ListView)(target));

            #line 24 "..\..\WndOverdue.xaml"
                this.grdOverdue.MouseDoubleClick += new System.Windows.Input.MouseButtonEventHandler(this.grdOverdue_MouseDoubleClick);

            #line default
            #line hidden

            #line 24 "..\..\WndOverdue.xaml"
                this.grdOverdue.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.grdOverdue_SelectionChanged);

            #line default
            #line hidden
                return;

            case 3:
                this.brdHost = ((System.Windows.Controls.Border)(target));
                return;

            case 4:
                this.cmdOK = ((System.Windows.Controls.Button)(target));

            #line 36 "..\..\WndOverdue.xaml"
                this.cmdOK.Click += new System.Windows.RoutedEventHandler(this.cmdOK_Click);

            #line default
            #line hidden
                return;
            }
            this._contentLoaded = true;
        }
Example #2
0
        private void checkOverdueNotes()
        {
            try
            {
                if (!PNStatic.Settings.Schedule.TrackOverdue) return;
                if (PNSingleton.Instance.InOverdueChecking) return;
                PNSingleton.Instance.InOverdueChecking = true;
                var now = DateTime.Now;
                var list = new List<PNote>();
                var days = 0;

                var notes = PNStatic.Notes.Where(n => n.Schedule.Type != ScheduleType.None && n.Schedule.Track);
                foreach (var n in notes)
                {
                    DateTime start, alarmDate, startDate;
                    long seconds;
                    var changeZone = n.Schedule.TimeZone != TimeZoneInfo.Local;

                    switch (n.Schedule.Type)
                    {
                        case ScheduleType.Once:
                            alarmDate = changeZone
                                ? TimeZoneInfo.ConvertTime(n.Schedule.AlarmDate, TimeZoneInfo.Local, n.Schedule.TimeZone)
                                : n.Schedule.AlarmDate;
                            if (now > alarmDate)
                            {
                                list.Add(n);
                            }
                            break;
                        case ScheduleType.EveryDay:
                            alarmDate = changeZone
                                ? TimeZoneInfo.ConvertTime(n.Schedule.AlarmDate, TimeZoneInfo.Local, n.Schedule.TimeZone)
                                : n.Schedule.AlarmDate;
                            if ((n.Schedule.LastRun == DateTime.MinValue || n.Schedule.LastRun <= now.AddDays(-1))
                                && now.IsTimeMore(alarmDate))
                            {
                                list.Add(n);
                            }
                            break;
                        case ScheduleType.After:
                            start = n.Schedule.StartFrom == ScheduleStart.ExactTime
                                ? (changeZone
                                    ? TimeZoneInfo.ConvertTime(n.Schedule.StartDate, TimeZoneInfo.Local,
                                        n.Schedule.TimeZone)
                                    : n.Schedule.StartDate)
                                : PNStatic.StartTime;
                            PNStatic.NormalizeStartDate(ref start);
                            seconds = (now - start).Ticks / TimeSpan.TicksPerSecond;
                            if (seconds > n.Schedule.AlarmAfter.TotalSeconds)
                            {
                                list.Add(n);
                            }
                            break;
                        case ScheduleType.RepeatEvery:
                            if (n.Schedule.LastRun == DateTime.MinValue)
                            {
                                start = n.Schedule.StartFrom == ScheduleStart.ExactTime
                                    ? (changeZone
                                        ? TimeZoneInfo.ConvertTime(n.Schedule.StartDate, TimeZoneInfo.Local,
                                            n.Schedule.TimeZone)
                                        : n.Schedule.StartDate)
                                    : PNStatic.StartTime;
                            }
                            else
                            {
                                start = n.Schedule.LastRun;
                            }
                            PNStatic.NormalizeStartDate(ref start);
                            seconds = (now - start).Ticks / TimeSpan.TicksPerSecond;
                            if (seconds > n.Schedule.AlarmAfter.TotalSeconds)
                            {
                                list.Add(n);
                            }
                            break;
                        case ScheduleType.Weekly:
                            alarmDate = changeZone
                                ? TimeZoneInfo.ConvertTime(n.Schedule.AlarmDate, TimeZoneInfo.Local, n.Schedule.TimeZone)
                                : n.Schedule.AlarmDate;
                            var dayMin = n.Schedule.Weekdays.Min();
                            // if schedule has not been triggered yet
                            if (n.Schedule.LastRun == DateTime.MinValue
                                &&
                                (now.DayOfWeek > dayMin ||
                                 (now.DayOfWeek == dayMin && now.IsTimeMore(alarmDate))))
                            {
                                list.Add(n);
                            }
                            // else
                            else if (now > n.Schedule.LastRun.AddDays(-1))
                            {
                                var diffDays = (int)Math.Floor((now - n.Schedule.LastRun).TotalDays);
                                if (n.Schedule.Weekdays.Count == 1)
                                {
                                    days = 7;
                                }
                                else
                                {
                                    for (var i = 0; i < n.Schedule.Weekdays.Count; i++)
                                    {
                                        if (n.Schedule.Weekdays[i] != now.DayOfWeek) continue;
                                        if (i == n.Schedule.Weekdays.Count - 1)
                                            days =
                                                Math.Abs((int)n.Schedule.Weekdays[0] - (int)n.Schedule.Weekdays[i]);
                                        else
                                            days = (int)n.Schedule.Weekdays[i + 1] - (int)n.Schedule.Weekdays[i];
                                        break;
                                    }
                                }
                                if (diffDays > days)
                                {
                                    list.Add(n);
                                }
                                else if (diffDays == days)
                                {
                                    if (now.IsTimeMore(alarmDate))
                                    {
                                        list.Add(n);
                                    }
                                }
                            }
                            break;
                        case ScheduleType.MonthlyDayOfWeek:
                            // if schedule has not been triggered yet
                            if (n.Schedule.LastRun == DateTime.MinValue)
                            {
                                alarmDate = changeZone
                                    ? TimeZoneInfo.ConvertTime(n.Schedule.AlarmDate, TimeZoneInfo.Local,
                                        n.Schedule.TimeZone)
                                    : n.Schedule.AlarmDate;
                                startDate = changeZone
                                    ? TimeZoneInfo.ConvertTime(n.Schedule.StartDate, TimeZoneInfo.Local,
                                        n.Schedule.TimeZone)
                                    : n.Schedule.StartDate;
                                if (now.DayOfWeek == n.Schedule.MonthDay.WeekDay)
                                {
                                    var isLast = false;
                                    var ordinal = PNStatic.WeekdayOrdinal(now, n.Schedule.MonthDay.WeekDay, ref isLast);
                                    if (n.Schedule.MonthDay.OrdinalNumber == DayOrdinal.Last)
                                    {
                                        if (isLast)
                                        {
                                            if (now.IsTimeMore(alarmDate))
                                            {
                                                list.Add(n);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        if ((int)n.Schedule.MonthDay.OrdinalNumber == ordinal)
                                        {
                                            if (now.IsTimeMore(alarmDate))
                                            {
                                                list.Add(n);
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    if (weekdayOccured(startDate, now.AddDays(-1),
                                        n.Schedule.MonthDay.WeekDay, n.Schedule.MonthDay.OrdinalNumber))
                                    {
                                        list.Add(n);
                                    }
                                }
                            }
                            else
                            {
                                if (weekdayOccured(n.Schedule.LastRun.AddDays(1), now, n.Schedule.MonthDay.WeekDay,
                                    n.Schedule.MonthDay.OrdinalNumber))
                                {
                                    list.Add(n);
                                }
                            }
                            break;
                        case ScheduleType.MonthlyExact:
                            alarmDate = changeZone
                                ? TimeZoneInfo.ConvertTime(n.Schedule.AlarmDate, TimeZoneInfo.Local,
                                    n.Schedule.TimeZone)
                                : n.Schedule.AlarmDate;
                            startDate = changeZone
                                ? TimeZoneInfo.ConvertTime(n.Schedule.StartDate, TimeZoneInfo.Local,
                                    n.Schedule.TimeZone)
                                : n.Schedule.StartDate;
                            // if schedule has not been triggered yet
                            if (n.Schedule.LastRun == DateTime.MinValue)
                            {
                                // if now is exactly the day
                                if (now.Day == alarmDate.Day)
                                {
                                    if (now.IsTimeMore(alarmDate))
                                    {
                                        list.Add(n);
                                    }
                                }
                                else
                                {
                                    // check for day occurence
                                    if (dayOcurred(startDate, now.AddDays(-1), alarmDate.Day))
                                    {
                                        list.Add(n);
                                    }
                                }
                            }
                            else
                            {
                                // check for day occurence
                                if (dayOcurred(n.Schedule.LastRun, now, alarmDate.Day))
                                {
                                    list.Add(n);
                                }
                            }
                            break;
                        case ScheduleType.MultipleAlerts:
                            foreach (var ma in n.Schedule.MultiAlerts.Where(a => !a.Raised))
                            {
                                alarmDate = changeZone
                                    ? TimeZoneInfo.ConvertTime(ma.Date, TimeZoneInfo.Local,
                                        n.Schedule.TimeZone)
                                    : ma.Date;
                                if (now <= alarmDate) continue;
                                list.Add(n);
                                break;
                            }
                            break;
                    }
                }
                if (list.Count <= 0) return;
                var dov = new WndOverdue(list);
                dov.ShowDialog();
            }
            catch (Exception ex)
            {
                PNStatic.LogException(ex);
            }
            finally
            {
                PNSingleton.Instance.InOverdueChecking = false;
            }
        }
Example #3
0
 void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
     switch (connectionId)
     {
     case 1:
     this.DlgOverdue = ((PNotes.NET.WndOverdue)(target));
     
     #line 16 "..\..\WndOverdue.xaml"
     this.DlgOverdue.Loaded += new System.Windows.RoutedEventHandler(this.DlgOverdue_Loaded);
     
     #line default
     #line hidden
     return;
     case 2:
     this.grdOverdue = ((System.Windows.Controls.ListView)(target));
     
     #line 24 "..\..\WndOverdue.xaml"
     this.grdOverdue.MouseDoubleClick += new System.Windows.Input.MouseButtonEventHandler(this.grdOverdue_MouseDoubleClick);
     
     #line default
     #line hidden
     
     #line 24 "..\..\WndOverdue.xaml"
     this.grdOverdue.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.grdOverdue_SelectionChanged);
     
     #line default
     #line hidden
     return;
     case 3:
     this.brdHost = ((System.Windows.Controls.Border)(target));
     return;
     case 4:
     this.cmdOK = ((System.Windows.Controls.Button)(target));
     
     #line 36 "..\..\WndOverdue.xaml"
     this.cmdOK.Click += new System.Windows.RoutedEventHandler(this.cmdOK_Click);
     
     #line default
     #line hidden
     return;
     }
     this._contentLoaded = true;
 }