Files
BeWoPlaner/Shared/Core/UserSettingsUtils.cs
Lyndon Jetten 11f9b1c8e8 FaC:
- Rechte "Klient Betreuung ansehen" und "Klient Abwesenheiten ansehen"

MoK:
- Zeitraumauswahl wird wieder aus den Benutzereinstellungen geladen
- NHibernate Lazy-Loading von Contract->EmploymentType auf false gesetzt, um Probleme mit geschlossener Session im MoK-Mitarbeiterstundenkonto-Bericht zu umgehen
- Eigene Scripte in Verzeichnis "ownsoft-Scripts" verschoben
2023-09-04 16:57:20 +02:00

153 lines
4.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using BS.Shared.DataContracts;
namespace BS.Shared.Core
{
public class UserSettingsUtils
{
public static string CreateNewSettingValue(string settings, string key, string val)
{
if(string.IsNullOrEmpty(settings))
{
return key + "=" + val;
}
var keyValuePairs = settings.Split(';');
var newValue = string.Empty;
foreach(var pair in keyValuePairs)
{
if(pair.IndexOf(key + "=") != 0)
{
if(newValue.Length > 0)
{
newValue += ";";
}
newValue += pair;
}
}
if(newValue.Length > 0)
{
newValue += ";";
}
newValue += key + "=" + val;
return newValue;
}
public static string GetSettingValue(string settings, string key)
{
if(!string.IsNullOrEmpty(settings))
{
if(settings.IndexOf(";") == -1 && settings.IndexOf("=") == -1)
{
return settings;
}
var keyValuePairs = settings.Split(';');
return (from pair in keyValuePairs select pair.Split('=') into keyValuePair where keyValuePair.Length == 2 where keyValuePair[0] == key select keyValuePair[1]).FirstOrDefault();
}
return null;
}
public static SettingsDC GetSettingValue(SettingsType pType, List<SettingsDC> pSettings)
{
return pSettings?.FirstOrDefault(s => s.Type == pType);
}
public static string GetSettingValue(SettingsType pType, string key, List<SettingsDC> pSettings)
{
var dc = GetSettingValue(pType, pSettings);
return dc != null ? GetSettingValue(dc.Value, key) : null;
}
public static void SetSettingValue(SettingsType pType, string key, string val, List<SettingsDC> pSettings)
{
var dc = GetSettingValue(pType, pSettings);
if(dc == null)
{
var newDc = new SettingsDC { Type = pType, Value = CreateNewSettingValue(string.Empty, key, val) };
pSettings.Add(newDc);
}
else
{
dc.Value = CreateNewSettingValue(dc.Value, key, val);
}
}
public static bool GetSettingValueAsBool(string settings, string key)
{
var stringValue = GetSettingValue(settings, key);
return "1" == stringValue;
}
public static int GetSettingValueAsInteger(string settings, string key, int defaultResult = 0)
{
var stringValue = GetSettingValue(settings, key);
var didParse = int.TryParse(stringValue, out var result);
return didParse ? result : defaultResult;
}
public static double GetSettingValueAsDouble(string settings, string key, double defaultResult = 0d)
{
var stringValue = GetSettingValue(settings, key);
var didParse = double.TryParse(stringValue, out var result);
return didParse ? result : defaultResult;
}
public static long GetSettingValueAsLong(string settings, string key, long defaultResult = 0L)
{
var stringValue = GetSettingValue(settings, key);
var didParse = long.TryParse(stringValue, out var result);
return didParse ? result : defaultResult;
}
public static DateTime? GetSettingValueAsDateTime(string settings, string key)
{
var stringValue = GetSettingValue(settings, key);
if(DateTime.TryParse(stringValue, out var result))
{
return result;
}
return null;
}
/// <summary>
/// Konvertiert einen Settingswert in einen Enum. Der Settings-Value ist ein String, der einen Integer-Wert darstellt.
/// </summary>
/// <typeparam name="T">Enum in den konvertiert werden soll</typeparam>
/// <param name="settings">User- oder MandatorSettings</param>
/// <param name="key">Key des Wertes</param>
/// <param name="defaultResult">Standardwert, falls die Konversion fehlschlägt</param>
/// <returns></returns>
public static T GetSettingValueAsEnum<T>(string settings, string key, T defaultResult) where T : struct, Enum
{
var stringValue = GetSettingValue(settings, key);
var didParse = Enum.TryParse(stringValue, out T result);
var isDefined = Enum.IsDefined(typeof(T), result);
return didParse && isDefined ? result : defaultResult;
}
}
}