278 lines
11 KiB
C#
278 lines
11 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;
|
|
}
|
|
|
|
public static void SetDefaultFlsConfigSetting(FLSAnalysisConfigDC config, List<SettingsDC> settings)
|
|
{
|
|
if (config != null)
|
|
{
|
|
SetSettingValue(SettingsType.FlsDefaultFilterSettings, "StartDate", config.StartDate.HasValue ? String.Format("{0:dd.MM.yyyy}", config.StartDate) : "", settings);
|
|
SetSettingValue(SettingsType.FlsDefaultFilterSettings, "EndDate", config.EndDate.HasValue ? String.Format("{0:dd.MM.yyyy}", config.EndDate) : "", settings);
|
|
SetSettingValue(SettingsType.FlsDefaultFilterSettings, "ShowChart", config.ShowChart ? "1" : "0", settings);
|
|
SetSettingValue(SettingsType.FlsDefaultFilterSettings, "ShowServiceRecords", config.ShowServiceRecords ? "1" : "0", settings);
|
|
SetSettingValue(SettingsType.FlsDefaultFilterSettings, "ShowOnlyTotalRows", config.ShowOnlyTotalRows ? "1" : "0", settings);
|
|
SetSettingValue(SettingsType.FlsDefaultFilterSettings, "ShowOnlyMarker", config.ShowOnlyMarker ? "1" : "0", settings);
|
|
SetSettingValue(SettingsType.FlsDefaultFilterSettings, "ShowEinheitInMinuten", config.ShowEinheitInMinuten ? "1" : "0", settings);
|
|
SetSettingValue(SettingsType.FlsDefaultFilterSettings, "ShowOnlyDeleted", config.ShowOnlyDeleted ? "1" : "0", settings);
|
|
SetSettingValue(SettingsType.FlsDefaultFilterSettings, "ShowArchivedEmployees", config.ShouldAnalyzeArchivedEmployees ? "1" : "0", settings);
|
|
SetSettingValue(SettingsType.FlsDefaultFilterSettings, "DateInterval", config.DateInterval.HasValue ? config.DateInterval.Value.ToString() : "", settings);
|
|
SetSettingValue(SettingsType.FlsDefaultFilterSettings, "ReportType", ((int)config.ReportType).ToString(), settings);
|
|
SetSettingValue(SettingsType.FlsDefaultFilterSettings, "EmployeeOid", config.EmployeeOid.HasValue ? config.EmployeeOid.Value.ToString() : "0", settings);
|
|
SetSettingValue(SettingsType.FlsDefaultFilterSettings, "CustomerOid", config.CustomerOid.HasValue ? config.CustomerOid.Value.ToString() : "0", settings);
|
|
|
|
if (config.ServiceDescriptionOids == null)
|
|
{
|
|
config.ServiceDescriptionOids = new List<long>();
|
|
}
|
|
SetSettingValue(SettingsType.FlsDefaultFilterSettings, "ServiceDescriptionOids", String.Join(",", config.ServiceDescriptionOids), settings);
|
|
|
|
}
|
|
}
|
|
|
|
public static FLSAnalysisConfigDC GetDefaultFlsConfigSetting(List<SettingsDC> settings, long loggedInEmployeeOid)
|
|
{
|
|
var config = CreateDefaultConfig();
|
|
config.EmployeeOid = loggedInEmployeeOid;
|
|
|
|
var val = GetSettingValue(SettingsType.FlsDefaultFilterSettings, "StartDate", settings);
|
|
|
|
if (val != null && DateTime.TryParse(val, out var sdt))
|
|
{
|
|
config.StartDate = sdt;
|
|
}
|
|
val = GetSettingValue(SettingsType.FlsDefaultFilterSettings, "EndDate", settings);
|
|
if (val != null && DateTime.TryParse(val, out var edt))
|
|
{
|
|
config.EndDate = edt;
|
|
}
|
|
val = GetSettingValue(SettingsType.FlsDefaultFilterSettings, "ShowChart", settings);
|
|
config.ShowChart = "1".Equals(val);
|
|
|
|
val = GetSettingValue(SettingsType.FlsDefaultFilterSettings, "ShowServiceRecords", settings);
|
|
config.ShowServiceRecords = "1".Equals(val);
|
|
|
|
val = GetSettingValue(SettingsType.FlsDefaultFilterSettings, "ShowOnlyTotalRows", settings);
|
|
config.ShowOnlyTotalRows = "1".Equals(val);
|
|
|
|
val = GetSettingValue(SettingsType.FlsDefaultFilterSettings, "ShowOnlyMarker", settings);
|
|
config.ShowOnlyMarker = "1".Equals(val);
|
|
|
|
val = GetSettingValue(SettingsType.FlsDefaultFilterSettings, "ShowEinheitInMinuten", settings);
|
|
config.ShowEinheitInMinuten = "1".Equals(val);
|
|
|
|
val = GetSettingValue(SettingsType.FlsDefaultFilterSettings, "ShowOnlyDeleted", settings);
|
|
config.ShowOnlyDeleted = "1".Equals(val);
|
|
|
|
val = GetSettingValue(SettingsType.FlsDefaultFilterSettings, "ShowArchivedEmployees", settings);
|
|
config.ShouldAnalyzeArchivedEmployees = "1".Equals(val);
|
|
|
|
val = GetSettingValue(SettingsType.FlsDefaultFilterSettings, "DateInterval", settings);
|
|
if (val != null && Int32.TryParse(val, out var di))
|
|
{
|
|
config.DateInterval = di;
|
|
}
|
|
val = GetSettingValue(SettingsType.FlsDefaultFilterSettings, "ReportType", settings);
|
|
if (val != null && Int32.TryParse(val, out var rt))
|
|
{
|
|
config.ReportType = (FLSReportType)rt;
|
|
}
|
|
val = GetSettingValue(SettingsType.FlsDefaultFilterSettings, "EmployeeOid", settings);
|
|
if (val != null && Int64.TryParse(val, out var eoid))
|
|
{
|
|
config.EmployeeOid = eoid;
|
|
if (eoid == 0)
|
|
{
|
|
config.EmployeeOid = null;
|
|
}
|
|
}
|
|
|
|
val = GetSettingValue(SettingsType.FlsDefaultFilterSettings, "CustomerOid", settings);
|
|
if (val != null && Int64.TryParse(val, out var coid))
|
|
{
|
|
config.CustomerOid = coid;
|
|
if (coid == 0)
|
|
{
|
|
config.CustomerOid = null;
|
|
}
|
|
}
|
|
val = GetSettingValue(SettingsType.FlsDefaultFilterSettings, "ServiceDescriptionOids", settings);
|
|
if (val != null)
|
|
{
|
|
config.ServiceDescriptionOids = val.Split(',').Select(s => s.Trim()).Where(s => long.TryParse(s, out _)).Select(long.Parse).ToList();
|
|
}
|
|
|
|
return config;
|
|
|
|
}
|
|
|
|
private static FLSAnalysisConfigDC CreateDefaultConfig()
|
|
{
|
|
var config = new FLSAnalysisConfigDC();
|
|
|
|
var startDate = DateTime.Now.AddMonths(-1);
|
|
|
|
config.StartDate = new DateTime(startDate.Year, startDate.Month, 1);
|
|
config.EndDate = DateTime.Now;
|
|
|
|
config.ShowChart = false;
|
|
config.ShowServiceRecords = false;
|
|
config.ShowOnlyTotalRows = false;
|
|
config.ShowOnlyMarker = false;
|
|
config.ShowEinheitInMinuten = false;
|
|
config.ShowOnlyDeleted = false;
|
|
config.DateInterval = 4; // Woche, enum DateInterval in FLSOverviewGenerator.cs
|
|
config.ReportType = FLSReportType.Employee;
|
|
|
|
|
|
return config;
|
|
}
|
|
}
|
|
}
|