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 { 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(); } }