-
Notifications
You must be signed in to change notification settings - Fork 0
/
generator.dart
89 lines (80 loc) · 2.47 KB
/
generator.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import 'dart:math';
import 'dart:core';
/**
* Set attributes on generate method
* @param { String} bank unique code
* @param {String} nuban
*/
class CustomError extends StateError{
CustomError(String msg): super(msg);
}
class NJbank{
String accountNumber;
String bankUniqueCode;
String nuban;
String _checksum;
List<int> digits;
NJbank(){
//.CHeck Sum Digits
this.digits = [3,7,3,3,7,3,3,7,3,3,7,3];
}
String generate(String bankCode){
this.nuban = this.nubanNumberGenerate();
this.bankUniqueCode = bankCode;
//CHECK FOR ERRORS
if(this.bankUniqueCode.length != 3){
print("Bank unique code must be of length 3 and must be a string");
}
this._checksum = this.checkSum();
this.accountNumber = this.nuban+""+this._checksum;
return this.accountNumber;
}
String getAccountNumber(String bankCode, String nuban){
this.bankUniqueCode = bankCode;
this.nuban = nuban;
//CHECK FOR ERRORS
if(this.bankUniqueCode.length != 3){
throw new CustomError("Bank unique code must be of length 3 and must be a string");
}
if(this.nuban.length != 9 ){
throw new CustomError("Bank unique code must be of length 3 and must be a string");
}
this._checksum = this.checkSum();
this.accountNumber = this.nuban+""+this._checksum;
return this.accountNumber;
}
String checkSum(){
//The check digits algorithm
//STEP 1.
var accountNumber = this.bankUniqueCode+""+this.nuban;
var total = 0 , modulo = 0;
List accountNum = accountNumber.split("");
for(int x =0; x < accountNum.length;x++){
total += int.parse(accountNum[x])* this.digits[x];
}
modulo = (total % 10 );
//STEP 2.
this._checksum = (10 - modulo).toString();
this._checksum = (this._checksum == 10)? 0 : this._checksum;
//SETP 3.
return this._checksum;
}
String nubanNumberGenerate(){
var rnd = new Random();
var rndNumber = "";
for(var i=0;i < 9;i++){
rndNumber = rndNumber + rnd.nextInt(9).toString();
}
return rndNumber;
}
}
void main(){
var NJbankNumber = NJbank();
//USE CASES.....
print(NJbankNumber.generate("123"));
print(NJbankNumber.getAccountNumber("123","682171054"));
//BANK UNIQUE CODES..
const bankUniqueCodes = {
"access_bank": "123"
};
}