コード例 #1
0
        /// <summary>
        /// Stößt ein Backup der SQLite-Datenbank an, wenn Voraussetzungen erfüllt sind.
        /// </summary>
        /// <param name="sender"></param>
        void DatabaseBackupTrigger(object sender)
        {
            // Backup nur, wenn Weitersendung nicht kritisch ist (Tagsüber, in der Woche, wenn kein Feiertag ist):
            bool isDayTime = (DateTime.Now.Hour > 8);

            if (!isDayTime)
            {
                return;
            }
            bool isWorkDay = (DateTime.Now.DayOfWeek != DayOfWeek.Saturday && DateTime.Now.DayOfWeek != DayOfWeek.Sunday);

            if (!isWorkDay)
            {
                return;
            }
            bool isHolyDay = HelperClass.Feiertage(DateTime.Now).Contains(DateTime.Now.Date);

            if (isHolyDay)
            {
                return;
            }

            var t = System.Threading.Tasks.Task.Run(() => Sql.BackupDatabase());

            t.Wait();
        }
コード例 #2
0
        private void UpdateCalendarHolidays()
        {
            DateTime selectedDate = (DateTime)Cal_DatePicker.SelectedDate;

            if (selectedDate == null)
            {
                return;
            }

            List <DateTime> Holidays = HelperClass.Feiertage(selectedDate);

            //An Wochenenden und Feiertagen den ganzen Tag vorbelegen.
            if (Holidays.Contains(selectedDate) || selectedDate.DayOfWeek == DayOfWeek.Saturday || selectedDate.DayOfWeek == DayOfWeek.Sunday)
            {
                Cal_TimeFrom.SelectedIndex = 0;
                Cal_TimeTo.SelectedIndex   = Cal_TimeTo.Items.Count - 1;
            }
            else
            {
                Cal_TimeFrom.SelectedIndex = 17;
                Cal_TimeTo.SelectedIndex   = 7;
            }
        }
コード例 #3
0
        private void CreateNewServiceWeek()
        {
            Sql      sql = new Sql();
            DateTime StartDate;
            int      durationDays = 7; //Tage Bereitschaftsdienst

            try
            {
                StartDate = (DateTime)Cal_DatePicker.SelectedDate;
            }
            catch (ArgumentOutOfRangeException)
            {
                return;
            }

            Cal_DatePicker.SelectedDate = StartDate.AddDays(durationDays + 1);

            string Personal = Cal_ComboBox_Personal.SelectedValue.ToString();
            uint   personId = sql.GetIdFromEntry("Persons", "Name", Personal);

            //Welches Sendemedium?
            MessageType sendType;

            if ((bool)Cal_SendViaSMS_CheckBox.IsChecked)
            {
                sendType = ((bool)Cal_SendViaEmail_CheckBox.IsChecked) ? MessageType.SentToEmailAndSMS : MessageType.SentToSms;
            }
            else
            {
                sendType = ((bool)Cal_SendViaEmail_CheckBox.IsChecked) ? MessageType.SentToEmail : MessageType.NoCategory;
            }

            DateTime date = StartDate.AddDays(DayOfWeek.Monday - StartDate.DayOfWeek).Date;

            //MessageBox.Show("StartDate=" + date.ToLongDateString());

            List <DateTime> holidays = HelperClass.Feiertage(date);

            // Jahreswechsel?
            if (date.Year != date.AddDays(durationDays).Year)
            {
                holidays.AddRange(HelperClass.Feiertage(date.AddDays(durationDays)));
            }

            int      endHour = NightShiftEndHour;
            DateTime StartTime;
            DateTime EndTime;

            for (int numDay = 0; numDay < durationDays; numDay++)
            {
                int startHour;
                if (holidays.Contains(date) || date.DayOfWeek == DayOfWeek.Saturday || date.DayOfWeek == DayOfWeek.Sunday)
                {
                    startHour = NightShiftEndHour; //Start = Ende Vortag.
                }
                else
                {
                    if (date.DayOfWeek == DayOfWeek.Friday)
                    {
                        startHour = NightShiftStartHourFriday;
                    }
                    else
                    {
                        startHour = NightShiftStartHour;
                    }
                }

                StartTime = date.AddHours(startHour);
                EndTime   = date.AddDays(1).AddHours(endHour);

                sql.CreateShift(personId, StartTime, EndTime, sendType);


                date = date.AddDays(1);
            }

            string message = "Neue Bereitschaftswoche für \r\n\r\n[" +
                             personId + "] " + Personal +
                             "\r\nvon\t\t" + date.AddDays(-durationDays).ToString("dd.MM.yyyy") +
                             "\r\nbis\t\t" + date.ToString("dd.MM.yyyy");

            switch (sendType)
            {
            case MessageType.SentToSms:
                message += "\r\n\n Benachrichtigungen per SMS.";
                break;

            case MessageType.SentToEmail:
                message += "\r\n\n Benachrichtigungen per Email.";
                break;

            case MessageType.SentToEmailAndSMS:
                message += "\r\n\n Benachrichtigungen per SMS und Email.";
                break;

            default:
                message += "\r\n\n Benachrichtigungsweg nicht festgelegt.";
                break;
            }

            MessageBox.Show(message, "Neue Schicht", MessageBoxButton.OK, MessageBoxImage.Information);
            Log.Write(Log.Type.Calendar, message);

            LoadShiftsToNightShiftClass();
            BlackOutCalenderDays(true);
        }