import 'package:mc_common_app/api/api_client.dart'; import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/config/dependency_injection.dart'; import 'package:mc_common_app/models/general_models/generic_resp_model.dart'; import 'package:mc_common_app/models/provider_branches_models/branch_detail_model.dart'; import 'package:mc_common_app/models/subscriptions_models/branch_user_selection_model.dart'; import 'package:mc_common_app/models/subscriptions_models/subscription_model.dart'; import 'package:mc_common_app/models/user_models/branch_user.dart'; abstract class SubscriptionRepo { // Future getAllSubscriptions(String? serviceProviderID); // Future> getProviderSubscription({String? serviceProviderID}); Future getMySubscriptions(String? serviceProviderID); Future getSubscriptionBySP(String? serviceProviderID, bool isRenew); Future calculationUpgradePrice(String? serviceProviderID, String? newSubscription); Future payForProviderSubscription(Map map); Future> getSPBranchUserGet(Map map); } class SubscriptionRepoImp extends SubscriptionRepo { ApiClient apiClient = injector.get(); AppState appState = injector.get(); @override Future getSubscriptionBySP(String? serviceProviderID, bool isRenew) async { String t = AppState().getUser.data!.accessToken ?? ""; Map queryParameters = {}; if (serviceProviderID != null) { queryParameters = { "ProviderID": serviceProviderID, "IsRenew": isRenew.toString(), }; } return await injector.get().getJsonForObject( (json) => SubscriptionModel.fromJson(json), ApiConsts.getSubscriptionBySP, token: t, queryParameters: queryParameters, ); } @override Future calculationUpgradePrice(String? serviceProviderID, String? newSubscription) async { String t = AppState().getUser.data!.accessToken ?? ""; Map queryParameters = {}; if (serviceProviderID != null) { queryParameters = { "ServiceProviderID": serviceProviderID, "NewSubscription": newSubscription!, }; } return await injector.get().getJsonForObject( (json) => GenericRespModel.fromJson(json), ApiConsts.calculationUpgradePrice, token: t, queryParameters: queryParameters, ); } @override Future payForProviderSubscription(Map map) async { String t = AppState().getUser.data!.accessToken ?? ""; return await injector.get().postJsonForObject( (json) => GenericRespModel.fromJson(json), ApiConsts.payFortOrderProviderSubscriptionCreate, map, token: t, ); } @override Future> getSPBranchUserGet(Map map) async { String t = AppState().getUser.data!.accessToken ?? ""; GenericRespModel genericRespModel = await injector.get().getJsonForObject( (json) => GenericRespModel.fromJson(json), ApiConsts.getSPBranchUserGet, token: t, queryParameters: map, ); List branchList = []; if (genericRespModel.data != null) { List branches = []; List branchUsers = []; // List.from(json["data"]!.map((x) => BranchUsersDatum.fromJson(x)) branches = List.from(genericRespModel.data["branches"]["data"]!.map((x) => BranchDetailModel.fromJson(x))); branchUsers = List.from(genericRespModel.data["branchUsers"]["data"]!.map((x) => BranchUser.fromJson(x))); for (int i = 0; i < branches.length; i++) { List availableUsers = []; for (int j = 0; j < branchUsers.length; j++) { if (branches[i].id == branchUsers[j].serviceProviderBranchID) { availableUsers.add(UserSelectionModel(userId: branchUsers[j].id, userName: ("${branchUsers[j].firstName ?? ""} ${branchUsers[j].lastName}"), isSelected: false)); } } branchList.add(BranchSelectionModel(branchId: branches[i].id ?? 0, branchName: branches[i].branchName ?? "", isSelected: false, usersList: availableUsers)); } } return branchList; } @override Future getMySubscriptions(String? serviceProviderID) async { String t = AppState().getUser.data!.accessToken ?? ""; Map queryParameters = {}; if (serviceProviderID != null) { queryParameters = { "ID": serviceProviderID, }; } return await injector.get().getJsonForObject((json) => SubscriptionModel.fromJson(json), ApiConsts.getAllSubscriptions, token: t, queryParameters: queryParameters); } // @override // Future getAllSubscriptions(String? serviceProviderID) async { // String t = AppState().getUser.data!.accessToken ?? ""; // Map queryParameters = {}; // if (serviceProviderID != null) { // queryParameters = { // "ID": serviceProviderID, // }; // } // // return await injector.get().getJsonForObject((json) => SubscriptionModel.fromJson(json), ApiConsts.getAllSubscriptions, token: t, queryParameters: queryParameters); // } // @override // Future> getProviderSubscription({String? serviceProviderID}) async { // Map queryParameters = {}; // if (serviceProviderID != null) { // queryParameters = { // "ServiceProviderID": serviceProviderID, // "IsActiveSubscriptionForProvider": "true", // }; // } // // GenericRespModel adsGenericModel = await apiClient.getJsonForObject( // token: appState.getUser.data!.accessToken, // (json) => GenericRespModel.fromJson(json), // ApiConsts.getMySubscriptions, // queryParameters: queryParameters, // ); // List providerSubList = List.generate(adsGenericModel.data.length, (index) => ProviderSubscriptionModel.fromJson(adsGenericModel.data[index])); // return providerSubList; // } // @override // Future getProviderSubscription( // String? serviceProviderID) async { // String t = AppState().getUser.data!.accessToken ?? ""; // Map queryParameters = {}; // if (serviceProviderID != null) { // queryParameters = { // "ID": serviceProviderID, // }; // } // // // return await injector.get().getJsonForObject( // (json) => SubscriptionModel.fromJson(json), // ApiConsts.getMySubscriptions, // token: t, // queryParameters: queryParameters); // } }