Exemple #1
0
        /// <summary>
        /// Parse a personal identifier.
        /// Can only parse to <see cref="NationalReserveNumberIdentifier"/>, <see cref="CoordinationNumberIdentifier"/> or <see cref="PersonalNumberIdentifier"/>.
        /// </summary>
        /// <param name="value">A string representation of a personal identifier.</param>
        /// <returns>An instance of <see cref="NationalReserveNumberIdentifier"/>, <see cref="CoordinationNumberIdentifier"/> or <see cref="PersonalNumberIdentifier"/></returns>
        public static IPersonIdentifier Parse(string value)
        {
            var formatter = new DateBasedFormatter(value);
            IPersonIdentifier identifier = null;

            if (formatter.Century == 0 || (formatter.Century >= 22 && formatter.Century <= 78 && (formatter.Century - 19) % 3 == 0))
            {
                identifier = new NationalReserveNumberIdentifier(value);
            }
            else if (formatter.HaveValidYear() && formatter.IsAllNumeric())
            {
                if (formatter.Day > 31)
                {
                    identifier = new CoordinationNumberIdentifier(value);
                }
                else
                {
                    identifier = new PersonalNumberIdentifier(value);
                }
            }

            if (identifier == null)
            {
                throw new PersonIdentifierFormatException(value, ExceptionMessage.NotAbleToParse);
            }

            return(identifier);
        }
        protected void Print(IPersonIdentifier identifier)
        {
            string gender = identifier.CanCalculateGender ? identifier.CalculatedGender.ToString() : "[N/A]";
            var    age    = identifier.CanCalculateBirthDate ? identifier.CalculateAge().ToString() : "[N/A]";

            Console.WriteLine("{3}: {0}   gender:{1}   age:{2}", identifier.ToString(PersonIdentifierFormatOption.ForDisplay), gender, age, identifier.GetType().Name);
        }
Exemple #3
0
        private static void Print(IPersonIdentifier id)
        {
            var gender = id.CanCalculateGender ? id.CalculatedGender.ToString() : "[N/A]";
            var age    = id.CanCalculateBirthDate ? id.CalculateAge().ToString() : "[N/A]";


            Console.WriteLine("{0}\t\t{1}\t\t{2}", id.ToString(PersonIdentifierFormatOption.ForDisplay), gender, age);
        }
Exemple #4
0
 public static bool TryParse(string value, out IPersonIdentifier identifier)
 {
     try
     {
         identifier = Parse(value);
         return(true);
     }
     catch (Exception)
     {
         identifier = null;
         return(false);
     }
 }
Exemple #5
0
 public static bool TryLoad(string oid, string value, out IPersonIdentifier identifier)
 {
     try
     {
         identifier = Load(oid, value);
         return(true);
     }
     catch (Exception)
     {
         identifier = null;
         return(false);
     }
 }