diff --git a/IdParser.Tests/DriversLicenseTests.cs b/IdParser.Tests/DriversLicenseTests.cs index 5dea0f2..3f6da35 100644 --- a/IdParser.Tests/DriversLicenseTests.cs +++ b/IdParser.Tests/DriversLicenseTests.cs @@ -12,6 +12,7 @@ public void TestMA2009License() { var idCard = IdParser.Parse(file, true); Assert.AreEqual("SMITH", idCard.LastName); + Assert.AreEqual("MA", idCard.IssuerIdentificationNumber.GetAbbreviation()); } [TestMethod] @@ -24,6 +25,7 @@ public void TestMA2016License() { Assert.AreEqual("24 BEACON STREET", idCard.StreetLine1); Assert.AreEqual("MA504", idCard.AdditionalJurisdictionElements.Single(e => e.Key == "ZMZ").Value); Assert.AreEqual("02133-0000", idCard.FormattedPostalCode); + Assert.AreEqual("MA", idCard.IssuerIdentificationNumber.GetAbbreviation()); if (idCard is DriversLicense) { var license = (DriversLicense)idCard; @@ -41,6 +43,7 @@ public void TestNYLicense() { Assert.AreEqual("Michael", license.LastName); Assert.AreEqual(new DateTime(2013, 08, 31), license.DateOfBirth); Assert.AreEqual("New York", license.IssuerIdentificationNumber.GetDescription()); + Assert.AreEqual("NY", license.IssuerIdentificationNumber.GetAbbreviation()); } [TestMethod] @@ -49,6 +52,7 @@ public void TestVALicense() { var idCard = IdParser.Parse(file); Assert.AreEqual("STAUNTON", idCard.City); + Assert.AreEqual("VA", idCard.IssuerIdentificationNumber.GetAbbreviation()); if (idCard is DriversLicense) { var license = (DriversLicense)idCard; @@ -65,6 +69,7 @@ public void TestGALicense() Assert.AreEqual("123 NORTH STATE ST.", idCard.StreetLine1); Assert.AreEqual("Georgia", idCard.IssuerIdentificationNumber.GetDescription()); + Assert.AreEqual("GA", idCard.IssuerIdentificationNumber.GetAbbreviation()); if (idCard is DriversLicense) { var license = (DriversLicense)idCard; @@ -82,6 +87,7 @@ public void TestCTLicense() Assert.IsTrue(idCard.IsOrganDonor); Assert.AreEqual("CTLIC", idCard.LastName); Assert.AreEqual("990000001", idCard.IdNumber); + Assert.AreEqual("CT", idCard.IssuerIdentificationNumber.GetAbbreviation()); } [TestMethod] diff --git a/IdParser/AbbreviationAttribute.cs b/IdParser/AbbreviationAttribute.cs new file mode 100644 index 0000000..3288631 --- /dev/null +++ b/IdParser/AbbreviationAttribute.cs @@ -0,0 +1,12 @@ +using System; + +namespace IdParser { + [AttributeUsage(AttributeTargets.All)] + public class AbbreviationAttribute : Attribute { + public string Abbreviation { get; set; } + + public AbbreviationAttribute(string abbreviation) { + Abbreviation = abbreviation; + } + } +} \ No newline at end of file diff --git a/IdParser/IdParser.cs b/IdParser/IdParser.cs index 5ba4d26..977e7e7 100644 --- a/IdParser/IdParser.cs +++ b/IdParser/IdParser.cs @@ -124,6 +124,14 @@ public static string GetDescription(this Enum value) { return attribute == null ? value.ToString() : attribute.Description; } + + public static string GetAbbreviation(this Enum value) { + var field = value.GetType().GetField(value.ToString()); + + var attribute = Attribute.GetCustomAttribute(field, typeof(AbbreviationAttribute)) as AbbreviationAttribute; + + return attribute == null ? value.ToString() : attribute.Abbreviation; + } } public enum Version : byte { @@ -140,90 +148,156 @@ public enum Version : byte { } public enum IssuerIdentificationNumber { + [Abbreviation("AL")] Alabama = 636033, + [Abbreviation("AK")] Alaska = 636059, + [Abbreviation("AS")] [Description("American Samoa")] AmericanSamoa = 604427, + [Abbreviation("AZ")] Arizona = 636026, + [Abbreviation("AR")] Arkansas = 636026, + [Abbreviation("BC")] [Description("British Columbia")] BritishColumbia = 636028, + [Abbreviation("CA")] California = 636014, + [Abbreviation("COA")] Coahuila = 636056, + [Abbreviation("CO")] Colorado = 636020, + [Abbreviation("CT")] Connecticut = 636006, + [Abbreviation("DC")] [Description("District of Columbia")] DistrictOfColumbia = 636043, + [Abbreviation("DE")] Delaware = 636011, + [Abbreviation("FL")] Florida = 636010, + [Abbreviation("GA")] Georgia = 636055, + [Abbreviation("GU")] Guam = 636019, + [Abbreviation("HI")] Hawaii = 636047, + [Abbreviation("HID")] Hidalgo = 636057, + [Abbreviation("ID")] Idaho = 636050, + [Abbreviation("IL")] Illinois = 636035, + [Abbreviation("IN")] Indiana = 636037, + [Abbreviation("IA")] Iowa = 636018, + [Abbreviation("KS")] Kansas = 636022, + [Abbreviation("KY")] Kentucky = 636046, + [Abbreviation("LA")] Louisiana = 636007, + [Abbreviation("ME")] Maine = 636041, + [Abbreviation("MB")] Manitoba = 636048, + [Abbreviation("MD")] Maryland = 636003, + [Abbreviation("MA")] Massachusetts = 636002, + [Abbreviation("MI")] Michigan = 636032, + [Abbreviation("MN")] Minnesota = 636038, + [Abbreviation("MS")] Mississippi = 636051, + [Abbreviation("MO")] Missouri = 636030, + [Abbreviation("MT")] Montana = 636008, + [Abbreviation("NE")] Nebraska = 636054, + [Abbreviation("NV")] Nevada = 636049, + [Abbreviation("NB")] [Description("New Brunswick")] NewBrunswick = 636017, + [Abbreviation("ND")] [Description("New Hampshire")] NewHampshire = 636039, + [Abbreviation("NJ")] [Description("New Jersey")] NewJersey = 636036, + [Abbreviation("NM")] [Description("New Mexico")] NewMexico = 636009, + [Abbreviation("NY")] [Description("New York")] NewYork = 636001, + [Abbreviation("NL")] Newfoundland = 636016, + [Abbreviation("NC")] [Description("North Carolina")] NorthCarolina = 636004, + [Abbreviation("ND")] [Description("North Dakota")] NorthDakota = 636034, + [Abbreviation("NS")] [Description("Nova Scotia")] NovaScotia = 636013, + [Abbreviation("OH")] Ohio = 636023, + [Abbreviation("OK")] Oklahoma = 636058, + [Abbreviation("ON")] Ontario = 636012, + [Abbreviation("OR")] Oregon = 636029, + [Abbreviation("PA")] Pennsylvania = 636025, + [Abbreviation("PE")] [Description("Price Edward Island")] PrinceEdwardIsland = 604426, + [Abbreviation("QC")] Quebec = 604428, + [Abbreviation("RI")] [Description("Rhode Island")] RhodeIsland = 636052, + [Abbreviation("SK")] Saskatchewan = 636044, + [Abbreviation("SC")] [Description("South Carolina")] SouthCarolina = 636005, + [Abbreviation("SD")] [Description("South Dakota")] SouthDakota = 636042, + [Abbreviation("TN")] Tennessee = 636053, [Description("US State Department")] UsStateDepartment = 636027, + [Abbreviation("TX")] Texas = 636015, + [Abbreviation("VI")] [Description("US Virgin Islands")] UsVirginIslands = 636062, + [Abbreviation("UT")] Utah = 636040, + [Abbreviation("VT")] Vermont = 636024, + [Abbreviation("VA")] Virginia = 636000, + [Abbreviation("WA")] Washington = 636045, + [Abbreviation("WV")] [Description("West Virginia")] WestVirginia = 636061, + [Abbreviation("WI")] Wisconsin = 636031, + [Abbreviation("WY")] Wyoming = 636060, + [Abbreviation("YT")] Yukon = 604429 } diff --git a/IdParser/IdParser.csproj b/IdParser/IdParser.csproj index 33f2d2e..7a353dc 100644 --- a/IdParser/IdParser.csproj +++ b/IdParser/IdParser.csproj @@ -41,6 +41,7 @@ +