public static VGRIdentifier BuildVGRIdentifier(this PersonIdentifierBuilder builder) { var random = new Random(Guid.NewGuid().GetHashCode()); var date = new PersonIdentifierBuilder.PersonIdentifierDateBuilder(random).Build(builder); var gender = new PersonIdentifierBuilder.PersonIdentifierGenderBuilder(random).Build(builder, true); var genderMap = VGRFormatter.GenderMap.Find(x => x.Gender == gender); int sequence = 0; if (gender == PersonIdentityGender.Female) { sequence = 2 * random.Next(6 / 2, 80 / 2); } if (gender == PersonIdentityGender.Male) { sequence = 2 * random.Next(6 / 2, 80 / 2) + 1; } if (gender == PersonIdentityGender.Unknown) { sequence = random.Next(80, 90); } var number = $"{date:yyyyMMdd}{genderMap.Number}{sequence:00}"; var luhnCheckSum = LuhnAlgorithm.Generate(number); var fourLast = $"{genderMap.Letter}{sequence:00}{luhnCheckSum}"; return(new VGRIdentifier($"{date:yyyyMMdd}{fourLast}")); }
public static ROLIdentifier BuildROLIdentifier(this PersonIdentifierBuilder builder) { var random = new Random(Guid.NewGuid().GetHashCode()); var dateBuilder = new PersonIdentifierBuilder.PersonIdentifierDateBuilder(random); var date = (dateBuilder.HaveDate(builder)) ? dateBuilder.Build(builder).ToString("yyyyMMdd") : random.Next(0, 100000000).ToString("00000000"); var num = random.Next(0, 26); var pos2 = ((char)('a' + num)).ToString().ToUpper(); if (random.Next(0, 2) == 0) { pos2 = random.Next(0, 10).ToString(); } var pos3 = random.Next(0, 10); num = random.Next(0, 26); var pos4 = ((char)('a' + num)).ToString().ToUpper(); if (random.Next(0, 2) == 0) { pos4 = random.Next(0, 10).ToString(); } return(new ROL.ROLIdentifier($"{date}{ROLFormatter.RegionChar}{pos2}{pos3:0}{pos4}")); }
public static LiVIdentifier BuildLiVIdentifier(this PersonIdentifierBuilder builder) { var random = new Random(Guid.NewGuid().GetHashCode()); var dateBuilder = new PersonIdentifierBuilder.PersonIdentifierDateBuilder(random); var genderBuilder = new PersonIdentifierBuilder.PersonIdentifierGenderBuilder(random); var date = dateBuilder.Build(builder); var type = dateBuilder.HaveDate(builder) ? 'F' : LiVFormatter.ValidTypeLetters[random.Next(0, LiVFormatter.ValidTypeLetters.Length)]; var gender = genderBuilder.Build(builder); int genderNumber; if (gender == PersonIdentityGender.Unknown) { genderNumber = random.Next(0, 2); } else { do { genderNumber = genderBuilder.ConvertToInt(gender); } while (genderNumber <= 1); } var order = LiVFormatter.ValidOrderLetters[random.Next(0, LiVFormatter.ValidOrderLetters.Length)]; return(new LiVIdentifier($"{date:yyyyMMdd}{LiVFormatter.RegionChar}{type}{genderNumber}{order}")); }
public void CanLoad_4() { var identity = new PersonIdentifierBuilder().BuildSLLIdentifier(); var loaded = PersonIdentifier.Load(SLLIdentifier.Oid, identity.ToString(PersonIdentifierFormatOption.None)); Assert.IsInstanceOfType(loaded, typeof(SLLIdentifier)); Print(identity); }
public static PersonalNumberIdentifier BuildPersonalNumber(this PersonIdentifierBuilder builder) { var random = new Random(Guid.NewGuid().GetHashCode()); var date = new PersonIdentifierBuilder.PersonIdentifierDateBuilder(random).Build(builder); var gender = new PersonIdentifierBuilder.PersonIdentifierGenderBuilder(random).BuildAsInt(builder); var serial = random.Next(0, 100).ToString("00"); var luhnChecksum = LuhnAlgorithm.Generate($"{date:yyMMdd}{serial}{gender}"); return(new PersonalNumberIdentifier($"{date:yyyyMMdd}{serial}{gender}{luhnChecksum}")); }
public void CanCreate() { var identity = new PersonIdentifierBuilder().BornYear(1979).BornMonth(11).BornDay(9).AsFemale.BuildSLLIdentifier(); Assert.IsInstanceOfType(identity, typeof(SLLIdentifier)); Assert.IsFalse(identity.CanCalculateBirthDate); Assert.IsFalse(identity.CanCalculateGender); Print(identity); }
public static CoordinationNumberIdentifier BuildCoordinationNumber(this PersonIdentifierBuilder builder) { var random = new Random(Guid.NewGuid().GetHashCode()); var date = new PersonIdentifierBuilder.PersonIdentifierDateBuilder(random).Build(builder); var gender = new PersonIdentifierBuilder.PersonIdentifierGenderBuilder(random).BuildAsInt(builder); var dayWithAddedDays = date.Day + CoordinationNumberFormatter.AddToDays; var serial = random.Next(0, 100).ToString("00"); var luhnChecksum = LuhnAlgorithm.Generate($"{date:yyMM}{dayWithAddedDays:00}{serial}{gender}"); return(new CoordinationNumberIdentifier($"{date:yyyyMM}{dayWithAddedDays:00}{serial}{gender}{luhnChecksum}")); }
public static SLLIdentifier BuildSLLIdentifier(this PersonIdentifierBuilder builder) { var random = new Random(Guid.NewGuid().GetHashCode()); var year = new PersonIdentifierBuilder.PersonIdentifierDateBuilder(random).Build(builder).Year; var sequence = random.Next(0, 100000); var nr = $"{SLLFormatter.Start}{year:0000}{sequence:00000}"; var luhnCheckSum = LuhnAlgorithm.Generate(nr); return(new SLLIdentifier($"{nr}{luhnCheckSum}")); }
public void CanCreate() { var identity = new PersonIdentifierBuilder().BornYear(1979).BornMonth(11).BornDay(9).AsFemale.BuildCoordinationNumber(); Assert.IsInstanceOfType(identity, typeof(CoordinationNumberIdentifier)); Assert.IsTrue(identity.CanCalculateBirthDate); Assert.AreEqual(40, identity.CalculateAge(new DateTime(2020, 1, 1))); Assert.IsTrue(identity.CanCalculateGender); Assert.AreEqual(PersonIdentityGender.Female, identity.CalculatedGender); Print(identity); }
public static NationalReserveNumberIdentifier BuildNationalReserveNumber(this PersonIdentifierBuilder builder) { var random = new Random(Guid.NewGuid().GetHashCode()); int year, month, day; var dateBuilder = new PersonIdentifierBuilder.PersonIdentifierDateBuilder(random); if (!dateBuilder.HaveDate(builder)) { //Skapa reservnummer där fördelsedatum är okänt year = random.Next(1, 100); month = random.Next(20, 100); day = random.Next(40, 60); } else { var date = dateBuilder.Build(builder); year = date.Year + (random.Next(0, 2) == 0 ? 300 : 600); //Orkar inte hantera fler alternativ!! month = date.Month; day = date.Day; } var genderBuilder = new PersonIdentifierBuilder.PersonIdentifierGenderBuilder(random); string serial; do { var firstRandom = Letters[random.Next(0, Letters.Length)]; var secondRandom = Letters[random.Next(0, Letters.Length)]; var gender = genderBuilder.HaveGender(builder) ? genderBuilder.BuildAsInt(builder).ToString() : Letters[random.Next(0, 21)]; serial = $"{firstRandom}{secondRandom}{gender}"; } while (UnwantedStrings.Contains(serial)); var luhnPart = $"{year:0000}{month:00}{day:00}{serial}"; var check = LuhnAlgorithm.Generate(luhnPart); var century = year > 1000 ? Convert.ToInt32(year.ToString().Substring(0, 2)) : 0; var twoDigitYear = year > 1000 ? Convert.ToInt32(year.ToString().Substring(2, 2)) : year; return(new NationalReserveNumberIdentifier(new NationalReserveNumberFormatter($"{century:00}{twoDigitYear:00}{month:00}{day:00}{serial}{check}"))); }