1461 lines
51 KiB
C#
1461 lines
51 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.ComponentModel;
|
|
using System.Globalization;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Threading;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Markup;
|
|
using System.Windows.Media;
|
|
using System.Windows.Threading;
|
|
|
|
using BeWo.Core;
|
|
using BeWo.Core.Config;
|
|
using BeWo.ServiceProxy;
|
|
using BeWo.View;
|
|
using BeWo.View.Detail;
|
|
using BeWo.View.Navigation;
|
|
using BeWo.View.Navigation.Filter;
|
|
|
|
using BS.Shared;
|
|
using BS.Shared.DataContracts;
|
|
using BS.Shared.DataContracts.Compact;
|
|
using BS.Shared.Extensions;
|
|
using BS.Shared.Core;
|
|
|
|
using ChatController.HauptKlassen;
|
|
using DevExpress.Xpf.Core;
|
|
using DevExpress.Xpf.Grid;
|
|
using DevExpress.XtraScheduler;
|
|
using System.ServiceModel;
|
|
|
|
namespace BeWo
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for App.xaml
|
|
/// </summary>
|
|
public partial class BeWoApp : INotifyPropertyChanged
|
|
{
|
|
private static DebugMessageLogView _DebugMessageLogView;
|
|
|
|
|
|
private static FrameworkElement _lockedContent;
|
|
|
|
public static LoginControl LoginControl;
|
|
|
|
public static MainControl MainControl;
|
|
public static string ShortVersion = "3.22";
|
|
public static string Version = "Version 3.22 TEST";
|
|
|
|
public static int RenderTier = 0;
|
|
|
|
internal static string IpAddress = string.Empty;
|
|
|
|
internal static string Tenant = string.Empty;
|
|
|
|
internal static string ServerName = string.Empty;
|
|
|
|
internal static string UserName = string.Empty;
|
|
|
|
internal static string UserPassword = string.Empty;
|
|
|
|
internal static string TwoFactorPin = string.Empty;
|
|
|
|
internal static string chatServerURL = string.Empty;
|
|
|
|
private static AppSettings _AppSettings;
|
|
|
|
private static CompactEmployeeDC _CompactLoggedOnEmployee;
|
|
private static EmployeeDC _LoggedOnEmployee;
|
|
|
|
private static UserDC _LoggedOnUser;
|
|
|
|
private static MandatorDC _Mandator;
|
|
private static string _ServerAddress;
|
|
private static int _LockUITime = 30;
|
|
private static List<Window> OpenDevExpressEditForms = new List<Window>();
|
|
|
|
private static DocumentWatcher _DocumentWatcher;
|
|
|
|
internal static PasswortSecurityStrength PasswortStrength;
|
|
|
|
public static BeWoApp CurrentBeWo => Current as BeWoApp;
|
|
|
|
public static Dictionary<string, string> ICD10Diagnosis { get; set; }
|
|
|
|
public static EmployeeDC LoggedOnEmployee
|
|
{
|
|
get => _LoggedOnEmployee;
|
|
|
|
set => _LoggedOnEmployee = value;
|
|
}
|
|
|
|
public static long? LoggedOnEmployeeOid => _LoggedOnEmployee?.EmployeeOid;
|
|
|
|
public static CompactEmployeeDC CompactLoggedOnEmployee
|
|
{
|
|
get => _CompactLoggedOnEmployee;
|
|
|
|
set => _CompactLoggedOnEmployee = value;
|
|
}
|
|
|
|
public ObservableCollection<UserRightType> LoggedOnUsersRights => LoggedOnUser?.GetGrantedRights().ToObservableCollection();
|
|
|
|
public DocumentWatcher DocumentWatcher => _DocumentWatcher ?? (_DocumentWatcher = new DocumentWatcher());
|
|
|
|
public static string ServerAddress
|
|
{
|
|
get => _ServerAddress;
|
|
|
|
set
|
|
{
|
|
//if (_ServerAddress != null && _ServerAddress.Equals(value))
|
|
// return;
|
|
_ServerAddress = value;
|
|
ServiceFacade.UpdateServerAddresses(SiteOfOrigin.ToString());
|
|
}
|
|
}
|
|
|
|
public static AppSettings AppSettings
|
|
{
|
|
get
|
|
{
|
|
if (_AppSettings == null)
|
|
{
|
|
RestoreUserAppSettings();
|
|
}
|
|
|
|
return _AppSettings;
|
|
}
|
|
}
|
|
|
|
internal static UserDC LoggedOnUser
|
|
{
|
|
get => _LoggedOnUser;
|
|
|
|
set
|
|
{
|
|
_LoggedOnUser = value;
|
|
if (_LoggedOnUser != null)
|
|
{
|
|
var settings = _LoggedOnUser.Settings;
|
|
|
|
ServiceFacade.DoEmployeeServiceAsync(s => s.LoadEmployee(value.Employee.EmployeeOid),
|
|
r =>
|
|
{
|
|
_LoggedOnEmployee = r;
|
|
|
|
ServiceFacade.DoEmployeeServiceAsync(s => s.LoadCompactEmployee(value.Employee.EmployeeOid), r2 => { _CompactLoggedOnEmployee = r2; });
|
|
|
|
MainControl?.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() => MainControl.InitOffeneTermine()));
|
|
});
|
|
}
|
|
|
|
CurrentBeWo.FirePropertyChanged("LoggedOnUsersRights");
|
|
}
|
|
}
|
|
|
|
internal static MandatorDC Mandator
|
|
{
|
|
get => _Mandator;
|
|
|
|
set
|
|
{
|
|
_Mandator = value;
|
|
|
|
bool showDatevFields = false;
|
|
bool isServiceRecordNoticeMandatory = true;
|
|
bool isPasswordSecurityActiv = false;
|
|
bool showServiceRecordsDistanceFields = false;
|
|
bool showHilfeplanBezeichnung = false;
|
|
bool showArbeitszeiten = false;
|
|
bool showCustomerDistanceFields = false;
|
|
bool showAdditionalService = false;
|
|
bool showRoundedDurationInEmployeeAnalysis = true;
|
|
bool showTeamNews = false;
|
|
bool showMarker = false;
|
|
bool showAnnualReport = false;
|
|
int maxDaysEditServiceRecordsAllowed = 0;
|
|
int hilfeplanAuslaufAuswahl = 3;
|
|
int anzTageZeiterfassErfolgt = 0;
|
|
int zeiterfassungsSchwellwert = 80;
|
|
bool printerSettingsUseLandscape = false;
|
|
bool printerSettingsUseMargins = false;
|
|
bool printerSettingsUsePaperKind = false;
|
|
var hideServiceRecordInsertedByAndInsertedOn = false;
|
|
bool isEndDateVisible = false;
|
|
bool isOnlyYearMonthVisible = false;
|
|
bool isZeiterfassDateNormal = true;
|
|
int lastSelectedStundenkontoIntervall = 3;
|
|
bool showSignatures = false;
|
|
bool showBetrag = false;
|
|
bool showRtfTextfield = false;
|
|
bool showPivotGrid = false;
|
|
bool showUrlaubsplanung = false;
|
|
bool dontShowSpitzabrechnung = false;
|
|
bool showDienstplanung = false;
|
|
var showEmployeeSignature = false;
|
|
var showMultipleResourceColors = false;
|
|
var showInfoButtonInCalender = false;
|
|
|
|
|
|
|
|
|
|
AppSettings.ShowAdvisedAttendedFlag = false;
|
|
var timeRecordingMenuName = string.Empty;
|
|
|
|
if (_Mandator != null)
|
|
{
|
|
var val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowMedication);
|
|
AppSettings.IsMedicationAllowed = val != null && val.Equals("1");
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowScheduler);
|
|
AppSettings.IsSchedulerAllowed = val != null && val.Equals("1");
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowWohnheime);
|
|
AppSettings.IsWohnheimAllowed = val != null && val.Equals("1");
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowChat);
|
|
AppSettings.ShowOwnChat = val != null && val.Equals("1");
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowOwnChatSettings);
|
|
AppSettings.ShowOwnChatSettings = val != null && val.Equals("1");
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.SetStartTimeToEndTimeAfterSave);
|
|
AppSettings.SetStartTimeToEndTimeAfterSave = val != null && val.Equals("1");
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.IsServiceRecordNoticeMandatory);
|
|
if (val != null && val.Equals("0"))
|
|
{
|
|
isServiceRecordNoticeMandatory = false;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.IsPasswordSecurityActiv);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
isPasswordSecurityActiv = true;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.IsEndDateVisible);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
isEndDateVisible = true;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.IsOnlyYearMonthVisible);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
isOnlyYearMonthVisible = true;
|
|
}
|
|
|
|
AppSettings.EinheitZeiterfassung = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.EinheitZeiterfassung);
|
|
if (String.IsNullOrEmpty(AppSettings.EinheitZeiterfassung))
|
|
{
|
|
AppSettings.EinheitZeiterfassung = "0";
|
|
}
|
|
if (AppSettings.EinheitZeiterfassung == "0")
|
|
{
|
|
AppSettings.LetzteZeiterfassungsDauer = ZeiterfassungsDauer.Minuten;
|
|
}
|
|
else if (AppSettings.EinheitZeiterfassung == "1")
|
|
{
|
|
AppSettings.LetzteZeiterfassungsDauer = ZeiterfassungsDauer.Stunden;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.IsZeiterfassDateNormal);
|
|
if (val != null && val.Equals("0"))
|
|
{
|
|
isZeiterfassDateNormal = false;
|
|
}
|
|
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.MaxDaysEditServiceRecordsAllowed);
|
|
int result;
|
|
if (Int32.TryParse(val, out result))
|
|
{
|
|
maxDaysEditServiceRecordsAllowed = result;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.HilfeplanAuslaufAuswahl);
|
|
int resultplan;
|
|
if (Int32.TryParse(val, out resultplan))
|
|
{
|
|
hilfeplanAuslaufAuswahl = resultplan;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.LastSelectedStundenkontoIntervall);
|
|
int resultinterval;
|
|
if (Int32.TryParse(val, out resultinterval))
|
|
{
|
|
lastSelectedStundenkontoIntervall = resultinterval;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.AnzTageZeiterfassErfolgt);
|
|
int resultzeitplan;
|
|
if (Int32.TryParse(val, out resultzeitplan))
|
|
{
|
|
anzTageZeiterfassErfolgt = resultzeitplan;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ZeiterfassungsSchwellwert);
|
|
int resultschwell;
|
|
if (Int32.TryParse(val, out resultschwell))
|
|
{
|
|
zeiterfassungsSchwellwert = resultschwell;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowDistanceFields);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
showServiceRecordsDistanceFields = true;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowBetrag);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
showBetrag = true;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowHilfeplanBezeichnung);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
showHilfeplanBezeichnung = true;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowArbeitszeiten);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
showArbeitszeiten = true;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowRessources);
|
|
AppSettings.ShowRessources = val != null && val.Equals("1");
|
|
|
|
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowTeamNews);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
showTeamNews = true;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowPivotGrid);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
showPivotGrid = true;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowUrlaubsplanung);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
showUrlaubsplanung = true;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.DontShowSpitzabrechnung);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
dontShowSpitzabrechnung = true;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowDienstplanung);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
showDienstplanung = true;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowWorktime);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
AppSettings.ShowWorktime = true;
|
|
}
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.EnableArbeitszeiterfassung);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
AppSettings.EnableArbeitszeiterfassung = true;
|
|
}
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.EnableAutomaticPauses);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
AppSettings.EnableAutomaticPauses = true;
|
|
}
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.EnableRestTimeWarning);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
AppSettings.EnableRestTimeWarning = true;
|
|
}
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.MaxWorkTimeHoursBeforeWarning);
|
|
int hours;
|
|
if (Int32.TryParse(val, out hours))
|
|
{
|
|
AppSettings.MaxWorkTimeHoursBeforeWarning = hours;
|
|
}
|
|
|
|
var anzahl = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.DienstplanungStandardZeilenAnzahl);
|
|
if (anzahl != null)
|
|
{
|
|
int anzahlInt;
|
|
if (Int32.TryParse(anzahl, out anzahlInt))
|
|
{
|
|
AppSettings.DienstplanungStandardZeilenAnzahl = anzahlInt;
|
|
}
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowMarker);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
showMarker = true;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowAnnualReport);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
showAnnualReport = true;
|
|
}
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowCustomerDistanceFields);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
showCustomerDistanceFields = true;
|
|
}
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowAdditionalService);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
showAdditionalService = true;
|
|
}
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowRoundedDurationInEmployeeAnalysis);
|
|
if (val != null && val.Equals("0"))
|
|
{
|
|
showRoundedDurationInEmployeeAnalysis = false;
|
|
}
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowDatevFields);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
showDatevFields = true;
|
|
}
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.PrinterSettingsUseLandscape);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
printerSettingsUseLandscape = true;
|
|
}
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.PrinterSettingsUseMargins);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
printerSettingsUseMargins = true;
|
|
}
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.PrinterSettingsUsePaperKind);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
printerSettingsUsePaperKind = true;
|
|
}
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.HideServiceRecordInsertedByAndInsertedOn);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
hideServiceRecordInsertedByAndInsertedOn = true;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowSignature);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
showSignatures = true;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowRtfTextfield);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
showRtfTextfield = true;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowEmployeeSignature);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
showEmployeeSignature = true;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowMultipleResourceColors);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
showMultipleResourceColors = true;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowKlientenBetreuungszeiten);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
AppSettings.ShowKlientenBetreuungszeiten = true;
|
|
}
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.FilterGroupServiceCategories);
|
|
if (val != null && val.Equals("0"))
|
|
{
|
|
AppSettings.FilterGroupServiceCategories = false;
|
|
}
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowInfoButtonInCalender);
|
|
if (val != null && val.Equals("1"))
|
|
{
|
|
AppSettings.ShowInfoButtonInCalender = true;
|
|
}
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.AllowStorno);
|
|
AppSettings.AllowStorno = val != null && val.Equals("1");
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.UseDistanceApi);
|
|
AppSettings.UseDistanceApi = val != null && val.Equals("1");
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowHilfeplanStatistikReport);
|
|
AppSettings.ShowHilfeplanStatistikReport = val != null && val.Equals("1");
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowAI);
|
|
AppSettings.ShowAI = val != null && val.Equals("1");
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowAIInternal);
|
|
AppSettings.ShowAIInternal = val != null && val.Equals("1");
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.MoKSessionTimeout);
|
|
if (int.TryParse(val, out var sessionTimeout))
|
|
{
|
|
AppSettings.MoKSessionTimeout = sessionTimeout;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ServiceRecordAllowChangeHours);
|
|
if (val != null)
|
|
{
|
|
_AppSettings.ServiceRecordAllowChangeHours = Convert.ToInt32(val);
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.AllowGkvAbrechnung);
|
|
AppSettings.AllowGkvAbrechnung = val != null && val.Equals("1");
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowWohnhilfe);
|
|
AppSettings.ShowWohnhilfe = val != null && val.Equals("1");
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowImportAbschlagszahlungen);
|
|
AppSettings.ShowImportAbschlagszahlungen = val != null && val.Equals("1");
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowPersehImport);
|
|
AppSettings.ShowPersehImport = val != null && val.Equals("1");
|
|
|
|
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.DontUpdateApprovalPeriodDates);
|
|
AppSettings.DontUpdateApprovalPeriodDates = val != null && val.Equals("1");
|
|
|
|
|
|
switch (_Mandator.BeWoClientType)
|
|
{
|
|
case 1:
|
|
//Die Kette
|
|
showDatevFields = true;
|
|
AppSettings.ShowAdvisedAttendedFlag = true;
|
|
break;
|
|
case 2:
|
|
//Datev
|
|
showDatevFields = true;
|
|
break;
|
|
case 3:
|
|
////Köln Ring
|
|
showDatevFields = true;
|
|
timeRecordingMenuName = "Dokumentation";
|
|
break;
|
|
case 4:
|
|
//Betreuwo
|
|
break;
|
|
|
|
case 5:
|
|
//Kontakt und Krisenhilfe
|
|
AppSettings.ShowLargeCustomerNotice = true;
|
|
break;
|
|
case 6:
|
|
// Nur Jahresbericht
|
|
break;
|
|
case 7:
|
|
//IBP
|
|
showDatevFields = true;
|
|
break;
|
|
case 8:
|
|
//LH Würzburg
|
|
break;
|
|
case 9:
|
|
//Caritas Frankfurt+Aids Hilfe Gießen + Alle mit Korridor (Kostenträger Hessen)
|
|
break;
|
|
case 10:
|
|
//Integra
|
|
showDatevFields = true;
|
|
break;
|
|
case 11:
|
|
//Hannover
|
|
showDatevFields = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
#if DEBUG
|
|
showSignatures = true;
|
|
showCustomerDistanceFields = true;
|
|
showServiceRecordsDistanceFields = true;
|
|
showBetrag = true;
|
|
showPivotGrid = true;
|
|
showArbeitszeiten = true;
|
|
//showMarker = true;
|
|
showUrlaubsplanung = true;
|
|
showDienstplanung = true;
|
|
showHilfeplanBezeichnung = true;
|
|
AppSettings.AllowStorno = true;
|
|
AppSettings.ShowAI = true;
|
|
AppSettings.ShowAIInternal = true;
|
|
AppSettings.ShowWorktime = true;
|
|
AppSettings.ShowPersehImport = true;
|
|
AppSettings.ShowWohnhilfe = true;
|
|
//AppSettings.AllowGkvAbrechnung = true;
|
|
//AppSettings.AllowGkvAbrechnung = false;
|
|
//showInfoButtonInCalender = true;
|
|
#endif
|
|
|
|
AppSettings.ShowDatevFields = showDatevFields;
|
|
AppSettings.IsServiceRecordNoticeMandatory = isServiceRecordNoticeMandatory;
|
|
AppSettings.IsPasswordSecurityActiv = isPasswordSecurityActiv;
|
|
AppSettings.IsEndDateVisible = isEndDateVisible;
|
|
AppSettings.IsOnlyYearMonthVisible = isOnlyYearMonthVisible;
|
|
AppSettings.IsZeiterfassDateNormal = isZeiterfassDateNormal;
|
|
AppSettings.MaxDaysEditServiceRecordsAllowed = maxDaysEditServiceRecordsAllowed;
|
|
AppSettings.HilfeplanAuslaufAuswahl = hilfeplanAuslaufAuswahl;
|
|
AppSettings.LastSelectedStundenkontoIntervall = lastSelectedStundenkontoIntervall;
|
|
AppSettings.AnzTageZeiterfassErfolgt = anzTageZeiterfassErfolgt;
|
|
AppSettings.ZeiterfassungsSchwellwert = zeiterfassungsSchwellwert;
|
|
AppSettings.TimeRecordingMenuName = timeRecordingMenuName;
|
|
AppSettings.ShowDistanceFields = showServiceRecordsDistanceFields;
|
|
AppSettings.ShowBetrag = showBetrag;
|
|
AppSettings.ShowHilfeplanBezeichnung = showHilfeplanBezeichnung;
|
|
AppSettings.ShowArbeitszeiten = showArbeitszeiten;
|
|
AppSettings.ShowSignatures = showSignatures;
|
|
AppSettings.ShowRtfTextfield = showRtfTextfield;
|
|
AppSettings.ShowCustomerDistanceFields = showCustomerDistanceFields;
|
|
AppSettings.ShowAdditionalService = showAdditionalService;
|
|
AppSettings.ShowRoundedDurationInEmployeeAnalysis = showRoundedDurationInEmployeeAnalysis;
|
|
AppSettings.HideServiceRecordInsertedByAndInsertedOn = hideServiceRecordInsertedByAndInsertedOn;
|
|
AppSettings.ShowTeamNews = showTeamNews;
|
|
AppSettings.ShowMarker = showMarker;
|
|
AppSettings.ShowAnnualReport = showAnnualReport;
|
|
AppSettings.PrinterSettingsUseLandscape = printerSettingsUseLandscape;
|
|
AppSettings.PrinterSettingsUseMargins = printerSettingsUseMargins;
|
|
AppSettings.PrinterSettingsUsePaperKind = printerSettingsUsePaperKind;
|
|
AppSettings.ShowPivotGrid = showPivotGrid;
|
|
AppSettings.ShowUrlaubsplanung = showUrlaubsplanung;
|
|
AppSettings.DontShowSpitzabrechnung = dontShowSpitzabrechnung;
|
|
AppSettings.ShowDienstplanung = showDienstplanung;
|
|
AppSettings.ShowEmployeeSignature = showEmployeeSignature;
|
|
AppSettings.ShowMultipleResourceColors = showMultipleResourceColors;
|
|
AppSettings.ShowInfoButtonInCalender = showInfoButtonInCalender;
|
|
|
|
BS.Shared.Settings.ApplicationSettings.SupportConceptExpirationLimitInMonths = AppSettings.HilfeplanAuslaufAuswahl;
|
|
}
|
|
}
|
|
|
|
internal static Uri SiteOfOrigin
|
|
{
|
|
get
|
|
{
|
|
String url = "";
|
|
#if DEBUG
|
|
//url = String.Format("http://localhost:3777/Host");
|
|
if (DebugConfig.CurrentConfig is DebugConfig current && !string.IsNullOrWhiteSpace(DebugConfig.ServerUrl))
|
|
{
|
|
url = DebugConfig.ServerUrl;
|
|
}
|
|
|
|
//return new Uri("https://app5.bewoplaner.de/service");
|
|
//url = String.Format("app1.bewoplaner.de/service");
|
|
#endif
|
|
|
|
if (!String.IsNullOrEmpty(ServerAddress) && String.IsNullOrEmpty(url))
|
|
{
|
|
url = ServerAddress.ToLower();
|
|
}
|
|
|
|
|
|
if (url.IndexOf("localhost") < 0)
|
|
{
|
|
int i;
|
|
|
|
|
|
if (Int32.TryParse(url, out i))
|
|
url = "app" + url;
|
|
|
|
if (url.IndexOf('.') < 0)
|
|
{
|
|
url += ".bewoplaner.de";
|
|
}
|
|
|
|
//if (url.IndexOf("/service45") < 0)
|
|
//{
|
|
// url += "/service45";
|
|
//}
|
|
if (url.IndexOf("/service") < 0)
|
|
{
|
|
url += "/service";
|
|
}
|
|
|
|
return new Uri(String.Format("https://{0}", url));
|
|
}
|
|
return new Uri(url);
|
|
}
|
|
}
|
|
|
|
public static int LockUITime
|
|
{
|
|
get
|
|
{
|
|
var lockTime = _Mandator.Settings.SplitToKeyValuePairList(";", "=").FirstOrDefault(f => f.Key.Equals(SettingsKeys.TimeUntilUILock)).Value;
|
|
|
|
if (_LoggedOnUser != null && lockTime != null)
|
|
{
|
|
return Convert.ToInt32(lockTime);
|
|
}
|
|
|
|
return _LockUITime;
|
|
}
|
|
|
|
set
|
|
{
|
|
_LockUITime = value;
|
|
|
|
if (_LoggedOnUser == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
AutoLockUI.LockUITime = value;
|
|
AutoLockUI.StopTimer();
|
|
AutoLockUI.StartAutoLockUIOption();
|
|
}
|
|
}
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
|
|
public static string GetAndCreateUserAppDataPath()
|
|
{
|
|
try
|
|
{
|
|
string localAppData = Environment.GetFolderPath(
|
|
Environment.SpecialFolder.LocalApplicationData);
|
|
|
|
string companyFilePathBS
|
|
= Path.Combine(localAppData, "beyondSoft");
|
|
string bewoFilePathBS
|
|
= Path.Combine(companyFilePathBS, "BeWoPlaner");
|
|
|
|
string companyFilePathOS
|
|
= Path.Combine(localAppData, "ownSoft");
|
|
|
|
if (!Directory.Exists(companyFilePathOS))
|
|
Directory.CreateDirectory(companyFilePathOS);
|
|
|
|
|
|
string bewoFilePathOS
|
|
= Path.Combine(companyFilePathOS, "BeWoPlaner");
|
|
|
|
if (!Directory.Exists(bewoFilePathOS))
|
|
Directory.CreateDirectory(bewoFilePathOS);
|
|
|
|
//return bewoFilePathBS; // raus
|
|
|
|
CheckOldBSPathAndCopyFiles(bewoFilePathBS, bewoFilePathOS);
|
|
|
|
|
|
return bewoFilePathOS;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show(
|
|
"Fehler beim Anlegen des Anwendungsordners. Sie besitzen nicht die erforderlichen Rechte, bitte wenden Sie sich an Ihren Systemadministrator.\n" +
|
|
ex.Message, "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
|
}
|
|
return Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
|
|
}
|
|
|
|
private static void CheckOldBSPathAndCopyFiles(string companyFilePathBS, string companyFilePathOS)
|
|
{
|
|
if (Directory.Exists(companyFilePathBS))
|
|
{
|
|
var bsFiles = Directory.GetFiles(companyFilePathBS);
|
|
|
|
if (bsFiles.Length > 0)
|
|
{
|
|
var osFiles = Directory.GetFiles(companyFilePathOS);
|
|
if (osFiles.Length == 0)
|
|
{
|
|
foreach (var file in bsFiles)
|
|
{
|
|
File.Move(file, Path.Combine(companyFilePathOS, Path.GetFileName(file)));
|
|
}
|
|
|
|
Directory.Delete(companyFilePathBS);
|
|
}
|
|
|
|
}
|
|
|
|
//var p = Directory.GetParent(companyFilePathBS);
|
|
//Directory.Delete(Directory.GetParent(companyFilePathBS).FullName);
|
|
}
|
|
}
|
|
|
|
internal static bool HasLoggedOnUserRight(UserRightType right)
|
|
{
|
|
#if DEBUG
|
|
bool designTime = DesignerProperties.GetIsInDesignMode(new DependencyObject());
|
|
|
|
if (designTime)
|
|
return true;
|
|
#endif
|
|
|
|
if (LoggedOnUser is null)
|
|
return false;
|
|
|
|
return LoggedOnUser.HasRight(right);
|
|
}
|
|
|
|
internal static bool HasLoggedOnUserRight(UserRightType[] pRight)
|
|
{
|
|
if (LoggedOnUser != null)
|
|
{
|
|
return pRight == null || (pRight.Length == 1 && pRight[0] == UserRightType.None) || LoggedOnUser.GetGrantedRights().Exists(
|
|
right =>
|
|
{
|
|
var rightAsString = pRight.ToString();
|
|
var vals = rightAsString.Split(",");
|
|
|
|
foreach (var urt in pRight)
|
|
{
|
|
if (urt == right)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
});
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
internal static void SaveAppSettings()
|
|
{
|
|
if (_AppSettings != null && _LoggedOnUser != null && _AppSettings.IsDirty)
|
|
{
|
|
_AppSettings.IsDirty = false;
|
|
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.WindowStateType, ((int)_AppSettings.WindowState).ToString(), _LoggedOnUser.Settings);
|
|
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastSelectedServiceRecordTimeInterval, ((int)_AppSettings.LastSelectedServiceRecordTimeInterval).ToString(), _LoggedOnUser.Settings);
|
|
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.CustomerFilterInZeiterfassung, ((int)_AppSettings.CustomerFilterInZeiterfassung).ToString(), _LoggedOnUser.Settings);
|
|
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.CustomerFilterSupportConcepts, ((int)_AppSettings.CustomerFilterSupportConcepts).ToString(), _LoggedOnUser.Settings);
|
|
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.CustomerFilterCustomers, ((int)_AppSettings.CustomerFilterCustomers).ToString(), _LoggedOnUser.Settings);
|
|
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.ShowExpiredSupportConcepts, _AppSettings.ShowExpiredSupportConcepts ? "1" : "0", _LoggedOnUser.Settings);
|
|
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.ShowServiceRecordGridControl, _AppSettings.ShowServiceRecordGridControl ? "1" : "0", _LoggedOnUser.Settings);
|
|
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.StartupPanelMaximized, _AppSettings.StartupPanelMaximized, _LoggedOnUser.Settings);
|
|
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.HideServiceRecordInsertedByAndInsertedOn, _AppSettings.HideServiceRecordInsertedByAndInsertedOn ? "1" : "0", _LoggedOnUser.Settings);
|
|
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.DocumentationFontSize, _AppSettings.DocumentationFontSize.ToString(), _LoggedOnUser.Settings);
|
|
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.ZeigeNurMeineTermine, _AppSettings.ZeigeNurMeineTermine ? "1" : "0", _LoggedOnUser.Settings);
|
|
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastSelectedServiceRecordTimeIntervalDays, _AppSettings.LastSelectedServiceRecordTimeIntervalDays.ToString(), _LoggedOnUser.Settings);
|
|
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastSelectedServiceRecordMonth, _AppSettings.LastSelectedServiceRecordMonth.ToString(), _LoggedOnUser.Settings);
|
|
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastKassenSortOrder, _AppSettings.LastKassenSortOrder.ToString(), _LoggedOnUser.Settings);
|
|
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LetzteZeiterfassungsDauer, ((int)_AppSettings.LetzteZeiterfassungsDauer).ToString(), _LoggedOnUser.Settings);
|
|
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.SchedulerViewType, ((int)_AppSettings.SchedulerViewType).ToString(), _LoggedOnUser.Settings);
|
|
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.SchedulerTimelineViewDayCount, (_AppSettings.SchedulerTimelineViewDayCount).ToString(), _LoggedOnUser.Settings);
|
|
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.SchedulerDayViewDayCount, _AppSettings.SchedulerDayViewDayCount.ToString(), _LoggedOnUser.Settings);
|
|
|
|
string val = string.Empty;
|
|
if (_AppSettings.StartupPanelOrder != null)
|
|
{
|
|
foreach (string item in _AppSettings.StartupPanelOrder)
|
|
{
|
|
if (val.Length > 0)
|
|
{
|
|
val += "|";
|
|
}
|
|
|
|
val += item;
|
|
}
|
|
}
|
|
|
|
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.StartupPanelOrder, val, _LoggedOnUser.Settings);
|
|
|
|
ServiceFacade.DoUserServiceAsync(s => s.UpdateUserSettings(_LoggedOnUser.UserOid.Value, _LoggedOnUser.Settings), ReloadSettings, false);
|
|
}
|
|
}
|
|
|
|
internal static void ShowError(string message, Exception ex, bool showSupportForm, bool showStacktrace)
|
|
{
|
|
if (MainControl != null)
|
|
{
|
|
MainControl.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action) (() =>
|
|
{
|
|
MainControl.EndWaiting();
|
|
UserControl exControl = null;
|
|
if (showSupportForm && BeWoApp.LoggedOnUser != null && BeWoApp.LoggedOnUser.HasRight(BS.Shared.UserRightType.Support_View))
|
|
{
|
|
exControl = new ExceptionMessageBoxWithSupportMail(ex);
|
|
}
|
|
else
|
|
{
|
|
exControl = new ExceptionMessageBox(message, ex, showStacktrace);
|
|
}
|
|
|
|
MainControl.ShowControlAsModalPopup(exControl);
|
|
}));
|
|
}
|
|
else if (LoginControl != null)
|
|
{
|
|
LoginControl.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action) (() => LoginControl.ShowControlAsModalPopUp(new ExceptionMessageBox(message, ex, showStacktrace))));
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show(message + "\n\n" + ex);
|
|
}
|
|
}
|
|
|
|
internal void FirePropertyChanged(string pPropertyName)
|
|
{
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(pPropertyName));
|
|
}
|
|
|
|
public static void InitAutoUILocking()
|
|
{
|
|
EventManager.RegisterClassHandler(typeof(Window), UIElement.PreviewMouseDownEvent, new MouseButtonEventHandler(OnPreviewMouseDown));
|
|
EventManager.RegisterClassHandler(typeof(Window), UIElement.PreviewKeyDownEvent, new KeyEventHandler(OnPreviewKeyDown));
|
|
|
|
var settingsKeyValuePairList = _Mandator.Settings.SplitToKeyValuePairList(";", "=").ToList();
|
|
|
|
var x = settingsKeyValuePairList.FirstOrDefault(f => f.Key.Equals(SettingsKeys.TimeUntilUILock)).Value ?? "NULL";
|
|
|
|
var y = _LockUITime;
|
|
|
|
AutoLockUI.LockUITime = Convert.ToInt32(settingsKeyValuePairList.FirstOrDefault(f => f.Key.Equals(SettingsKeys.TimeUntilUILock)).Value ?? LockUITime.ToString());
|
|
|
|
|
|
AutoLockUI.DoAutoLockUIEvent += AutoLockUIDoAutoLockUIEvent;
|
|
AutoLockUI.StartAutoLockUIOption();
|
|
}
|
|
|
|
protected override void OnStartup(StartupEventArgs e)
|
|
{
|
|
//Licenser.LicenseKey = "DGF20-AUTJ7-3K8MD-DNNA";
|
|
DataControlBase.AllowInfiniteGridSize = true;
|
|
//Timeline.DesiredFrameRateProperty.OverrideMetadata(typeof(Timeline),
|
|
// new FrameworkPropertyMetadata { DefaultValue = 30 });
|
|
|
|
RenderTier = RenderCapability.Tier >> 16;
|
|
|
|
// Die Sprache für alle Threads auf Deutsch stellen.
|
|
var cultureInfo = CultureInfo.CreateSpecificCulture("de-DE");
|
|
Thread.CurrentThread.CurrentUICulture = cultureInfo;
|
|
Thread.CurrentThread.CurrentCulture = cultureInfo;
|
|
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
|
|
CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;
|
|
|
|
base.OnStartup(e);
|
|
//AppDomain.CurrentDomain.UnhandledException += (s, ex) => ShowError(null, ex.ExceptionObject as Exception, true);
|
|
|
|
Dispatcher.UnhandledException += (s, ex)
|
|
=>
|
|
{
|
|
if (ex.Exception == null || String.IsNullOrEmpty(ex.Exception.Message) ||
|
|
(!ex.Exception.ToString().Contains("DevExpress.Xpf.Bars.Customization.CustomizationControl.OnLoaded")
|
|
&& !ex.Exception.ToString().Contains("DevExpress.Xpf.Grid.Native.SelectionStrategyCellBase.IsCellSelected")))
|
|
|
|
{
|
|
ShowErrorMessage(ex.Exception);
|
|
}
|
|
ex.Handled = true;
|
|
};
|
|
|
|
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
|
|
}
|
|
|
|
public static void ShowErrorMessage(Exception e)
|
|
{
|
|
if (e is FaultException<BeWoFault>)
|
|
{
|
|
var lBeWoFault = (e as FaultException<BeWoFault>).Detail;
|
|
|
|
String rowUpdated = "Der Datensatz wurde in der Zwischenzeit von " + BS.Shared.Translation.Translator.Translate("einem anderen Benutzer") + " geändert. Ihre Änderungen konnten leider NICHT gespeichert werden. Das Problem tritt auf, wenn mehrere " + BS.Shared.Translation.Translator.Translate("BenutzerPlural") + " gleichzeitig den gleichen Datensatz bearbeiten.\n\nSie müssen den Datensatz schließen und erneut öffnen, um die Änderungen vornehmen zu können.";
|
|
switch (lBeWoFault.FaultType)
|
|
{
|
|
case BeWoFaultType.Concurrency:
|
|
BeWoApp.ShowError(rowUpdated, e, false, false);
|
|
break;
|
|
case BeWoFaultType.DeleteNotPossible:
|
|
MessageBox.Show(lBeWoFault.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Asterisk);
|
|
break;
|
|
case BeWoFaultType.LoginNameTaken:
|
|
MessageBox.Show(lBeWoFault.Message, "Warnung", MessageBoxButton.OK, MessageBoxImage.Asterisk);
|
|
return;
|
|
case BeWoFaultType.CustomWithoutDetails:
|
|
BeWoApp.ShowError(lBeWoFault.Message, e, false, false);
|
|
break;
|
|
default:
|
|
if (!String.IsNullOrEmpty(e.Message) && e.Message.IndexOf("Row was updated or deleted by another transaction") >= 0)
|
|
{
|
|
BeWoApp.ShowError(rowUpdated, e, false, false);
|
|
}
|
|
else if (!String.IsNullOrEmpty(lBeWoFault.Message) && lBeWoFault.Message.IndexOf("überschreitet") >= 0 && lBeWoFault.Message.IndexOf("erlaubte Größe") >= 0)
|
|
{
|
|
BeWoApp.ShowError(lBeWoFault.Message, e, false, false);
|
|
}
|
|
else
|
|
{
|
|
ShowDefaultErrorMessage(e, lBeWoFault.Message);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
ShowDefaultErrorMessage(e, String.Format("{0}", e));
|
|
|
|
}
|
|
}
|
|
|
|
private static void ShowDefaultErrorMessage(Exception e, string errormessage)
|
|
{
|
|
var displayMessage = errormessage;
|
|
var stacktrace = String.Format("{0}", e);
|
|
|
|
if (!String.IsNullOrEmpty(stacktrace))
|
|
{
|
|
bool showStackTrace = true;
|
|
bool showSupportForm = true;
|
|
|
|
if (stacktrace.IndexOf("Es war kein an https:") >= 0 && stacktrace.IndexOf("lauschender Endpunkt") >= 0)
|
|
{
|
|
displayMessage = "Es konnte leider keine Verbindung zum Server hergestellt werden. Bitte prüfen Sie Ihre Internetverbindung oder versuchen Sie es später erneut. Bei wiederholter Fehlermeldung schicken Sie bitte folgende Fehlermeldung an support@bewoplaner.de";
|
|
showSupportForm = false;
|
|
}
|
|
else if (stacktrace.IndexOf("Der Prozess kann nicht auf die Datei") >= 0 && stacktrace.IndexOf("von einem anderen Prozess verwendet") >= 0)
|
|
{
|
|
showStackTrace = false;
|
|
showSupportForm = false;
|
|
}
|
|
else if (stacktrace.IndexOf("GenericADOException") >= 0 && stacktrace.IndexOf("could not insert") >= 0 && stacktrace.IndexOf("Incorrect string value") >= 0)
|
|
{
|
|
displayMessage = "Ihre Eingabe enthält ungültige Zeichen. Wenn Sie einen Text aus einem anderen Programm kopiert haben, entfernen Sie bitte vor dem Speichern die ungültigen Zeichen oder geben Sie den Text manuell ein.";
|
|
showStackTrace = true;
|
|
showSupportForm = false;
|
|
}
|
|
else if (!String.IsNullOrEmpty(e.Message) && e.Message.IndexOf("could not update") >= 0 && e.Message.IndexOf("BeWo.Data.Entities.InvoiceBase") >= 0 && e.Message.IndexOf("Duplicate entry") >= 0 && e.Message.IndexOf("for key") >= 0)
|
|
{
|
|
String rnr = "";
|
|
var start = e.Message.IndexOf("Duplicate entry");
|
|
var ende = e.Message.IndexOf("for key");
|
|
if (ende > start + 16)
|
|
{
|
|
rnr = e.Message.Substring(start + 15, ende - start - 15).Trim();
|
|
|
|
}
|
|
|
|
displayMessage = String.Format("Fehler beim Speichern. Die eingegebene Rechnungsnummer {0} wurde bereits vergeben.", rnr);
|
|
showStackTrace = false;
|
|
showSupportForm = false;
|
|
}
|
|
//else if (stacktrace.IndexOf("GenericADOException") >= 0 && stacktrace.IndexOf("could not insert") >= 0 && stacktrace.IndexOf("Data too long for column") >= 0)
|
|
//{
|
|
// displayMessage = "Eine Eingabe enthält zu viele Zeichen.";
|
|
// showStackTrace = true;
|
|
// showSupportForm = false;
|
|
//}
|
|
|
|
BeWoApp.ShowError(displayMessage, e, showSupportForm, showStackTrace);
|
|
}
|
|
else
|
|
{
|
|
BeWoApp.ShowError(null, e, true, true);
|
|
}
|
|
}
|
|
|
|
private static void ReloadSettings(List<SettingsDC> settings)
|
|
{
|
|
if (_LoggedOnUser != null)
|
|
_LoggedOnUser.Settings = settings;
|
|
}
|
|
|
|
private static void RestoreUserAppSettings()
|
|
{
|
|
if (_LoggedOnUser != null)
|
|
{
|
|
_AppSettings = new AppSettings();
|
|
var settings = _LoggedOnUser.Settings;
|
|
|
|
var val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.WindowStateType, settings);
|
|
if (int.TryParse(val, out var result))
|
|
{
|
|
_AppSettings.WindowState = (AppSettings.WindowStateType)result;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.SchedulerViewType, settings);
|
|
if (int.TryParse(val, out result))
|
|
{
|
|
_AppSettings.SchedulerViewType = (SchedulerViewType)result;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.SchedulerTimelineViewDayCount, settings);
|
|
if (int.TryParse(val, out result))
|
|
{
|
|
_AppSettings.SchedulerTimelineViewDayCount = result;
|
|
}
|
|
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.SchedulerDayViewDayCount, settings);
|
|
if (int.TryParse(val, out result))
|
|
{
|
|
_AppSettings.SchedulerDayViewDayCount = result;
|
|
}
|
|
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastSelectedServiceRecordTimeInterval, settings);
|
|
if (int.TryParse(val, out result))
|
|
{
|
|
_AppSettings.LastSelectedServiceRecordTimeInterval = (ServiceRecordTimeInterval)result;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.CustomerFilterInZeiterfassung, settings);
|
|
if (int.TryParse(val, out result))
|
|
{
|
|
_AppSettings.CustomerFilterInZeiterfassung = (CustomerFilterEnum)result;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.CustomerFilterSupportConcepts, settings);
|
|
if (int.TryParse(val, out result))
|
|
{
|
|
_AppSettings.CustomerFilterSupportConcepts = (CustomerFilterEnum)result;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.CustomerFilterCustomers, settings);
|
|
if (int.TryParse(val, out result))
|
|
{
|
|
_AppSettings.CustomerFilterCustomers = (CustomerFilterEnum)result;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.ShowServiceRecordGridControl, settings);
|
|
_AppSettings.ShowServiceRecordGridControl = val == "1";
|
|
|
|
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.ShowExpiredSupportConcepts, settings);
|
|
_AppSettings.ShowExpiredSupportConcepts = val != "0";
|
|
|
|
|
|
|
|
_AppSettings.StartupPanelMaximized = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.StartupPanelMaximized, settings);
|
|
|
|
_AppSettings.DocumentationFontSize = Convert.ToDouble(UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.DocumentationFontSize, settings));
|
|
|
|
//val = GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.ZeigeNurMeineTermine");
|
|
//_AppSettings.ZeigeNurMeineTermine = val != "0";
|
|
|
|
_AppSettings.ZeigeNurMeineTermine = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.ZeigeNurMeineTermine, settings) == "1";
|
|
|
|
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastSelectedServiceRecordTimeIntervalDays, settings);
|
|
if (val != null)
|
|
{
|
|
_AppSettings.LastSelectedServiceRecordTimeIntervalDays = Convert.ToInt32(UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastSelectedServiceRecordTimeIntervalDays, settings));
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastSelectedServiceRecordMonth, settings);
|
|
if (val != null)
|
|
{
|
|
_AppSettings.LastSelectedServiceRecordMonth = Convert.ToDateTime(UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastSelectedServiceRecordMonth, settings));
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastKassenSortOrder, settings);
|
|
if (val != null)
|
|
{
|
|
_AppSettings.LastKassenSortOrder = Convert.ToInt32(UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastKassenSortOrder, settings));
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LetzteZeiterfassungsDauer, settings);
|
|
if (val != null)
|
|
{
|
|
var x = Convert.ToInt32(UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LetzteZeiterfassungsDauer, settings));
|
|
_AppSettings.LetzteZeiterfassungsDauer = x == 0 ? ZeiterfassungsDauer.Minuten : ZeiterfassungsDauer.Stunden;
|
|
}
|
|
|
|
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.StartupPanelOrder, settings);
|
|
if (val != null)
|
|
{
|
|
_AppSettings.StartupPanelOrder = new List<string>();
|
|
var panels = val.Split('|');
|
|
|
|
foreach (var item in panels)
|
|
{
|
|
_AppSettings.StartupPanelOrder.Add(item);
|
|
}
|
|
}
|
|
|
|
_AppSettings.IsDirty = false;
|
|
}
|
|
|
|
}
|
|
|
|
private void BtnOpenServiceRecordView_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (!(sender is Button btn))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (!(btn.Tag is CompactSupportConceptDC dc))
|
|
{
|
|
return;
|
|
}
|
|
|
|
MainControl?.NavigateToServiceRecordView(dc.SupportConceptOid);
|
|
}
|
|
|
|
private void Togglebutton_maximise_Checked(object sender, RoutedEventArgs e)
|
|
{
|
|
MainControl?.Maximize();
|
|
}
|
|
|
|
private void Togglebutton_maximise_Unchecked(object sender, RoutedEventArgs e)
|
|
{
|
|
MainControl?.Minimize();
|
|
}
|
|
|
|
private void TogglebuttonChat_maximise_Unchecked(object sender, RoutedEventArgs e)
|
|
{
|
|
MainControl.HomeView.ServiceChatView?.Normal();
|
|
}
|
|
|
|
private void TogglebuttonChat_maximise_Checked(object sender, RoutedEventArgs e)
|
|
{
|
|
MainControl.HomeView.ServiceChatView?.Maximize();
|
|
}
|
|
|
|
private void TogglebuttonChat_Minimize_Checked(object sender, RoutedEventArgs e)
|
|
{
|
|
MainControl.HomeView.ServiceChatView?.Minimize();
|
|
}
|
|
|
|
private void FrameLeftMouseDown(object sender, MouseButtonEventArgs e)
|
|
{
|
|
var border = (Border)sender;
|
|
var borderParent = (Grid)border.Parent;
|
|
var template = borderParent.TemplatedParent;
|
|
var parent = new Window();
|
|
|
|
var x = (FrameworkElement)template;
|
|
if (x != null)
|
|
{
|
|
var y = new FrameworkElement();
|
|
while (y != null)
|
|
{
|
|
y = (FrameworkElement)x.Parent;
|
|
if (y != null)
|
|
{
|
|
x = y;
|
|
}
|
|
}
|
|
|
|
if (x is Window window)
|
|
{
|
|
parent = window;
|
|
parent.DragMove();
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void AutoLockUIDoAutoLockUIEvent()
|
|
{
|
|
//if (UserName.Equals("BSAdmin"))
|
|
//{
|
|
// AutoLockUI.StartAutoLockUIOption();
|
|
// return;
|
|
//}
|
|
|
|
if (CurrentBeWo.MainWindow?.Content is LockedPage)
|
|
{
|
|
AutoLockUI.StartAutoLockUIOption();
|
|
return;
|
|
}
|
|
|
|
_lockedContent = CurrentBeWo.MainWindow?.Content as FrameworkElement;
|
|
|
|
if (_lockedContent is Grid grid && grid.Children.Contains(LoginControl))
|
|
{
|
|
AutoLockUI.StartAutoLockUIOption();
|
|
return;
|
|
}
|
|
|
|
var openWindowCollection = Current.Windows;
|
|
foreach (var blubb in openWindowCollection)
|
|
{
|
|
var abc = (Window)blubb;
|
|
|
|
if (!abc.Title.Equals("BeWoPlaner") && blubb.GetType() == typeof(WindowContentHolder))
|
|
{
|
|
abc.Close();
|
|
}
|
|
else if (abc.Title.IndexOf("Popup") >= 0)
|
|
{
|
|
abc.Close();
|
|
}
|
|
}
|
|
|
|
MainControl.HideCurrentModalViewWindows();
|
|
|
|
var lockedPage = new LockedPage();
|
|
lockedPage.ButtonLogin.Click += UnlockBeWoPlaner;
|
|
|
|
if (CurrentBeWo?.MainWindow != null)
|
|
{
|
|
CurrentBeWo.MainWindow.Content = lockedPage;
|
|
|
|
Current.Dispatcher.Invoke(new Action(() => CurrentBeWo.MainWindow?.Activate()));
|
|
}
|
|
|
|
AutoLockUI.StartAutoLockUIOption();
|
|
}
|
|
|
|
private static void UnlockBeWoPlaner(object sender, RoutedEventArgs e)
|
|
{
|
|
var lbtn = (Button)sender;
|
|
|
|
var lbtnParent = (Grid)lbtn.Parent;
|
|
var mainWindowUIElements = new UIElement[lbtnParent.Children.Count];
|
|
lbtnParent.Children.CopyTo(mainWindowUIElements, 0);
|
|
|
|
var elementList = mainWindowUIElements.ToList();
|
|
var username = ((TextBox)elementList.Where(el => el is TextBox textBox && textBox.Name.Equals("TextBoxUsername")).ToList()[0]).Text;
|
|
var password = ((PasswordBox)elementList.Where(el => el is PasswordBox passwordBox && passwordBox.Name.Equals("PasswordBoxPassword")).ToList()[0]).Password;
|
|
|
|
if (string.IsNullOrEmpty(username) || !username.Equals(_LoggedOnUser.LoginName, StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
MessageBox.Show("Das Programm kann nur " + BS.Shared.Translation.Translator.Translate("vom Benutzer") + " '" + _LoggedOnUser.LoginName + "' entsperrt werden.", "Fehler bei der Anmeldung", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
|
return;
|
|
}
|
|
|
|
username = $"{username}//Version=Sperrung aufgehoben";
|
|
|
|
ServiceFacade.DoUserServiceAsync(u => u.IsUserValidTwoFactor(username, password, BeWoApp.TwoFactorPin, ""), r =>
|
|
{
|
|
if (!r.Equals(UserValidationResult.UserValid))
|
|
{
|
|
MessageBox.Show("Anmeldeinformationen nicht bekannt. Bitte überprüfen Sie den " + BS.Shared.Translation.Translator.Translate("Benutzernamen") + " und das Passwort!", "Fehler bei der Anmeldung", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
|
return;
|
|
}
|
|
|
|
AutoLockUI.HasJustBeenUnlocked = true;
|
|
|
|
Current.Dispatcher.Invoke(delegate
|
|
{
|
|
if (CurrentBeWo?.MainWindow != null)
|
|
{
|
|
CurrentBeWo.MainWindow.Content = _lockedContent;
|
|
}
|
|
|
|
MainControl.ShowCurrentModalViewWindowsAgain();
|
|
});
|
|
}, true);
|
|
}
|
|
|
|
private static void OnPreviewMouseDown(object sender, MouseButtonEventArgs e)
|
|
{
|
|
AutoLockUI.ResetLockUITimer();
|
|
}
|
|
|
|
private static void OnPreviewKeyDown(object sender, KeyEventArgs e)
|
|
{
|
|
AutoLockUI.ResetLockUITimer();
|
|
}
|
|
|
|
private void Hyperlink_Hilfeplan_Reaktivieren_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
var scNavView = (SupportConceptNavigationView)MainControl.ActiveView;
|
|
|
|
if (scNavView != null)
|
|
{
|
|
var supportConcept = (CompactSupportConceptDC)((Hyperlink)sender).Tag;
|
|
scNavView.MainNavigationView_OnReactivateObject(supportConcept);
|
|
}
|
|
}
|
|
private void Hyperlink_Hilfeplan_AusArchivHolen_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
var scNavView = (SupportConceptNavigationView)MainControl.ActiveView;
|
|
|
|
if (scNavView != null)
|
|
{
|
|
var supportConcept = (CompactSupportConceptDC)((Hyperlink)sender).Tag;
|
|
scNavView.MainNavigationView_AusArchivHolen(supportConcept);
|
|
}
|
|
}
|
|
|
|
public static void GetChatServerUrlAsync(Action<string> callback)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(chatServerURL))
|
|
{
|
|
var tenant = Tenant;
|
|
|
|
#if DEBUG
|
|
tenant = "5473568546";
|
|
#endif
|
|
|
|
var login = new Login(tenant, serverUrl =>
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(serverUrl))
|
|
{
|
|
callback(serverUrl);
|
|
}
|
|
}, errorMessage =>
|
|
{
|
|
MessageBox.Show(errorMessage, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
});
|
|
}
|
|
else
|
|
{
|
|
callback?.Invoke(chatServerURL);
|
|
}
|
|
}
|
|
public static void Cleanup()
|
|
{
|
|
CurrentBeWo.DocumentWatcher.LoescheAlleTempDateien();
|
|
_lockedContent = null;
|
|
LoginControl = null;
|
|
MainControl = null;
|
|
_AppSettings = null;
|
|
_CompactLoggedOnEmployee = null;
|
|
_LoggedOnEmployee = null;
|
|
_LoggedOnUser = null;
|
|
_Mandator = null;
|
|
|
|
}
|
|
|
|
//public static void InitBlubb()
|
|
//{
|
|
// var timer = new System.Threading.Timer(
|
|
// e => MainControl.AufOffeneTerminePruefen(), null ,TimeSpan.Zero, TimeSpan.FromMinutes(1)
|
|
// );
|
|
//}
|
|
|
|
public static void LogMessage(string message)
|
|
{
|
|
#if DEBUG
|
|
if (_DebugMessageLogView == null)
|
|
{
|
|
_DebugMessageLogView = new DebugMessageLogView();
|
|
}
|
|
|
|
_DebugMessageLogView.Closed += (s, e) => { _DebugMessageLogView = null; };
|
|
|
|
_DebugMessageLogView.Show();
|
|
_DebugMessageLogView.LogMessage(message);
|
|
#endif
|
|
}
|
|
|
|
public static void LogMessage(string message, Color customColor)
|
|
{
|
|
#if DEBUG
|
|
if (_DebugMessageLogView == null)
|
|
{
|
|
_DebugMessageLogView = new DebugMessageLogView();
|
|
}
|
|
|
|
_DebugMessageLogView.Closed += (s, e) => { _DebugMessageLogView = null; };
|
|
|
|
_DebugMessageLogView.Show();
|
|
_DebugMessageLogView.LogMessage(message, customColor);
|
|
#endif
|
|
}
|
|
}
|
|
} |