Files
kreta/Kreta.WebApi/Naplo/Kreta.Naplo.Domain/V3/UniqueIdentifier/OrarendElemUid.cs
T
2024-03-13 00:33:46 +01:00

46 lines
1.4 KiB
C#

using System;
using System.Collections.Generic;
using Kreta.Enums.ManualEnums;
using Kreta.Naplo.Domain.V3.Interfaces;
using Kreta.Naplo.Domain.V3.Logic;
namespace Kreta.Naplo.Domain.V3.UniqueIdentifier
{
public class OrarendElemUid : IReadonlyUidRaw, IEqualityComparer<OrarendElemUid>
{
public OrarendElemUid()
{
}
public OrarendElemUid(int id, CalendarOraTypeEnum tipus, DateTime datum)
{
Id = id;
Tipus = tipus;
Datum = datum;
UidRaw = UidLogic.Concat(id, tipus, datum);
}
public OrarendElemUid(string uidRaw)
{
var compositeKeyElements = UidLogic.GetCompositeKeyElements(uidRaw);
Id = int.Parse(compositeKeyElements[0]);
Tipus = (CalendarOraTypeEnum)System.Enum.Parse(typeof(CalendarOraTypeEnum), compositeKeyElements[1]);
Datum = DateTime.Parse(compositeKeyElements[2]).ToLocalTime().Date;
UidRaw = uidRaw;
}
public int Id { get; set; }
public string UidRaw { get; private set; }
public CalendarOraTypeEnum Tipus { get; set; }
public DateTime Datum { get; set; }
public bool Equals(OrarendElemUid x, OrarendElemUid y) => x == y || x.UidRaw == y.UidRaw;
public int GetHashCode(OrarendElemUid obj) => obj.UidRaw.GetHashCode();
}
}