textToAtmCard method

dynamic textToAtmCard(
  1. String text, {
  2. required String? inputName,
  3. required String? inputBankName,
  4. required String? inputCardNumber,
  5. required String? inputExpiryDate,
  6. required String? inputIssueDate,
  7. required String? inputPaymentNetwork,
  8. required String? inputCardType,
})

Implementation

textToAtmCard(
  String text, {
  required String? inputName,
  required String? inputBankName,
  required String? inputCardNumber,
  required String? inputExpiryDate,
  required String? inputIssueDate,
  required String? inputPaymentNetwork,
  required String? inputCardType,
}) {
  List<String> paymentGatewayProviders = [
    'Visa',
    'Master',
    'PayPal',
    'Stripe',
    'American Express',
    'Square',
    'Braintree',
    'Authorize.Net',
    'Skrill',
    'PayU',
  ];
  print(text);
  String? name;
  String? bankName;
  String? cardNumber;
  String? expiryDate;
  String? issueDate;
  String? paymentNetwork;
  String? cardType;
  name = findName(text);

  List<String> dates = findDates(text);
  if (dates.length > 1) {
    issueDate = dates[0];
    expiryDate = dates[1];
  }
  cardType = text.toLowerCase().contains('credit') ? 'Credit' : 'Debit';
  cardNumber = findDigits(text);

  paymentGatewayProviders.forEach((element) {
    if (text.toLowerCase().contains(element.toLowerCase())) {
      paymentNetwork = element;
    }
  });

  text.split('@@').forEach((element) {
    if (element.toLowerCase().contains('bank')) {
      bankName = element.trim();
    }
  });

  Map<String, String?> atmCardData = {
    'name': name ?? inputName,
    'bank_name': bankName ?? inputBankName,
    'card_number': cardNumber,
    'date_of_expiry': expiryDate ?? inputExpiryDate,
    'date_of_issue': issueDate ?? inputIssueDate,
    'payment_network': paymentNetwork ?? inputPaymentNetwork,
    'card_type': cardType,
  };

  print(atmCardData);
  return atmCardData;
}