subscription 3.0
parent
ed2a1eedc6
commit
9824303de1
@ -1,27 +0,0 @@
|
||||
|
||||
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/dependencies.dart';
|
||||
import 'package:mc_common_app/models/subscriptions_models/subscription_model.dart';
|
||||
import 'package:mc_common_app/models/subscriptions_models/subscription_model.dart';
|
||||
|
||||
|
||||
abstract class SubscriptionRepo {
|
||||
Future<SubscriptionModel> getAllSubscriptions(String? serviceProviderID);
|
||||
}
|
||||
|
||||
class SubscriptionRepoImp extends SubscriptionRepo {
|
||||
@override
|
||||
Future<SubscriptionModel> getAllSubscriptions(String? serviceProviderID) async {
|
||||
String t = AppState().getUser.data!.accessToken ?? "";
|
||||
Map<String, String> queryParameters = {};
|
||||
if (serviceProviderID != null) {
|
||||
queryParameters = {
|
||||
"ID": serviceProviderID,
|
||||
};
|
||||
}
|
||||
|
||||
return await injector.get<ApiClient>().getJsonForObject((json) => SubscriptionModel.fromJson(json), ApiConsts.getAllSubscriptions, token: t, queryParameters: queryParameters);
|
||||
}
|
||||
}
|
||||
@ -1,74 +0,0 @@
|
||||
|
||||
import 'package:car_provider_app/repositories/subscription_repo.dart';
|
||||
import 'package:mc_common_app/models/subscriptions_models/subscription_model.dart';
|
||||
import 'package:mc_common_app/utils/enums.dart';
|
||||
import 'package:mc_common_app/view_models/base_view_model.dart';
|
||||
import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart';
|
||||
|
||||
class SubscriptionsVM extends BaseVM {
|
||||
final SubscriptionRepo subscriptionRepo;
|
||||
|
||||
SubscriptionsVM({required this.subscriptionRepo});
|
||||
|
||||
//All Subscriptions
|
||||
int selectedIndex = 0;
|
||||
late DropValue selectedMothlyTab;
|
||||
List<DropValue> monthlyTabs = [];
|
||||
late SubscriptionModel allSubscriptions;
|
||||
List<Subscription> tempSubscriptions = [];
|
||||
|
||||
//My Subscriptions
|
||||
|
||||
//All Subscriptions
|
||||
getAllAvailableSubscriptions(String? serviceProviderID) async {
|
||||
selectedIndex = 0;
|
||||
setState(ViewState.busy);
|
||||
allSubscriptions = await subscriptionRepo.getAllSubscriptions(serviceProviderID);
|
||||
if (allSubscriptions.messageStatus == 1) {
|
||||
monthlyTabs.clear();
|
||||
var idSet = <int>{};
|
||||
for (var d in allSubscriptions.data ?? []) {
|
||||
if (idSet.add(d.durationDays ?? 0)) {
|
||||
monthlyTabs.add(DropValue(d.durationDays, _convertDaysToMonths(d.durationDays ?? 0), ""));
|
||||
}
|
||||
}
|
||||
monthlyTabs.sort((a, b) => a.value.compareTo(b.value));
|
||||
selectedMothlyTab = monthlyTabs.first;
|
||||
filterSubscriptions();
|
||||
setState(ViewState.idle);
|
||||
} else {
|
||||
setState(ViewState.error);
|
||||
}
|
||||
}
|
||||
|
||||
String _convertDaysToMonths(int days) {
|
||||
final int months = days ~/ 30;
|
||||
final int remainingDays = days % 30;
|
||||
|
||||
String _result = months > 0 ? '$months Month${months > 1 ? 's' : ''}${remainingDays > 0 ? ' & ' : ''}' : '';
|
||||
_result += remainingDays > 0 ? '$remainingDays Day${remainingDays > 1 ? 's' : ''}' : '';
|
||||
return _result;
|
||||
}
|
||||
|
||||
filterSubscriptions() {
|
||||
tempSubscriptions.clear();
|
||||
for (var element in allSubscriptions.data!) {
|
||||
if (selectedMothlyTab.id == element.durationDays) {
|
||||
tempSubscriptions.add(element);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//My Subscriptions
|
||||
getMySubscriptions(String? serviceProviderID) async {
|
||||
selectedIndex = 0;
|
||||
setState(ViewState.busy);
|
||||
allSubscriptions = await subscriptionRepo.getAllSubscriptions(serviceProviderID);
|
||||
if (allSubscriptions.messageStatus == 1) {
|
||||
// allSubscriptions.data!.sort((a, b) => a.value.compareTo(b.value));
|
||||
setState(ViewState.idle);
|
||||
} else {
|
||||
setState(ViewState.error);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue