using System; using System.Collections.Generic; using Kreta.Core; using Kreta.Core.Enum; using Kreta.Core.Exceptions; using Kreta.Ellenorzo.Domain.VN.Interfaces; using Kreta.Ellenorzo.Domain.VN.Logic; using Kreta.Enums; namespace Kreta.Ellenorzo.Domain.VN.UniqueIdentifier { public class OktatasiNevelesiFeladatUid : IReadonlyUidRaw, IEqualityComparer { public OktatasiNevelesiFeladatUid(int? id, OktatasiNevelesiFeladatEnum? oktatasiNevelesiFeladat) { Id = id; OktatasiNevelesiFeladat = oktatasiNevelesiFeladat; UidRaw = UidLogic.Concat(id, oktatasiNevelesiFeladat); } public OktatasiNevelesiFeladatUid(string uidRaw) { var compositeKeyElements = UidLogic.GetCompositeKeyElements(uidRaw); if (compositeKeyElements != null) { Id = Extensions.ToNullableInt(compositeKeyElements[0]); OktatasiNevelesiFeladat = Enum.IsDefined(typeof(OktatasiNevelesiFeladatEnum), compositeKeyElements[1]) ? (OktatasiNevelesiFeladatEnum?)Enum.Parse(typeof(OktatasiNevelesiFeladatEnum), compositeKeyElements[1]) : null; UidRaw = uidRaw; } else { throw new BlException(BlExceptionType.ValtozoErtekeNemLehetNull); } } public int? Id { get; private set; } public OktatasiNevelesiFeladatEnum? OktatasiNevelesiFeladat { get; set; } public string UidRaw { get; private set; } public bool Equals(OktatasiNevelesiFeladatUid x, OktatasiNevelesiFeladatUid y) => x == y || (x.Id == y.Id && x.OktatasiNevelesiFeladat == y.OktatasiNevelesiFeladat); public int GetHashCode(OktatasiNevelesiFeladatUid obj) => obj.UidRaw.GetHashCode(); } }