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