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 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 toJson() { return { "login": login, "password": password, "sessionType": sessionType, "session": session?.toJson(), }; } @override String toString() { return 'BankState(login: $login, password: $password, sessionType: $sessionType, session: $session)'; } }