textToPassport method

dynamic textToPassport(
  1. dynamic text, {
  2. required String? inputGivenName,
  3. required String? inputSurName,
  4. required String? inputCitizenShipNumber,
  5. required String? inputFatherName,
  6. required String? inputAddress,
  7. required String? inputPassportNumber,
  8. required String? inputExpiryDate,
  9. required String? inputIssueDate,
  10. required String? inputBirthDate,
  11. required String? inputGender,
  12. required String? inputCountry,
  13. required String? inputTrackingNumber,
})

Implementation

textToPassport(text,
    {required String? inputGivenName,
    required String? inputSurName,
    required String? inputCitizenShipNumber,
    required String? inputFatherName,
    required String? inputAddress,
    required String? inputPassportNumber,
    required String? inputExpiryDate,
    required String? inputIssueDate,
    required String? inputBirthDate,
    required String? inputGender,
    required String? inputCountry,
    required String? inputTrackingNumber}) {
  String? givenName;
  String? fatherName;
  String? surName;
  String? passportNumber;
  String? citizenShipNumber;
  String? address;
  String? expiryDate;
  String? issueDate;
  String? birthDate;
  String? gender;
  String? country;
  String? trackingNumber;

  debugPrint('----------------------------- I am from passport model');
  debugPrint(text);
  country = text.toLowerCase().contains('pakistan') ? 'Pakistan' : 'Unknown';
  text = removeStopWords(text);
  List<String> dates = getDates(text);
  if (dates.length > 2) {
    birthDate = dates[0];
    issueDate = dates[1];
    expiryDate = dates[2];

    removeFromText(text, birthDate);
    removeFromText(text, issueDate);
    removeFromText(text, expiryDate);
  }
  citizenShipNumber = extractIdCardNumber(text);
  removeFromText(text, citizenShipNumber);
  trackingNumber = extractTrackingNumber(text);
  removeFromText(text, trackingNumber);
  String prefix =
      text.split(' ')['Surname'.bestMatch(text.split(' ')).bestMatchIndex];
  surName = getValueFromPrefix(text, '$prefix ');
  removeFromText(text, surName);

  prefix = text.split(' ')['Given'.bestMatch(text.split(' ')).bestMatchIndex];
  // List<String> list = text.split(' ');
  // String prefix = 'Given'.bestMatch(list).toString();
  // prefix = 'Given'.bestMatch(text.split(' ')).toString();
  prefix =
      "$prefix ${text.split(' ')[getValueFromPrefix(text, '$prefix ').bestMatch(text.split(' ')).bestMatchIndex ?? '']} ";
  // print('------------------ $prefix');
  givenName = getValueFromPrefix(text, prefix);
  prefix =
      text.split(' ')['Father'.bestMatch(text.split(' ')).bestMatchIndex];
  prefix =
      "$prefix ${text.split(' ')[getValueFromPrefix(text, '$prefix ').bestMatch(text.split(' ')).bestMatchIndex ?? '']} ";
  removeFromText(text, givenName);
  fatherName = getValueFromPrefix(text, prefix);
  // passportNumber = extractByRegex(text, r'^(?!^0+$)[a-zA-Z0-9]{3,20}$');
  removeFromText(text, fatherName);
  passportNumber = extractPassportNumber(text);
  removeFromText(text, passportNumber);
  gender = getGender(text);
  removeFromText(text, gender);
  prefix = text.split(' ')['Place'.bestMatch(text.split(' ')).bestMatchIndex];
  String prefixMid = text.split(' ')[getValueFromPrefix(text, '$prefix ')
          .bestMatch(text.split(' '))
          .bestMatchIndex ??
      ''];

  prefix =
      "$prefix $prefixMid ${text.split(' ')[getValueFromPrefix(text, '$prefixMid ').bestMatch(text.split(' ')).bestMatchIndex ?? '']} ";

  debugPrint('---------------- $prefix');

  address = getValueFromPrefix(text, prefix);
  Map<String, String?> passportData = {
    'given_name': givenName ?? inputGivenName,
    'surname': surName ?? inputSurName,
    'citizenship_number': citizenShipNumber ?? inputCitizenShipNumber,
    'address': address ?? inputAddress,
    'father_name': fatherName ?? inputFatherName,
    'passport_number': passportNumber ?? inputPassportNumber,
    'date_of_expiry': expiryDate ?? inputExpiryDate,
    'date_of_issue': issueDate ?? inputIssueDate,
    'date_of_birth': birthDate ?? inputBirthDate,
    'country': country ?? inputCountry,
    'gender': gender ?? inputGender,
    'tracking_number': trackingNumber ?? inputTrackingNumber
  };
  // passportData['given_name'] ?? inputGivenName;
  // passportData['surname'] ?? inputSurName;
  // passportData['citizenship_number'] ?? inputCitizenShipNumber;
  // passportData['address'] ?? inputAddress;
  // passportData['father_name'] ?? inputFatherName;
  // passportData['passport_number'] ?? inputFatherName;
  // passportData['date_of_expiry'] ?? inputExpiryDate;
  // passportData['date_of_issue'] ?? inputIssueDate;
  // passportData['date_of_birth'] ?? inputBirthDate;
  // country = passportData['country'] ?? inputCountry;
  // gender = passportData['gender'] ?? inputGender;
  debugPrint(passportData.toString());
  return passportData;
}