Files
BeWoPlaner/Shared/DataContracts/ClientPartials/UserDC.cs
2016-06-27 01:45:38 +02:00

122 lines
3.6 KiB
C#

using System.Collections.Generic;
using System.Linq;
namespace BS.Shared.DataContracts
{
public partial class UserDC
{
public override bool Equals(object obj)
{
if (obj is UserDC)
{
var y = (UserDC)obj;
if (this.UserOid == null && y.UserOid == null)
{
return this.GetHashCode() == y.GetHashCode();
}
if (this.UserOid != null && y.UserOid != null)
{
return this.UserOid == y.UserOid;
}
}
return false;
}
public List<UserRightType> GetGrantedRights()
{
return (this.UserGroups != null) ? this.UserGroups.Where(g => g.Rights != null).SelectMany(g => g.Rights).Distinct().ToList() : new List<UserRightType>();
}
public override int GetHashCode()
{
return this.UserOid.HasValue ? this.GetType().Name.GetHashCode() ^ this.UserOid.GetHashCode() : base.GetHashCode();
}
public SettingsDC GetSettingValue(SettingsType pType)
{
if (this.Settings != null)
{
return this.Settings.SingleOrDefault(s => s.Type == pType);
}
return null;
}
public string GetSettingValue(SettingsType pType, string key)
{
SettingsDC dc = this.GetSettingValue(pType);
if (dc != null && dc.Value.IndexOf(";") == -1 && dc.Value.IndexOf("=") == -1)
{
return dc.Value;
}
else
{
string[] keyValuePairs = dc.Value.Split(';');
foreach (string pair in keyValuePairs)
{
string[] keyValuePair = pair.Split('=');
if (keyValuePair.Length == 2)
{
if (keyValuePair[0] == key)
{
return keyValuePair[1];
}
}
}
}
return null;
}
public bool HasRight(UserRightType right)
{
return this.GetGrantedRights().Contains(right);
}
public void SetSettingValue(SettingsType pType, string key, string val)
{
SettingsDC dc = this.GetSettingValue(pType);
if (dc == null)
{
SettingsDC newDc = new SettingsDC();
newDc.Type = pType;
newDc.Value = key + "=" + val;
this.Settings.Add(newDc);
}
else
{
string[] keyValuePairs = dc.Value.Split(';');
string newValue = string.Empty;
foreach (string pair in keyValuePairs)
{
if (pair.IndexOf(key + "=") != 0)
{
if (newValue.Length > 0)
{
newValue += ";";
}
newValue += pair;
}
}
if (newValue.Length > 0)
{
newValue += ";";
}
newValue += key + "=" + val;
dc.Value = newValue;
}
}
public override string ToString()
{
return this.Employee.ToString();
}
}
}