private bool Validate(string code) { if (!new FiscalCodeValidator().Validate(code)) { return(false); } var tokens = code .Token(FiscalCodeTokens.Lastname, 3) .Token(FiscalCodeTokens.Firstname, 3) .Token(FiscalCodeTokens.Year, 2) .Token(FiscalCodeTokens.Month, 1) .Token(FiscalCodeTokens.Day, 2) .Token(FiscalCodeTokens.Area, 4) .Token(FiscalCodeTokens.Control, 1) .Tokens; LastName = new LastNameCode(tokens[FiscalCodeTokens.Lastname]).ToString(); FirstName = new FirstNameCode(tokens[FiscalCodeTokens.Firstname]).ToString(); AssignBirthDateAndSex(tokens); Area = new AreaCode(tokens[FiscalCodeTokens.Area]).ToString(); Control = ControlCode.GetControlCode(code.Substring(0, 15)).ToInvariant(); return(true); }
public bool Validate(string fiscalCode) { if (string.IsNullOrEmpty(fiscalCode) || fiscalCode.Length != 16) { return(false); } fiscalCode = fiscalCode.ToUpper(); if (!fiscalCode.All(char.IsLetterOrDigit)) { return(false); } var formatValid = fiscalCodeFormat.Match(fiscalCode).Success; if (!formatValid) { return(false); } var controlCode = fiscalCode[15]; var calculatedCode = ControlCode.GetControlCode(fiscalCode.Substring(0, 15)); return(calculatedCode == controlCode); }