LCOV - code coverage report
Current view: top level - lib - utils.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 76 76 100.0 %
Date: 2022-09-21 09:53:35 Functions: 0 0 -

          Line data    Source code
       1             : import 'dart:math';
       2             : 
       3             : import 'package:iban_utilities_lib/bank.dart';
       4             : import 'package:iban_utilities_lib/enums_countries.dart';
       5             : 
       6             : class Utils {
       7           6 :   static final Random _random = Random.secure();
       8             : 
       9             :   /// Verilen iki rakam arasında random sayı döndürür.
      10           1 :   static int generateCheckDigits(int min, int max) {
      11           4 :     return min + _random.nextInt(max - min);
      12             :   }
      13             : 
      14             :   /// A-Z arasındaki büyük harflerden istenilen uzunlukta random bir metin döndürür.
      15           1 :   static String generateRandomUpperCaseAlpha(int length) {
      16             :     const availableChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
      17           1 :     final randomString = List.generate(length,
      18           5 :             (index) => availableChars[_random.nextInt(availableChars.length)])
      19           1 :         .join();
      20             : 
      21             :     return randomString;
      22             :   }
      23             : 
      24             :   /// 0-9 arasındaki rakamlardan istenilen uzunlukta random bir metin döndürür.
      25           1 :   static String generateRandomNumeric(int length) {
      26             :     const availableChars = '1234567890';
      27           1 :     final randomString = List.generate(length,
      28           5 :             (index) => availableChars[_random.nextInt(availableChars.length)])
      29           1 :         .join();
      30             : 
      31             :     return randomString;
      32             :   }
      33             :   /// Private _getIbanChecksum metodu için TestHelper metodu.
      34           1 :   static String getIbanChecksumTestHelper(String str){
      35           1 :     return _getIbanChecksum(str);
      36             :   }
      37             : 
      38             :   /// Verilen bilgilere göre Iban Kontrol Numarasını geri döndürür.
      39           2 :   static String _getIbanChecksum(String str) {
      40           2 :     List<String> strArr = [
      41             :       "A",
      42             :       "B",
      43             :       "C",
      44             :       "D",
      45             :       "E",
      46             :       "F",
      47             :       "G",
      48             :       "H",
      49             :       "I",
      50             :       "J",
      51             :       "K",
      52             :       "L",
      53             :       "M",
      54             :       "N",
      55             :       "O",
      56             :       "P",
      57             :       "Q",
      58             :       "R",
      59             :       "S",
      60             :       "T",
      61             :       "U",
      62             :       "V",
      63             :       "W",
      64             :       "X",
      65             :       "Y",
      66             :       "Z"
      67             :     ];
      68           2 :     List<String> intArr = [
      69             :       "10",
      70             :       "11",
      71             :       "12",
      72             :       "13",
      73             :       "14",
      74             :       "15",
      75             :       "16",
      76             :       "17",
      77             :       "18",
      78             :       "19",
      79             :       "20",
      80             :       "21",
      81             :       "22",
      82             :       "23",
      83             :       "24",
      84             :       "25",
      85             :       "26",
      86             :       "27",
      87             :       "28",
      88             :       "29",
      89             :       "30",
      90             :       "31",
      91             :       "32",
      92             :       "33",
      93             :       "34",
      94             :       "35"
      95             :     ];
      96             : 
      97           6 :     var iban = str.substring(4) + str.substring(0, 4);
      98             : 
      99           6 :     for (int i = 0; i < strArr.length; i++) {
     100           6 :       iban = iban.replaceAll(strArr[i], intArr[i]);
     101             :     }
     102             : 
     103           2 :     var ibanInt = BigInt.parse(iban);
     104           6 :     var remainder = ibanInt.remainder(BigInt.from(97)).toInt();
     105             :     var temp = "";
     106           8 :     ((98 - remainder).toString().length == 1)
     107           1 :         ? temp = "0${98 - remainder}"
     108           5 :         : temp = (98 - remainder).toString();
     109             :     return temp;
     110             :   }
     111             : 
     112             :   /// Ülkeye göre banka listesinden, banka kodu döndürür.
     113           1 :   static String generateBankCode(Country country) {
     114             :     switch (country) {
     115           1 :       case Country.turkish:
     116             :         {
     117           1 :           List<Bank> bankListTR = getBankObjectList(country);
     118             : 
     119           1 :           final Random random = Random.secure();
     120           3 :           var bank = bankListTR[random.nextInt(bankListTR.length)];
     121             : 
     122           1 :           return bank.bankCode;
     123             :         }
     124             : 
     125             :       default:
     126             :         {
     127             :           return "00061";
     128             :         }
     129             :     }
     130             :   }
     131             : 
     132             :   /// Ülkeye ve banka koduna göre bir Bank nesnesi döndürür.
     133           1 :   static Bank getBankObject(Country country, String activeBankCode) {
     134           6 :     List<Bank> bankObjectList = getBankObjectList(country).where((element) => element.bankCode == activeBankCode).toList();
     135             :     Bank bankObj;
     136           1 :     if (bankObjectList.isNotEmpty) {
     137           1 :       bankObj = bankObjectList[0];
     138             :     }else{
     139           1 :       bankObj = Bank("","","");
     140             :     }
     141             : 
     142             :     return bankObj;
     143             :   }
     144             : 
     145             :   /// Ülkeye göre Banka Kodu, Banka İsmi ve Banka Resim ismini List<Bank> döndürür. Yoksa boş Array döndürür.
     146           2 :   static List<Bank> getBankObjectList(Country country) {
     147             :     switch (country) {
     148           2 :       case Country.turkish:
     149             :         {
     150           2 :           List<Bank> bankListTR = [
     151           2 :             Bank("00209", "Ziraat Katılım Bankası", "ziraat-katilim-bankasi"),
     152           2 :             Bank("00206", "Türkiye Finans", "turkiye-finans"),
     153           2 :             Bank("00205", "Kuveyt Türk", "kuveyt-turk"),
     154           2 :             Bank("00203", "Albaraka Türk", "albaraka-turk"),
     155           2 :             Bank("00146", "Odea Bank", "odea-bank"),
     156           2 :             Bank("00143", "Aktif Bank", "aktif-yatirim-bankasi"),
     157           2 :             Bank("00142", "BankPozitif", "bankpozitif"),
     158           2 :             Bank("00135", "Anadolu Bank", "anadolu-bank"),
     159           2 :             Bank("00134", "Denizbank", "denizbank"),
     160           2 :             Bank("00125", "Burgan Bank", "burgan-bank"),
     161           2 :             Bank("00124", "ABank", "alternatif-bank"),
     162           2 :             Bank("00123", "HSBC", "hsbc"),
     163           2 :             Bank("00111", "Finansbank", "finansbank"),
     164           2 :             Bank("00109", "Tekstilbank", "tekstil-bankasi"),
     165           2 :             Bank("00108", "T-Bank", "turkland-bank"),
     166           2 :             Bank("00103", "Fibabanka", "fibabanka"),
     167           2 :             Bank("00100", "Adabank", "adabank"),
     168           2 :             Bank("00099", "ING Bank", "ing-bank"),
     169           2 :             Bank("00096", "Turkish Bank", "turkish-bank"),
     170           2 :             Bank("00092", "Citibank", "citibank"),
     171           2 :             Bank("00091", "A&T Bank", "arap-turk-bankasi"),
     172           2 :             Bank("00071", "Fortis", "fortis"),
     173           2 :             Bank("00067", "Yapı ve Kredi Bankası", "yapi-ve-kredi-bankasi"),
     174           2 :             Bank("00064", "İş Bankası", "is-bankasi"),
     175           2 :             Bank("00062", "Garanti Bankası", "garanti-bankasi"),
     176           2 :             Bank("00059", "Şekerbank", "sekerbank"),
     177           2 :             Bank("00046", "Akbank", "akbank"),
     178           2 :             Bank("00032", "Türk Ekonomi Bankası (TEB)", "turk-ekonomi-bankasi"),
     179           2 :             Bank("00015", "VakıfBank", "vakiflar-bankasi"),
     180           2 :             Bank("00012", "Halkbank", "halkbank"),
     181           2 :             Bank("00010", "Ziraat Bankası", "ziraat-bankasi"),
     182             :           ];
     183             : 
     184             :           return bankListTR;
     185             :         }
     186             : 
     187             :       default:
     188             :         {
     189           1 :           return [];
     190             :         }
     191             :     }
     192             :   }
     193             : 
     194             :   /// Bir Iban numarasını oluşturarak geri döndürür.
     195           1 :   static String generateIban(Country country) {
     196           1 :     String bankCode = generateBankCode(country);
     197             :     switch (country) {
     198           1 :       case Country.turkish:
     199             :         {
     200           1 :           String lastPart = Utils.generateRandomNumeric(16);
     201             :           //print("----------------------------------");
     202             :           //print("lastPart(16): ${lastPart.length}");
     203           2 :           String template = _getIbanChecksum("TR00${bankCode}0$lastPart");
     204             :           //print("template(2): $template");
     205           1 :           var newIban = "TR$template${bankCode}0$lastPart";
     206             :           //print("newIban: $newIban");
     207             :           //print("----------------------------------");
     208             :           return newIban;
     209             :         }
     210             : 
     211             :       default:
     212             :         {
     213             :           return "Generate sırasında bir hata oluştu.";
     214             :         }
     215             :     }
     216             :   }
     217             : }

Generated by: LCOV version 1.16