aman-kassa-flutter/lib/redux/state/bank_state.dart

80 lines
1.9 KiB
Dart

import 'package:aman_kassa_flutter/core/models/halyk/halyk_post_session.dart';
import 'package:aman_kassa_flutter/core/models/forte/forte_post_session.dart';
import 'package:aman_kassa_flutter/redux/constants/setting_const.dart';
import 'package:meta/meta.dart';
@immutable
class BankState {
final String login;
final String password;
final dynamic session;
final String sessionType;
BankState({
this.login,
this.password,
this.session,
this.sessionType,
});
factory BankState.initial(BankState payload) {
return BankState(
login: payload?.login,
password: payload?.password,
session: payload?.session,
sessionType: payload?.sessionType,
);
}
BankState copyWith({
String login,
String password,
dynamic session,
String sessionType,
}) {
return BankState(
login: login ?? this.login,
password: password ?? this.password,
session: session ?? this.session,
sessionType: sessionType ?? this.sessionType,
);
}
// Создание из JSON
static BankState fromJson(Map<String, dynamic> json) {
if (json == null) return null;
// Определяем тип сессии
dynamic session;
String sessionType = json['sessionType'];
if (sessionType == "Halyk") {
session = HalykPosSession.fromJson(json['session']);
} else if (sessionType == "Forte") {
session = FortePosSession.fromJson(json['session']);
}
return BankState(
login: json['login'],
password: json['password'],
session: session,
sessionType: sessionType,
);
}
// Преобразование в JSON
Map<String, dynamic> toJson() {
return {
"login": login,
"password": password,
"sessionType": sessionType,
"session": session?.toJson(),
};
}
@override
String toString() {
return 'BankState(login: $login, password: $password, sessionType: $sessionType, session: $session)';
}
}