-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathmango_card.dart
60 lines (50 loc) · 1.54 KB
/
mango_card.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
import 'dart:convert';
import 'package:mangopay_card/validators/card_validator.dart';
import 'package:mangopay_card/validators/cvv_validator.dart';
import 'package:mangopay_card/validators/expiration_date_validator.dart';
class MangoCard {
final String cardNumber;
final String expirationDate;
final String cvx;
final String cardType;
MangoCard({
required this.cardNumber,
required this.expirationDate,
required this.cvx,
this.cardType = 'CB_VISA_MASTERCARD',
});
assertCardIsValid() =>
CardValidator.validate(cardNumber) &&
CvvValidator.validate(cvx, cardType) &&
ExpirationDateValidator.validate(expirationDate, DateTime.now());
@override
String toString() {
return 'MangoCard(cardNumber: $cardNumber, expirationDate: $expirationDate, cvx: $cvx, cardType: $cardType)';
}
@override
bool operator ==(Object o) {
if (identical(this, o)) return true;
return o is MangoCard &&
o.cardNumber == cardNumber &&
o.expirationDate == expirationDate &&
o.cvx == cvx &&
o.cardType == cardType;
}
@override
int get hashCode {
return cardNumber.hashCode ^
expirationDate.hashCode ^
cvx.hashCode ^
cardType.hashCode;
}
factory MangoCard.fromMap(Map<String, dynamic> map) {
return MangoCard(
cardNumber: map['cardNumber'],
expirationDate: map['expirationDate'],
cvx: map['cvx'],
cardType: map['cardType'],
);
}
factory MangoCard.fromJson(String source) =>
MangoCard.fromMap(json.decode(source));
}