Пример #1
0
        private ParseResult ParseINSEE()
        {
            DateTime?birthdate = null;
            Sexe?    sexe      = null;

            if (IsValid)
            {
                switch (int.Parse(CleanedVersion.Substring(0, 1)))
                {
                case 1:
                case 3:
                case 7:
                    sexe = I.Sexe.MALE;
                    break;

                case 2:
                case 4:
                case 8:
                    sexe = I.Sexe.FEMALE;
                    break;

                default:
                    sexe = I.Sexe.NOT_KNOWN;
                    break;
                }

                int yy = 1900 + int.Parse(CleanedVersion.Substring(1, 2));
                int mm = int.Parse(CleanedVersion.Substring(3, 2));
                if (1 <= mm && mm <= 12)
                {
                    try
                    {
                        birthdate = new DateTime(yy, mm, 1);
                        if (birthdate > DateTime.Today)
                        {
                            birthdate = null;
                        }
                    }
                    // ReSharper disable once EmptyGeneralCatchClause
                    catch
                    {
                    }
                }
            }

            return(new ParseResult(birthdate, sexe));
        }
Пример #2
0
        private ParseResult ParseINSS()
        {
            DateTime?birthdate = null;
            Sexe?    sexe      = null;

            if (IsValid)
            {
                bool calcSexe      = false;
                bool calcBirthDate = false;
                int  yy            = int.Parse(CleanedVersion.Substring(0, 2));
                int  mm            = int.Parse(CleanedVersion.Substring(2, 2));
                int  dd            = int.Parse(CleanedVersion.Substring(4, 2));
                int  vvv           = int.Parse(CleanedVersion.Substring(6, 3));

                int yyOffset;
                {
                    yyOffset = ValidBefore2000(CleanedVersion) ? 1900 : 2000;
                }

                yy = yy + yyOffset;

                if (mm < 20)
                {
                    calcSexe      = true;
                    calcBirthDate = true;
                }
                else if (20 <= mm && mm < 40)
                {
                    mm           -= 20;
                    calcBirthDate = true;
                }
                else if (40 <= mm && mm < 60)
                {
                    mm           -= 40;
                    calcSexe      = true;
                    calcBirthDate = true;
                }

                if (calcSexe)
                {
                    sexe = vvv == 0 || vvv == 999
                               ? I.Sexe.NOT_KNOWN
                               : vvv % 2 == 1
                                   ? I.Sexe.MALE
                                   : I.Sexe.FEMALE;
                }

                if (calcBirthDate && mm > 0 && dd > 0)
                {
                    try
                    {
                        birthdate = new DateTime(yy, mm, dd);
                        if (birthdate > DateTime.Today)
                        {
                            birthdate = null;
                        }
                    }
                    // ReSharper disable once EmptyGeneralCatchClause
                    catch
                    {
                    }
                }
            }

            return(new ParseResult(birthdate, sexe));
        }