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.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.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;
namespace BeWo
{
///
/// Interaction logic for App.xaml
///
public partial class BeWoApp : Application, INotifyPropertyChanged
{
private static FrameworkElement _lockedContent;
public static LoginControl LoginControl;
public static MainControl MainControl;
public static string ShortVersion = "3";
public static string Version = "Version 3.0 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 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 OpenDevExpressEditForms = new List();
private static DocumentWatcher _DocumentWatcher;
internal static PasswortSecurityStrength PasswortStrength;
public static BeWoApp CurrentBeWo
{
get { return Current as BeWoApp; }
}
public static Dictionary ICD10Diagnosis { get; set; }
public static EmployeeDC LoggedOnEmployee
{
get { return _LoggedOnEmployee; }
set { _LoggedOnEmployee = value; }
}
public static long? LoggedOnEmployeeOid => _LoggedOnEmployee?.EmployeeOid;
public static CompactEmployeeDC CompactLoggedOnEmployee
{
get => _CompactLoggedOnEmployee;
set => _CompactLoggedOnEmployee = value;
}
public ObservableCollection LoggedOnUsersRights
{
get
{
if (LoggedOnUser != null)
return LoggedOnUser.GetGrantedRights().ToObservableCollection();
return null;
}
}
public DocumentWatcher DocumentWatcher
{
get
{
if (_DocumentWatcher == null)
{
_DocumentWatcher = new DocumentWatcher();
}
return _DocumentWatcher;
}
}
public static string ServerAddress
{
get { return _ServerAddress; }
set
{
//if (_ServerAddress != null && _ServerAddress.Equals(value))
// return;
_ServerAddress = value;
ServiceFacade.UpdateServerAddresses(SiteOfOrigin.ToString());
}
}
public static AppSettings AppSettings
{
get
{
if (_AppSettings == null)
{
RestoreAppSettings();
}
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;
bool isZeiterfassungInStdMin = false;
int lastSelectedStundenkontoIntervall = 3;
bool showSignatures = false;
bool showRtfTextfield = false;
bool showPivotGrid = false;
bool showUrlaubsplanung = false;
bool dontShowSpitzabrechnung = false;
bool showDienstplanung = false;
AppSettings.ShowAdvisedAttendedFlag = false;
String timeRecordingMenuName = "";
if (_Mandator != null)
{
string val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowMedication");
AppSettings.IsMedicationAllowed = val != null && val.Equals("1");
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowScheduler");
AppSettings.IsSchedulerAllowed = val != null && val.Equals("1");
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowWohnheime");
AppSettings.IsWohnheimAllowed = val != null && val.Equals("1");
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowChat");
AppSettings.IsChatAllowed = val != null && val.Equals("1");
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "IsServiceRecordNoticeMandatory");
if (val != null && val.Equals("0"))
{
isServiceRecordNoticeMandatory = false;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "IsPasswordSecurityActiv");
if (val != null && val.Equals("1"))
{
isPasswordSecurityActiv = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "IsEndDateVisible");
if (val != null && val.Equals("1"))
{
isEndDateVisible = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "IsOnlyYearMonthVisible");
if (val != null && val.Equals("1"))
{
isOnlyYearMonthVisible = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "IsZeiterfassungInStdMin");
if (val != null && val.Equals("1"))
{
isZeiterfassungInStdMin = true;
}
if (!isZeiterfassungInStdMin)
{
AppSettings.LetzteZeiterfassungsDauer = ZeiterfassungsDauer.Minuten;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "IsZeiterfassDateNormal");
if (val != null && val.Equals("0"))
{
isZeiterfassDateNormal = false;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "MaxDaysEditServiceRecordsAllowed");
int result;
if (Int32.TryParse(val, out result))
{
maxDaysEditServiceRecordsAllowed = result;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "HilfeplanAuslaufAuswahl");
int resultplan;
if (Int32.TryParse(val, out resultplan))
{
hilfeplanAuslaufAuswahl = resultplan;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "LastSelectedStundenkontoIntervall");
int resultinterval;
if (Int32.TryParse(val, out resultinterval))
{
lastSelectedStundenkontoIntervall = resultinterval;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "AnzTageZeiterfassErfolgt");
int resultzeitplan;
if (Int32.TryParse(val, out resultzeitplan))
{
anzTageZeiterfassErfolgt = resultzeitplan;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ZeiterfassungsSchwellwert");
int resultschwell;
if (Int32.TryParse(val, out resultschwell))
{
zeiterfassungsSchwellwert = resultschwell;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowDistanceFields");
if (val != null && val.Equals("1"))
{
showServiceRecordsDistanceFields = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowHilfeplanBezeichnung");
if (val != null && val.Equals("1"))
{
showHilfeplanBezeichnung = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowArbeitszeiten");
if (val != null && val.Equals("1"))
{
showArbeitszeiten = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowRessources");
AppSettings.ShowRessources = val != null && val.Equals("1");
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowTeamNews");
if (val != null && val.Equals("1"))
{
showTeamNews = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowPivotGrid");
if (val != null && val.Equals("1"))
{
showPivotGrid = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowUrlaubsplanung");
if (val != null && val.Equals("1"))
{
showUrlaubsplanung = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "dontShowSpitzabrechnung");
if (val != null && val.Equals("1"))
{
dontShowSpitzabrechnung = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowDienstplanung");
if (val != null && val.Equals("1"))
{
showDienstplanung = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowMarker");
if (val != null && val.Equals("1"))
{
showMarker = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowAnnualReport");
if (val != null && val.Equals("1"))
{
showAnnualReport = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowCustomerDistanceFields");
if (val != null && val.Equals("1"))
{
showCustomerDistanceFields = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowAdditionalService");
if (val != null && val.Equals("1"))
{
showAdditionalService = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowRoundedDurationInEmployeeAnalysis");
if (val != null && val.Equals("0"))
{
showRoundedDurationInEmployeeAnalysis = false;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowDatevFields");
if (val != null && val.Equals("1"))
{
showDatevFields = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "PrinterSettingsUseLandscape");
if (val != null && val.Equals("1"))
{
printerSettingsUseLandscape = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "PrinterSettingsUseMargins");
if (val != null && val.Equals("1"))
{
printerSettingsUseMargins = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "PrinterSettingsUsePaperKind");
if (val != null && val.Equals("1"))
{
printerSettingsUsePaperKind = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "HideServiceRecordInsertedByAndInsertedOn");
if(val != null && val.Equals("1"))
{
hideServiceRecordInsertedByAndInsertedOn = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowSignature");
if (val != null && val.Equals("1"))
{
showSignatures = true;
}
val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowRtfTextfield");
if (val != null && val.Equals("1"))
{
showRtfTextfield = true;
}
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;
}
}
AppSettings.ShowDatevFields = showDatevFields;
AppSettings.IsServiceRecordNoticeMandatory = isServiceRecordNoticeMandatory;
AppSettings.IsPasswordSecurityActiv = isPasswordSecurityActiv;
AppSettings.IsEndDateVisible = isEndDateVisible;
AppSettings.IsOnlyYearMonthVisible = isOnlyYearMonthVisible;
AppSettings.IsZeiterfassDateNormal = isZeiterfassDateNormal;
AppSettings.IsZeiterfassungInStdMin = isZeiterfassungInStdMin;
AppSettings.MaxDaysEditServiceRecordsAllowed = maxDaysEditServiceRecordsAllowed;
AppSettings.HilfeplanAuslaufAuswahl = hilfeplanAuslaufAuswahl;
AppSettings.LastSelectedStundenkontoIntervall = lastSelectedStundenkontoIntervall;
AppSettings.AnzTageZeiterfassErfolgt = anzTageZeiterfassErfolgt;
AppSettings.ZeiterfassungsSchwellwert = zeiterfassungsSchwellwert;
AppSettings.TimeRecordingMenuName = timeRecordingMenuName;
AppSettings.ShowDistanceFields = showServiceRecordsDistanceFields;
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;
BS.Shared.Settings.ApplicationSettings.SupportConceptExpirationLimitInMonths = AppSettings.HilfeplanAuslaufAuswahl;
}
}
internal static Uri SiteOfOrigin
{
get
{
String url = ServerAddress.ToLower();
#if DEBUG
url = String.Format("http://localhost:3777/Host");
//return new Uri("https://app4.bewoplaner.de/servicesbd");
//url = String.Format("app1.bewoplaner.de/service");
#endif
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("/servicesbd") < 0)
{
url += "/servicesbd";
}
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("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 companyFilePath
= Path.Combine(localAppData, "beyondSoft");
if (!Directory.Exists(companyFilePath))
Directory.CreateDirectory(companyFilePath);
string bewoFilePath
= Path.Combine(companyFilePath, "BeWoPlaner");
if (!Directory.Exists(bewoFilePath))
Directory.CreateDirectory(bewoFilePath);
return bewoFilePath;
}
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);
}
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, "WindowStateType", ((int) _AppSettings.WindowState).ToString(), _LoggedOnUser.Settings);
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "LastSelectedServiceRecordTimeInterval", ((int) _AppSettings.LastSelectedServiceRecordTimeInterval).ToString(), _LoggedOnUser.Settings);
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "CustomerFilterInZeiterfassung", ((int)_AppSettings.CustomerFilterInZeiterfassung).ToString(), _LoggedOnUser.Settings);
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "CustomerFilterSupportConcepts", ((int)_AppSettings.CustomerFilterSupportConcepts).ToString(), _LoggedOnUser.Settings);
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "CustomerFilterCustomers", ((int)_AppSettings.CustomerFilterCustomers).ToString(), _LoggedOnUser.Settings);
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "ShowExpiredSupportConcepts", _AppSettings.ShowExpiredSupportConcepts ? "1" : "0", _LoggedOnUser.Settings);
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "ShowServiceRecordGridControl", _AppSettings.ShowServiceRecordGridControl ? "1" : "0", _LoggedOnUser.Settings);
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "StartupPanelMaximized", _AppSettings.StartupPanelMaximized, _LoggedOnUser.Settings);
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "HideServiceRecordInsertedByAndInsertedOn", _AppSettings.HideServiceRecordInsertedByAndInsertedOn ? "1" : "0", _LoggedOnUser.Settings);
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "DocumentationFontSize", _AppSettings.DocumentationFontSize.ToString(), _LoggedOnUser.Settings);
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "ZeigeNurMeineTermine", _AppSettings.ZeigeNurMeineTermine ? "1" : "0", _LoggedOnUser.Settings);
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "LastSelectedServiceRecordTimeIntervalDays", _AppSettings.LastSelectedServiceRecordTimeIntervalDays.ToString(), _LoggedOnUser.Settings);
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "LetzteZeiterfassungsDauer", ((int)_AppSettings.LetzteZeiterfassungsDauer).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, "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 showDetails)
{
if (MainControl != null)
{
MainControl.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action) (() => MainControl.ShowControlAsModalPopup(new ExceptionMessageBox(message, ex, showDetails))));
}
else if (LoginControl != null)
{
LoginControl.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action) (() => LoginControl.ShowControlAsModalPopUp(new ExceptionMessageBox(message, ex, showDetails))));
}
else
{
MessageBox.Show(message + "\n\n" + ex);
}
}
internal void FirePropertyChanged(string pPropertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(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("TimeUntilUILock")).Value ?? "NULL";
var y = _LockUITime;
AutoLockUI.LockUITime = Convert.ToInt32(settingsKeyValuePairList.FirstOrDefault(f => f.Key.Equals("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;
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"))
{
ShowError(null, ex.Exception, true);
}
ex.Handled = true;
};
FrameworkElement.LanguageProperty.OverrideMetadata(typeof (FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
}
private static void ReloadSettings(List settings)
{
if (_LoggedOnUser != null)
_LoggedOnUser.Settings = settings;
}
private static void RestoreAppSettings()
{
if (_LoggedOnUser != null)
{
_AppSettings = new AppSettings();
var settings = _LoggedOnUser.Settings;
var val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "WindowStateType", settings);
if (int.TryParse(val, out var result))
{
_AppSettings.WindowState = (AppSettings.WindowStateType) result;
}
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "LastSelectedServiceRecordTimeInterval", settings);
if (int.TryParse(val, out result))
{
_AppSettings.LastSelectedServiceRecordTimeInterval = (ServiceRecordTimeInterval) result;
}
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "CustomerFilterInZeiterfassung", settings);
if (int.TryParse(val, out result))
{
_AppSettings.CustomerFilterInZeiterfassung = (CustomerFilterEnum)result;
}
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "CustomerFilterSupportConcepts", settings);
if (int.TryParse(val, out result))
{
_AppSettings.CustomerFilterSupportConcepts = (CustomerFilterEnum)result;
}
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "CustomerFilterCustomers", settings);
if (int.TryParse(val, out result))
{
_AppSettings.CustomerFilterCustomers = (CustomerFilterEnum)result;
}
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "ShowServiceRecordGridControl", settings);
_AppSettings.ShowServiceRecordGridControl = val == "1";
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "ShowExpiredSupportConcepts", settings);
_AppSettings.ShowExpiredSupportConcepts = val != "0";
_AppSettings.StartupPanelMaximized = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "StartupPanelMaximized", settings);
_AppSettings.DocumentationFontSize = Convert.ToDouble(UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "DocumentationFontSize", settings));
//val = GetSettingValue(SettingsType.ApplicationSettings, "ZeigeNurMeineTermine");
//_AppSettings.ZeigeNurMeineTermine = val != "0";
_AppSettings.ZeigeNurMeineTermine = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "ZeigeNurMeineTermine", settings) == "1";
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "LastSelectedServiceRecordTimeIntervalDays", settings);
if (val != null)
{
_AppSettings.LastSelectedServiceRecordTimeIntervalDays = Convert.ToInt32(UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "LastSelectedServiceRecordTimeIntervalDays", settings));
}
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "LetzteZeiterfassungsDauer", settings);
if (val != null)
{
var x = Convert.ToInt32(UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "LetzteZeiterfassungsDauer", settings));
_AppSettings.LetzteZeiterfassungsDauer = x == 0 ? ZeiterfassungsDauer.Minuten : ZeiterfassungsDauer.Stunden;
}
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "StartupPanelOrder", settings);
if (val != null)
{
_AppSettings.StartupPanelOrder = new List();
var panels = val.Split('|');
foreach(var item in panels)
{
_AppSettings.StartupPanelOrder.Add(item);
}
}
_AppSettings.IsDirty = false;
}
}
private void BtnOpenServiceRecordView_Click(object sender, RoutedEventArgs e)
{
var btn = sender as Button;
if (btn == null) return;
var dc = btn.Tag as CompactSupportConceptDC;
if (dc == null) return;
if (MainControl != null)
MainControl.NavigateToServiceRecordView(dc.SupportConceptOid);
}
private void Togglebutton_maximise_Checked(object sender, RoutedEventArgs e)
{
if (MainControl != null)
MainControl.Maximize();
}
private void Togglebutton_maximise_Unchecked(object sender, RoutedEventArgs e)
{
if (MainControl != null)
MainControl.Minimize();
}
private void TogglebuttonChat_maximise_Unchecked(object sender, RoutedEventArgs e)
{
if (MainControl.HomeView.ServiceChatView != null)
MainControl.HomeView.ServiceChatView.Normal();
}
private void TogglebuttonChat_maximise_Checked(object sender, RoutedEventArgs e)
{
if (MainControl.HomeView.ServiceChatView != null)
MainControl.HomeView.ServiceChatView.Maximize();
}
private void TogglebuttonChat_Minimize_Checked(object sender, RoutedEventArgs e)
{
if (MainControl.HomeView.ServiceChatView != null)
MainControl.HomeView.ServiceChatView.Minimize();
}
private void FrameLeftMouseDown(object sender, MouseButtonEventArgs e)
{
var border = (Border) sender;
var borderParent = (Grid) border.Parent;
DependencyObject 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)
{
parent = (Window) x;
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 && (_lockedContent as 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();
}
}
MainControl.HideCurrentModalViewWindows();
var lockedPage = new LockedPage();
lockedPage.ButtonLogin.Click += UnlockBeWoPlaner;
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) el).Name.Equals("TextBoxUsername")).ToList()[0]).Text;
var password = ((PasswordBox) elementList.Where(el => el is PasswordBox && ((PasswordBox) el).Name.Equals("PasswordBoxPassword")).ToList()[0]).Password;
if (string.IsNullOrEmpty(username) || !username.Equals(_LoggedOnUser.LoginName, StringComparison.OrdinalIgnoreCase))
{
MessageBox.Show("Das Programm kann nur vom Benutzer '" + _LoggedOnUser.LoginName + "' entsperrt werden.", "Fehler bei der Anmeldung", MessageBoxButton.OK, MessageBoxImage.Exclamation);
return;
}
username = $"{username}//Version=Sperrung aufgehoben";
ServiceFacade.DoUserServiceAsync(u => u.IsUserValid(username, password, ""), r =>
{
if (!r.Equals(UserValidationResult.UserValid))
{
MessageBox.Show("Anmeldeinformationen nicht bekannt. Bitte überprüfen Sie den Benutzernamen und das Passwort!", "Fehler bei der Anmeldung", MessageBoxButton.OK, MessageBoxImage.Exclamation);
return;
}
AutoLockUI.HasJustBeenUnlocked = true;
Current.Dispatcher.Invoke(delegate
{
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);
}
}
public static void GetChatServerUrlAsync(Action 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);
}
});
}
else
{
callback?.Invoke(chatServerURL);
}
}
public static void Cleanup()
{
_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)
);
}
}
}