init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
|
@ -0,0 +1,86 @@
|
|||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using Kreta.Naplo.Domain.V3.UniqueIdentifier;
|
||||
|
||||
namespace Kreta.Naplo.Domain.V3.Adatszotar
|
||||
{
|
||||
[Serializable]
|
||||
public class Adatszotar<T> where T : System.Enum
|
||||
{
|
||||
private string _leiras;
|
||||
|
||||
public Adatszotar(int id)
|
||||
{
|
||||
Uid = new AdatszotarUid(id, GetEnumName(id));
|
||||
}
|
||||
|
||||
public Adatszotar(int id, string leiras)
|
||||
{
|
||||
Uid = new AdatszotarUid(id, GetEnumName(id));
|
||||
Leiras = leiras;
|
||||
}
|
||||
|
||||
public Adatszotar(string leiras)
|
||||
{
|
||||
Uid = new AdatszotarUid(0, GetEnumName(0));
|
||||
Leiras = leiras;
|
||||
}
|
||||
|
||||
public Adatszotar(string nev, string leiras)
|
||||
{
|
||||
Uid = new AdatszotarUid(0, nev);
|
||||
Leiras = leiras;
|
||||
}
|
||||
|
||||
public string EnumTypeFullName => typeof(T).Name;
|
||||
|
||||
public string EnumTypeName => EnumTypeFullName.Replace("Enum", string.Empty).Replace("enum", string.Empty);
|
||||
|
||||
public static bool IsAdatszotarElem(int id) => id >= Constant.EgyedilegFelvettAdatSzotarElemStartIndex && string.IsNullOrWhiteSpace(System.Enum.GetName(typeof(T), id));
|
||||
|
||||
public string Leiras { get => _leiras ?? GetDisplayNameAttribute(); private set => _leiras = value; }
|
||||
|
||||
public AdatszotarUid Uid { get; private set; }
|
||||
|
||||
private string GetEnumName(int id) => id == 0 ? $"{typeof(T)}_{nameof(Enum.Adatszotar.IsmeretlenErtek)}"
|
||||
: IsAdatszotarElem(id) ? nameof(Enum.Adatszotar.AdatszotarElem)
|
||||
: System.Enum.GetName(typeof(T), id);
|
||||
|
||||
public override bool Equals(object obj) => obj is Adatszotar<T> @enum && Uid.Id == @enum.Uid.Id;
|
||||
|
||||
public T GetEnum() => (T)System.Enum.Parse(typeof(T), Uid.Nev);
|
||||
|
||||
public override int GetHashCode() => 2_108_858_624 + Uid.Id.GetHashCode();
|
||||
|
||||
private string GetDisplayNameAttribute()
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(Uid.Nev))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var fieldInfo = typeof(T).GetField(Uid.Nev);
|
||||
|
||||
if (fieldInfo != null)
|
||||
{
|
||||
var attributes = (DisplayAttribute)fieldInfo.GetCustomAttributes(typeof(DisplayAttribute), false).FirstOrDefault();
|
||||
|
||||
if (attributes != null)
|
||||
{
|
||||
return attributes.GetName();
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static implicit operator Adatszotar<T>(int id) => new Adatszotar<T>(id);
|
||||
|
||||
public static implicit operator Adatszotar<T>(T enumValue) => new Adatszotar<T>(Convert.ToInt32(enumValue));
|
||||
|
||||
public static bool operator !=(Adatszotar<T> lhsWrapper, T rhsEnum) => IsAdatszotarElem(lhsWrapper.Uid.Id) || !lhsWrapper.GetEnum().Equals(rhsEnum);
|
||||
|
||||
public static bool operator ==(Adatszotar<T> lhsWrapper, T rhsEnum) => !IsAdatszotarElem(lhsWrapper.Uid.Id) && lhsWrapper.GetEnum().Equals(rhsEnum);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue