using System; using System.Collections.Generic; using BeWo.Data.Access; using BeWo.Data.Entities; using BeWo.Data.Security; using BeWo.Service.DCEntityMapper; using BS.Shared; using BS.Shared.Core; namespace BeWo.Service.Configuration { public class AppSettings { public bool IsServiceRecordNoticeMandatory { get; set; } public bool IsPasswordSecurityActiv { get; set; } public bool UseTwoFactorAuth { get; set; } public bool IsEndDateVisible { get; set; } public bool IsOnlyYearMonthVisible { get; set; } public bool IsZeiterfassDateNormal { get; set; } public bool IsZeiterfassungInStdMin { get; set; } public int MaxDaysEditServiceRecordsAllowed { get; set; } public int HilfeplanAuslaufAuswahl { get; set; } public int AnzTageZeiterfassErfolgt { get; set; } public int AnzTageArbeitszeiterfassungErfolgt { get; set; } public int AnzTageUnterschriftErfolgt { get; set; } public int ZeiterfassungsSchwellwert { get; set; } public bool ShowAdvisedAttendedFlag { get; set; } public bool ShowAllClients { get; set; } public bool ShowExpiredSupportConcepts { get; set; } public bool ShowOnlyMyClients { get; set; } public bool ShowLargeCustomerNotice { get; set; } public bool ShowOnlyMySupportConcepts { get; set; } public string TimeRecordingMenuName { get; set; } public bool ShowDistanceFields { get; set; } public bool ShowSignatures { get; set; } public bool ShowRtfTextfeld { get; set; } public bool ShowCustomerDistanceFields { get; set; } public bool ShowAdditionalService { get; set; } public bool ShowRoundedDurationInEmployeeAnalysis { get; set; } public bool SortServiceDescriptionAlphabetically { get; set; } public bool ShowChat { get; set; } public int DienstplanungStandardZeilenAnzahl { get; set; } public bool ShowWorktime { get; set; } public bool EnableArbeitszeiterfassung { get; set; } public bool EnableAutomaticPauses { get; set; } public bool EnableRestTimeWarning { get; set; } public int MaxWorkTimeHoursBeforeWarning { get; set; } public DateTime? StartStundenkonto { get; set; } public ServiceRecordTimeInterval LastSelectedServiceRecordTimeInterval { get; set; } = ServiceRecordTimeInterval.All; public int LastSelectedServiceRecordTimeIntervalDays { get; set; } = 7; public DateTime LastSelectedServiceRecordMonth { get; set; } = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); public static AppSettings CreateSettings() { AppSettings settings = new AppSettings(); var mandator = GetMandatorEntity(); bool isServiceRecordNoticeMandatory = true; bool isPasswordSecurityActiv = false; bool isEndDateVisible = true; bool isOnlyYearMonthVisible = true; bool isZeiterfassDateNormal = true; bool isZeiterfassungInStdMin = true; bool showServiceRecordsDistanceFields = false; bool showSignatures = false; bool showRtfTextfeld = false; bool showCustomerDistanceFields = false; bool showAdditionalService = false; bool showRoundedDurationInEmployeeAnalysis = true; int maxDaysEditServiceRecordsAllowed = 0; int hilfeplanAuslaufAuswahl = 3; int anzTageZeiterfassErfolgt = 0; int zeiterfassungsSchwellwert = 80; bool sortServiceDescriptionAlphabetically = false; settings.ShowAdvisedAttendedFlag = false; settings.DienstplanungStandardZeilenAnzahl = 1; bool printerSettingsUseLandscape = false; bool printerSettingsUseMargins = false; bool printerSettingsUsePaperKind = false; if (mandator != null) { string settingsString = mandator.Settings; if (!String.IsNullOrEmpty(mandator.LastModules)) { settingsString += ";" + mandator.LastModules; } string val = GetSettingValue(settingsString, "IsServiceRecordNoticeMandatory"); if (val != null && val.Equals("0")) { isServiceRecordNoticeMandatory = false; } val = GetSettingValue(settingsString, "IsPasswordSecurityActiv"); if (val != null && val.Equals("1")) { isPasswordSecurityActiv = true; } settings.UseTwoFactorAuth = false; val = GetSettingValue(settingsString, "UseTwoFactorAuth"); if (val != null && val.Equals("1")) { settings.UseTwoFactorAuth = true; } val = GetSettingValue(settingsString, "IsEndDateVisible"); if (val != null && val.Equals("0")) { isEndDateVisible = false; } val = GetSettingValue(settingsString, "IsOnlyYearMonthVisible"); if (val != null && val.Equals("0")) { isOnlyYearMonthVisible = false; } val = GetSettingValue(settingsString, "IsZeiterfassDateNormal"); if (val != null && val.Equals("0")) { isZeiterfassDateNormal = false; } val = GetSettingValue(settingsString, "IsZeiterfassungInStdMin"); if (val != null && val.Equals("0")) { isZeiterfassungInStdMin = false; } val = GetSettingValue(settingsString, "MaxDaysEditServiceRecordsAllowed"); if(int.TryParse(val, out var result)) { maxDaysEditServiceRecordsAllowed = result; } val = GetSettingValue(settingsString, "hilfeplanAuslaufAuswahl"); if (int.TryParse(val, out var resulthilf)) { hilfeplanAuslaufAuswahl = resulthilf; } val = GetSettingValue(settingsString, "AnzTageZeiterfassErfolgt"); if (int.TryParse(val, out var resultanzeit)) { anzTageZeiterfassErfolgt = resultanzeit; } val = GetSettingValue(settingsString, "AnzTageUnterschriftErfolgt"); if (int.TryParse(val, out var unterschrift)) { settings.AnzTageUnterschriftErfolgt = unterschrift; } val = GetSettingValue(settingsString, "ZeiterfassungsSchwellwert"); if (int.TryParse(val, out var resultschwell)) { zeiterfassungsSchwellwert = resultschwell; } val = GetSettingValue(settingsString, "DienstplanungStandardZeilenAnzahl"); if (int.TryParse(val, out var zeilenanzahl)) { settings.DienstplanungStandardZeilenAnzahl = zeilenanzahl; } val = GetSettingValue(settingsString, "ShowDistanceFields"); if (val != null && val.Equals("1")) { showServiceRecordsDistanceFields = true; } val = GetSettingValue(settingsString, "ShowCustomerDistanceFields"); if (val != null && val.Equals("1")) { showCustomerDistanceFields = true; } val = GetSettingValue(settingsString, "ShowAdditionalService"); if (val != null && val.Equals("1")) { showAdditionalService = true; } val = GetSettingValue(settingsString, "ShowRoundedDurationInEmployeeAnalysis"); if (val != null && val.Equals("0")) { showRoundedDurationInEmployeeAnalysis = false; } val = GetSettingValue(settingsString, "ShowWorktime"); if (val != null && val.Equals("1")) { settings.ShowWorktime = true; } val = GetSettingValue(settingsString, SettingsKeys.EnableArbeitszeiterfassung); if (val != null && val.Equals("1")) { settings.EnableArbeitszeiterfassung = true; } val = GetSettingValue(settingsString, SettingsKeys.EnableAutomaticPauses); if (val != null && val.Equals("1")) { settings.EnableAutomaticPauses = true; } val = GetSettingValue(settingsString, SettingsKeys.EnableRestTimeWarning); if (val != null && val.Equals("1")) { settings.EnableRestTimeWarning = true; } val = GetSettingValue(settingsString, SettingsKeys.MaxWorkTimeHoursBeforeWarning); int hours; if (Int32.TryParse(val, out hours)) { settings.MaxWorkTimeHoursBeforeWarning = hours; } val = GetSettingValue(settingsString, "SortServiceDescriptionAlphabetically"); if (val != null && val.Equals("1")) { sortServiceDescriptionAlphabetically = true; } val = GetSettingValue(settingsString, "PrinterSettingsUseLandscape"); if (val != null && val.Equals("1")) { printerSettingsUseLandscape = true; } val = GetSettingValue(settingsString, "PrinterSettingsUseMargins"); if (val != null && val.Equals("1")) { printerSettingsUseMargins = true; } val = GetSettingValue(settingsString, "PrinterSettingsUsePaperKind"); if (val != null && val.Equals("1")) { printerSettingsUsePaperKind = true; } val = GetSettingValue(settingsString, "ShowSignature"); if (val != null && val.Equals("1")) { showSignatures = true; } val = GetSettingValue(settingsString, "ShowRtfTextfeld"); if (val != null && val.Equals("1")) { showRtfTextfeld = true; } val = GetSettingValue(settingsString, "ShowChat"); if (val != null && val.Equals("1")) { settings.ShowChat = true; } val = GetSettingValue(settingsString, "StartStundenkonto"); if (val != null && DateTime.TryParse(val, out var dt)) { settings.StartStundenkonto = dt; } val = GetSettingValue(settingsString, SettingsKeys.AnzTageArbeitszeiterfassungErfolgt); int tage; if (Int32.TryParse(val, out tage)) { settings.AnzTageArbeitszeiterfassungErfolgt = tage; } } settings.IsServiceRecordNoticeMandatory = isServiceRecordNoticeMandatory; settings.IsPasswordSecurityActiv = isPasswordSecurityActiv; settings.IsEndDateVisible = isEndDateVisible; settings.IsOnlyYearMonthVisible = isOnlyYearMonthVisible; settings.IsZeiterfassDateNormal = isZeiterfassDateNormal; settings.IsZeiterfassungInStdMin = isZeiterfassungInStdMin; settings.MaxDaysEditServiceRecordsAllowed = maxDaysEditServiceRecordsAllowed; settings.HilfeplanAuslaufAuswahl = hilfeplanAuslaufAuswahl; settings.AnzTageZeiterfassErfolgt = anzTageZeiterfassErfolgt; settings.ZeiterfassungsSchwellwert = zeiterfassungsSchwellwert; settings.ShowDistanceFields = showServiceRecordsDistanceFields; settings.ShowSignatures = showSignatures; settings.ShowRtfTextfeld = showRtfTextfeld; settings.ShowCustomerDistanceFields = showCustomerDistanceFields; settings.ShowAdditionalService = showAdditionalService; settings.ShowRoundedDurationInEmployeeAnalysis = showRoundedDurationInEmployeeAnalysis; settings.SortServiceDescriptionAlphabetically = sortServiceDescriptionAlphabetically; return settings; } public static AppSettings GetUserAppSettings() { AppSettings settings = new AppSettings(); var user = UserRightHelper.GetLoggedInUser(); if (user != null) { var settingsList = MapperFactory.SettingsDC_Settings.MapToNewDCs(user.SettingList); var val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastSelectedServiceRecordTimeInterval, settingsList); if (int.TryParse(val, out var result)) { settings.LastSelectedServiceRecordTimeInterval = (ServiceRecordTimeInterval)result; } val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastSelectedServiceRecordTimeIntervalDays, settingsList); if (val != null) { settings.LastSelectedServiceRecordTimeIntervalDays = Convert.ToInt32(UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastSelectedServiceRecordTimeIntervalDays, settingsList)); } val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastSelectedServiceRecordMonth, settingsList); if (val != null) { settings.LastSelectedServiceRecordMonth = Convert.ToDateTime(UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastSelectedServiceRecordMonth, settingsList)); } } return settings; } public static Mandator GetMandatorEntity() { var manList = DAOFactory.GenericDAO.GetAll(); Mandator man; if (manList == null || manList.Count == 0) { man = new Mandator { Oid = 1 }; DAOFactory.GenericDAO.Insert(man); } else { man = manList[0]; } return man; } private static string GetSettingValue(string settings, string key) { if (!String.IsNullOrEmpty(settings)) { if (settings.IndexOf(";") == -1 && settings.IndexOf("=") == -1) { return settings; } string[] keyValuePairs = settings.Split(';'); foreach (string pair in keyValuePairs) { string[] keyValuePair = pair.Split('='); if (keyValuePair.Length == 2) { if (keyValuePair[0] == key) { return keyValuePair[1]; } } } } return null; } } }