import 'dart:io'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/config/dependency_injection.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/main.dart'; import 'package:mc_common_app/models/user_models/image_response.dart'; import 'package:mc_common_app/repositories/user_repo.dart'; import 'package:mc_common_app/services/common_services.dart'; import 'package:mc_common_app/utils/enums.dart'; import 'package:provider/provider.dart'; import 'package:mc_common_app/utils/location/Location.dart'; import 'package:mc_common_app/utils/shared_prefrence.dart'; import 'package:mc_common_app/utils/utils.dart'; import 'package:mc_common_app/view_models/ad_view_model.dart'; import 'package:mc_common_app/view_models/appointments_view_model.dart'; import 'package:mc_common_app/view_models/base_view_model.dart'; import 'package:mc_common_app/view_models/chat_view_model.dart'; import 'package:mc_common_app/view_models/requests_view_model.dart'; import 'package:mc_common_app/view_models/service_view_model.dart'; import 'package:mc_common_app/view_models/subscriptions_view_model.dart'; class DashboardVM extends BaseVM { final CommonAppServices commonServices; final UserRepo userRepo; DashboardVM({required this.commonServices, required this.userRepo}); String pickedImage = ""; int selectedNavbarBarIndex = 2; void onNavbarTapped(int index) { logger.i(AppState().getDeviceToken); selectedNavbarBarIndex = index; notifyListeners(); } void pickImageFromPhone(BuildContext context, int sourceFlag) async { final File? pickedImageFile = await commonServices.pickImageFromPhone(sourceFlag); if (pickedImageFile == null) { return; } int sizeInBytes = pickedImageFile.lengthSync(); if (sizeInBytes > 1000000) { Utils.showToast(LocaleKeys.fileLarger.tr()); return; } else { String image64 = Utils.convertFileToBase64(pickedImageFile); Utils.showLoading(context); ImageResponse response = await userRepo.updateUserImage(image64); Utils.hideLoading(context); Navigator.pop(context); if (response.messageStatus == 1) { Utils.showToast(LocaleKeys.imageUploaded.tr()); AppState().getUser.data!.userInfo!.userImageUrl = response.data; } else { Utils.showToast(response.message ?? ""); } } } Future updateUserImage(String image) async { return await userRepo.updateUserImage(image); } fetchUsernameAndLocation() async { String userName = await SharedPrefManager.getPhoneOrEmail(); Location.getCurrentLocation( (LatLng? latlng) { AppState().currentLocation = latlng ?? const LatLng(0, 0); }, ); notifyListeners(); } Future onRefresh(BuildContext context) async { final requestsVM = context.read(); final chatVM = context.read(); final appointmentVM = context.read(); final serviceVM = context.read(); final adVm = context.read(); final subscriptionsVM = context.read(); requestsVM.populateRequestsFilterList(); appointmentVM.populateAppointmentsFilterList(); await serviceVM.getBranchAndServices(); await appointmentVM.getMyAppointmentsForProvider({"ServiceProviderID": injector.get().getUser.data?.userInfo?.providerId.toString() ?? "0"}); adVm.populateAdsFilterList(); await chatVM.buildHubConnection(context); await adVm.getMyAds(); await adVm.getExploreAds(); await adVm.getVehicleTypes(); await adVm.getVehicleAdsDuration(); await requestsVM.getRequests(appType: AppType.provider); await subscriptionsVM.getMySubscriptionsBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? ""); await subscriptionsVM.getSubscriptionBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? "", true); // if (adVm.myAds.isEmpty) { // await adVm.getMyAds(); // } // // if (adVm.exploreAds.isEmpty) { // await adVm.getExploreAds(); // } // if (adVm.vehicleTypes.isEmpty) { // await adVm.getVehicleTypes(); // } // // if (adVm.vehicleAdsDurations.isEmpty) { // await adVm.getVehicleAdsDuration(); // } // // if (requestsVM.myRequests.isEmpty) { // await requestsVM.getRequests(appType: AppType.provider); // } // // if (subscriptionsVM.mySubscriptionsBySp.isEmpty) { // await subscriptionsVM.getMySubscriptionsBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? ""); // } // // if (subscriptionsVM.tempSubscriptions.isEmpty) { // await subscriptionsVM.getSubscriptionBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? "", true); // } } }