Files
BeWoPlaner/BeWo/BeWoApp.xaml.cs

1502 lines
53 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.Xpf.Scheduling;
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.23";
public static string Version = "Version 3.24 TEST";
public static int RenderTier = 0;
public static bool IsInDesignMode = DesignerProperties.GetIsInDesignMode(new DependencyObject());
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;
if(MainControl is object)
{
MainControl.UpdateMandator();
}
}
}
internal static Uri SiteOfOrigin
{
get
{
String url = "";
#if DEBUG
//url = String.Format("http://localhost:3777/Host");
var condition_base = !string.IsNullOrWhiteSpace(DebugConfig.ServerUrl);
var condition1 = DebugConfig.CurrentConfig is null;
var condition2 = DebugConfig.CurrentConfig is DebugConfig current && string.IsNullOrWhiteSpace(current.DefaultProfilename);
if (condition_base && (condition1 || condition2))
{
url = DebugConfig.ServerUrl;
return new Uri(url);
}
else if(ServerAddress.ToLower().IndexOf("localhost") >= 0)
{
url = "http://localhost:3777/Host";
}
//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.LastBewilligungSortOrder, _AppSettings.LastBewilligungSortOrder.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);
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.SchedulingViewType, ((int) _AppSettings.SchedulingViewType).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 ShowInfoMessage(string message)
{
MessageBox.Show(message, "Information", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
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.LastBewilligungSortOrder, settings);
if (val != null)
{
_AppSettings.LastBewilligungSortOrder = Convert.ToInt32(UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastBewilligungSortOrder, 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);
}
}
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.SchedulingViewType, settings);
if(int.TryParse(val, out var schedulingViewTypeInt))
{
_AppSettings.SchedulingViewType = (ViewType)schedulingViewTypeInt;
}
_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;
var title = abc.Title;
if (!title.Equals("BeWoPlaner") && blubb.GetType() == typeof(WindowContentHolder))
{
abc.Close();
}
else if (title.IndexOf("Popup") >= 0)
{
abc.Close();
}
else if (title.IndexOf("Druckvorschau") >= 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 is 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 is null)
{
_DebugMessageLogView = new DebugMessageLogView();
}
_DebugMessageLogView.Closed += (s, e) => { _DebugMessageLogView = null; };
_DebugMessageLogView.Show();
_DebugMessageLogView.LogMessage(message, customColor);
#endif
}
}
}