46 lines
1.8 KiB
C#
46 lines
1.8 KiB
C#
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<OktatasiNevelesiFeladatUid>
|
|
{
|
|
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();
|
|
}
|
|
}
|