using BuddyFinance.Integration.Models.Enums; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BuddyFinance.Common.Helpers { public class IdentityNumber { public string Number { get; set; } public GenderEnum Gender { get; set; } public DateTime DateOfBirth { get; set; } public IdentityNumber(string idnumber) { if (string.IsNullOrEmpty(idnumber)) throw new Exception("Invalid ID number"); var number = idnumber.Replace(" ", ""); if (number.Length != 13) throw new Exception("Invalid length for ID number"); var year = int.Parse(idnumber.Substring(0, 2)); var currentYear = DateTime.Now.Year % 100; var yearPrefix = "19"; if (year < currentYear) yearPrefix = "20"; var fullYear = yearPrefix + "" + year.ToString().PadLeft(2, '0'); var dobpart = number.Substring(0, 6); //var residencypart = number.Substring(10, 1); //needs some attention DateOfBirth = new DateTime(int.Parse(fullYear), int.Parse(dobpart.Substring(2, 2)), int.Parse(dobpart.Substring(4, 2))); //ToDate(dobpart); var genderpart = number.Substring(6, 4); Gender = int.Parse(genderpart) > 0 ? GenderEnum.Male : GenderEnum.Female; Number = number; } // private DateTime ToDate(string idNumberDOBPart) // { // var date = int.Parse(idNumberDOBPart); // string year1900temp =idNumberDOBPart.Substring(0,2); // string year2000temp = idNumberDOBPart.Substring(0, 2); // var yearval = Convert.ToInt32(year1900temp); //// validate date of birth for 2000 users // int year = yearval < 10 ? (2000 + yearval) : (1900 + yearval); // //int year = 1900+Convert.ToInt32(yeartemp); // int month = (date / 100) % 100; // int day = (date % 100); // DateTime result = new DateTime(year, month, day); // return result; // } } }