示例#1
0
        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);
        }
示例#2
0
        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);
        }