49 lines
1.5 KiB
C#
49 lines
1.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using Kreta.Ellenorzo.Domain.VN.Interfaces;
|
|
using Kreta.Ellenorzo.Domain.VN.Logic;
|
|
using Kreta.Enums.ManualEnums;
|
|
|
|
namespace Kreta.Ellenorzo.Domain.VN.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)Enum.Parse(typeof(CalendarOraTypeEnum), compositeKeyElements[1]);
|
|
Datum = DateTime.Parse(compositeKeyElements[2]).ToLocalTime().Date;
|
|
UidRaw = uidRaw;
|
|
}
|
|
|
|
public int Id { get; private set; }
|
|
|
|
public int OrarendiOraId { get; set; }
|
|
|
|
public int OrarendiOraGroupId { 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();
|
|
}
|
|
}
|