Exemple #1
0
        public static IDCardClient ReadIDCardFrontSide(string data)
        {
            string patterIdCardNumber          = @"[0-9]{9}";
            string patternRegisterRecordNumber = @"[0-9]{13}";
            string patternDate = @"[0-9]{8}";

            int indexFind  = -1;
            int lengthFind = 0;

            IDCardClient client = new IDCardClient();

            Regex regexNoise = new Regex(patternNoise);

            data       = regexNoise.Replace(data, "");
            regexNoise = new Regex(patternCoretNoise);
            data       = regexNoise.Replace(data, "|");
            data       = DigitParser.Parse(data);

            MatchCollection matchesDate = new Regex(patternDate).Matches(data);
            var             tuple       = SelectCorrectDateAndIndexes(matchesDate, DateType.BirthDate);

            if (tuple.date != null)
            {
                client.BirthDate = tuple.date;
                data             = data.Remove(tuple.indexFind, tuple.lengthFind);
            }

            MatchCollection matchesCardsValidEnds = new Regex(patternDate).Matches(data);

            tuple = SelectCorrectDateAndIndexes(matchesCardsValidEnds, DateType.DateCardsValidEnds);
            if (tuple.date != null)
            {
                client.DateCardsValidEnds = tuple.date;
                data = data.Remove(tuple.indexFind, tuple.lengthFind);
            }

            MatchCollection matchesRegisterRecordNumber = new Regex(patternRegisterRecordNumber).Matches(data);

            if (matchesRegisterRecordNumber.Count > 0)
            {
                client.RegisterRecordNumber = matchesRegisterRecordNumber[0].Value.Insert(8, "-");
                indexFind  = matchesRegisterRecordNumber[0].Index;
                lengthFind = client.RegisterRecordNumber.Length;

                data = data.Remove(indexFind, lengthFind);
            }

            MatchCollection matchesIdCardNumber = new Regex(patterIdCardNumber, RegexOptions.RightToLeft).Matches(data);

            if (matchesIdCardNumber.Count > 0)
            {
                client.IdCardNumber = matchesIdCardNumber[0].Value;
                indexFind           = matchesIdCardNumber[0].Index;
                lengthFind          = client.IdCardNumber.Length;

                data = data.Remove(indexFind, lengthFind);
            }
            return(client);
        }
Exemple #2
0
        public static IDCardClient ReadIDCardBackSide(string data)
        {
            IDCardClient client     = new IDCardClient();
            Regex        regexNoise = new Regex(patternNoise);

            data       = regexNoise.Replace(data, "");
            regexNoise = new Regex(patternCoretNoise);
            data       = regexNoise.Replace(data, "|");
            Console.WriteLine($"data = {data}");
            string info = "";
            string mrz  = "";

            int indexStartMRZ = -1;

            foreach (var i in mrzStart)
            {
                indexStartMRZ = data.IndexOf(i);
                if (indexStartMRZ != -1)
                {
                    break;
                }
            }
            int indexFinishMRZ = data.LastIndexOf("<<");

            if (indexStartMRZ > -1 && indexFinishMRZ > -1)
            {
                info = data.Substring(0, indexStartMRZ);
                mrz  = data.Substring(indexStartMRZ, indexFinishMRZ - indexStartMRZ);
            }
            else if (indexStartMRZ > -1)
            {
                info = data.Substring(0, indexStartMRZ);
                mrz  = "";
            }
            else if (indexFinishMRZ > -1)
            {
                info = data.Substring(0, indexFinishMRZ - 60);
                mrz  = data.Substring(indexFinishMRZ - 60, indexFinishMRZ);
            }

            client = MRZParser.Parse(mrz);

            var    dictionary = ReadOtherInfoFromIDCardBackSide(info);
            string date       = dictionary[$"{nameof(client.PassportDeliveryDate)}"];

            if (date != string.Empty)
            {
                client.PassportDeliveryDate = Convert.ToDateTime(dictionary[$"{nameof(client.PassportDeliveryDate)}"]);
            }
            else
            {
                client.PassportDeliveryDate = null;
            }

            client.PassportDeliveryBy = dictionary[$"{nameof(client.PassportDeliveryBy)}"];
            client.ClientInn          = dictionary[$"{nameof(client.ClientInn)}"];
            return(client);
        }
        public static IDCardClient Parse(string mrz)
        {
            IDCardClient client = new IDCardClient();

            if (mrz.Length > 50)
            {
                mrz = mrz.Replace("\r\n", "");
                string mrzClean = mrz;
                try
                {
                    mrzClean = CheckErrors(mrz);
                }
                catch (Exception) { }

                client.ClientSex            = GetClientSex(mrzClean);
                client.ClientFirstName      = GetClientFirstName(mrzClean);
                client.ClientLastName       = GetClientLastName(mrzClean);
                client.BirthDate            = GetBirthDate(mrzClean);
                client.DateCardsValidEnds   = GetDateCardsValidEnds(mrzClean);
                client.RegisterRecordNumber = GetRegisterRecordNumber(mrzClean);
                client.IdCardNumber         = GetIdCardNumber(mrzClean);
            }
            return(client);
        }