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}"));
        }
Пример #4
0
        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 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}"));
        }
Пример #6
0
        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}"));
        }
Пример #7
0
        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}")));
        }