using HashidsNet; using Knoks.Core.Logic.Interfaces; using System; using System.Collections.Generic; using System.Text; namespace Knoks.Core.Logic.Managers { public class UidManager : IUidManager { private static readonly string salt = "rtgk320oSegb32v4rgbf"; //private static readonly Hashids hashids = new Hashids("rtgk320oSegb32v4rgbf", 8); public string ToUid(long? value, Type type = null, string cause = null) { Hashids hashids = new Hashids($"{salt}{type?.Name.ToString()}{cause}", 8); return value == null ? null : hashids.EncodeLong(value.Value); } public long? ToValue(string uid, Type type = null, string cause = null) { Hashids hashids = new Hashids($"{salt}{type?.Name.ToString()}{cause}", 8); return uid == null ? null : (long?)hashids.DecodeLong(uid)[0]; } public string ToIntUid(int? value, Type type = null, string cause = null) { Hashids hashids = new Hashids($"{salt}{type?.Name.ToString()}{cause}", 8); return value == null ? null : hashids.EncodeLong(value.Value); } public int? ToIntValue(string uid, Type type = null, string cause = null) { Hashids hashids = new Hashids($"{salt}{type?.Name.ToString()}{cause}", 8); return uid == null ? null : (int?)hashids.Decode(uid)[0]; } } }