/// <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(); }
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; } }
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); }