import 'dart:io'; import 'package:bookmywages/model/Banner_model.dart'; import 'package:bookmywages/model/Categories_model.dart'; import 'package:bookmywages/model/booking_modify_model.dart'; import 'package:bookmywages/model/cancel_booking.dart'; import 'package:bookmywages/model/detail_page_model.dart'; import 'package:bookmywages/model/enquriy_list_model.dart'; import 'package:bookmywages/model/enquriy_model.dart'; import 'package:bookmywages/model/expired_plan_model.dart'; import 'package:bookmywages/model/get_review_model.dart'; import 'package:bookmywages/model/most_popular_model.dart'; import 'package:bookmywages/model/notification_model.dart'; import 'package:bookmywages/model/otp_model.dart'; import 'package:bookmywages/model/package_model.dart'; import 'package:bookmywages/model/payment_details_model.dart'; import 'package:bookmywages/model/plan_sucess_model.dart'; import 'package:bookmywages/model/profile_get_model.dart'; import 'package:bookmywages/model/service_model.dart'; import 'package:bookmywages/model/subcategory_model.dart'; import 'package:bookmywages/model/user_booking_details.dart'; import 'package:bookmywages/model/vendor_model/terms_and_conditions_model.dart'; import 'package:bookmywages/model/vendor_model/vendor_booking_model.dart' show VendorBookingModel; import 'package:bookmywages/model/vendor_model/vendor_booking_status.dart'; import 'package:bookmywages/model/vendor_model/vendor_catgories_model.dart'; import 'package:bookmywages/model/vendor_model/vendor_profile_model.dart'; import 'package:bookmywages/model/vendor_model/vendor_service_model.dart'; import 'package:bookmywages/model/vendor_model/vendor_serviceupload_model.dart'; import 'package:bookmywages/model/vendor_model/vendorregister_model.dart'; import 'package:bookmywages/view/auth/auth_repository.dart'; import 'package:bookmywages/view/user_main_screens/notification_page.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../model/login_model.dart'; import '../viewmodel/consts_api.dart'; final loginRepositoryProvider = Provider((ref) => AuthRepository()); final loginFutureProvider = FutureProvider.family .autoDispose, LoginModel>((ref, loginModel) async { final repo = ref.read(loginRepositoryProvider); return repo.loginUser(ConstsApi.login, loginModel); }); final signupFutureProvider = FutureProvider.family .autoDispose, Map>(( ref, signupData, ) async { final repo = ref.read(loginRepositoryProvider); return repo.registerUser(ConstsApi.register, signupData); }); // Add this to your providers file final otpVerificationProvider = FutureProvider.family .autoDispose, OtpModel>((ref, otpModel) async { final repo = ref.read(loginRepositoryProvider); return repo.verifyOtp(ConstsApi.otp, otpModel); }); final bannerRepositoryProvider = Provider((ref) => BannerRepository()); final bannerListProvider = FutureProvider.autoDispose>(( ref, ) async { final repo = ref.read(bannerRepositoryProvider); return repo.fetchBanners(ConstsApi.banner); }); final categoryRepositoryProvider = Provider((ref) => CategoryRepository()); final categoryListProvider = FutureProvider.autoDispose>(( ref, ) async { final repo = ref.read(categoryRepositoryProvider); return repo.fetchCategories(ConstsApi.catgories); }); final packageRepositoryProvider = Provider((ref) => packageRepository()); final pacakgeProvider = FutureProvider.autoDispose>(( ref, ) async { final repo = ref.read(packageRepositoryProvider); return repo.fetchpackage(ConstsApi.package); }); final profilegetRepositoryProvider = Provider((ref) => ProfilegetRepository()); final profilegetuserProvider = FutureProvider.autoDispose>((ref) async { final repo = ref.read(profilegetRepositoryProvider); return repo.fetchprofileget(ConstsApi.profileget); }); final subcategoryRepositoryProvider = Provider( (ref) => SubcategoryRepository(), ); final subcategoryProvider = FutureProvider.family .autoDispose, String>((ref, categoryId) async { final repo = ref.read(subcategoryRepositoryProvider); return repo.fetchSubcategories(ConstsApi.subcat, categoryId); }); final serviceRepositoryProvider = Provider((ref) => ServiceRepository()); final serviceProvider = FutureProvider.family .autoDispose< List, ({String categoryId, String? subcategoryId, String? selecttype}) >((ref, params) async { final repo = ref.read(serviceRepositoryProvider); return repo.fetchService( ConstsApi.service, params.categoryId, params.subcategoryId, params.selecttype, ); }); final profileupdateRepositoryProvider = Provider( (ref) => ProfileupdateRepository(), ); final profileupdateuserProvider = FutureProvider.autoDispose>((ref) async { final repo = ref.read(profileupdateRepositoryProvider); return repo.fetchprofileupdate(ConstsApi.upadateprofile); }); final getreviewRepositoryProvider = Provider((ref) => GetReviewRepository()); final getreviewuserProvider = FutureProvider.family, String>((ref, serviceId) async { final repo = ref.read(getreviewRepositoryProvider); return repo.fetchgetreview(ConstsApi.getreview, serviceId); }); final mostPopularRepositoryProvider = Provider( (ref) => MostPopularRepository(), ); // Create a provider family that accepts a categoryId parameter final mostPopularProvider = FutureProvider.family, String>(( ref, categoryId, ) async { final repo = ref.read(mostPopularRepositoryProvider); return repo.fetchMostPopular(ConstsApi.mostpopular, categoryId); }); final enquriyupdateRepositoryProvider = Provider((ref) => EnquriyRepository()); final enquriyProvider = FutureProvider.autoDispose>(( ref, ) async { final repo = ref.read(enquriyupdateRepositoryProvider); return repo.fetchenquriy(ConstsApi.enquery); }); final enquriyRepositoryProvider = Provider((ref) => enquriylistRepository()); final enquriylistProvider = FutureProvider.autoDispose>(( ref, ) async { final repo = ref.read(enquriyRepositoryProvider); return repo.fetchenquirylist(ConstsApi.enquirylist); }); final enquriydeleteRepositoryProvider = Provider( (ref) => EnquriydeleteRepository(), ); final enquriydeleteProvider = FutureProvider.autoDispose.family(( ref, id, ) async { final repo = ref.read(enquriydeleteRepositoryProvider); return repo.enquriydelete(ConstsApi.enquirydelete, id); }); final paymentlistRepositoryProvider = Provider( (ref) => PaymentdetailsRepository(), ); final paymentdetailsProvider = FutureProvider.autoDispose>((ref) async { final repo = ref.read(paymentlistRepositoryProvider); return repo.fetchpayment(ConstsApi.paymentdetails); }); final paymentdeleteRepositoryProvider = Provider( (ref) => PaymentdeleteRepository(), ); final paymentdeleteProvider = FutureProvider.autoDispose.family(( ref, id, ) async { final repo = ref.read(paymentdeleteRepositoryProvider); return repo.paymentdelete(ConstsApi.paymentdelete, id); }); final changepassRepositoryProvider = Provider( (ref) => ChangepasswordRepository(), ); final changepasswordProvider = FutureProvider.autoDispose.family(( ref, password, ) async { final repo = ref.read(changepassRepositoryProvider); return repo.changepassword(ConstsApi.changepassword, password); }); final servicebookinguserhistorydetailsRepositoryProvider = Provider( (ref) => UserhistoryBookingdetailsRepository(), ); final userbookinghistorydetailsProvider = FutureProvider.autoDispose>((ref) async { final repo = ref.read(servicebookinguserhistorydetailsRepositoryProvider); return repo.fetchhistorybooking(ConstsApi.historybooking); }); final cancelbookingRepositoryProvider = Provider( (ref) => CancelbookingRepository(), ); final cancelbookingProvider = FutureProvider.autoDispose .family((ref, data) async { final repo = ref.read(cancelbookingRepositoryProvider); return repo.cancelbooking( url: ConstsApi.cancelbooking, id: data.id, serviceId: data.serviceId, type: data.type, ); }); final bookingmodifyRepositoryProvider = Provider( (ref) => BookingmodifyRepository(), ); final modifybookingProvider = FutureProvider.autoDispose .family((ref, data) async { final repo = ref.read(bookingmodifyRepositoryProvider); return repo.bookingmodify( url: ConstsApi.bookingmodify, id: data.id, serviceId: data.serviceId, servicedate: data.servicedate, servicetime: data.servicetime, ); }); final expiredPlanRepositoryProvider = Provider( (ref) => ExpiredPlanRepository(), ); final expiredPlanProvider = FutureProvider.autoDispose(( ref, ) async { final repo = ref.read(expiredPlanRepositoryProvider); return repo.fetchExpiredPlan(ConstsApi.expiredplan); }); final planSuccessRepositoryProvider = Provider( (ref) => PlanSuccessRepository(), ); // Provider for plan success functionality final planSuccessProvider = FutureProvider.autoDispose .family((ref, data) async { final repo = ref.read(planSuccessRepositoryProvider); return repo.planSuccess( url: ConstsApi.plansucess, userId: data.userId, planId: data.planId, duration: data.duration, type: data.type, ); }); final detailpageRepositoryProvider = Provider((ref) => DetailpageRepository()); final detailpageProvider = FutureProvider.family .autoDispose, String>((ref, serviceid) async { final repo = ref.read(detailpageRepositoryProvider); return repo.fetchDetailpage(ConstsApi.detail, int.parse(serviceid)); }); //--------------------vendor flow----------------------------------------- final getvendorIdRepositoryProvider = Provider((ref) => GetvendorId()); final getvendorIdProvider = FutureProvider.autoDispose((ref) async { final repo = ref.read(getvendorIdRepositoryProvider); return repo.fetchGetid(ConstsApi.getvendorid); }); final vendorRegisterRepositoryProvider = Provider((ref) => VendorRegister()); // Future provider to call the register API final vendorRegisterFutureProvider = FutureProvider.family .autoDispose, VendorRegisterModel>(( ref, vendorModel, ) async { final repo = ref.read(vendorRegisterRepositoryProvider); return repo.vendorRegister(ConstsApi.vendorregister, vendorModel); }); final vendorserviceuploadRepositoryProvider = Provider( (ref) => Vendorserviceupload(), ); final vendorserviceFutureProvider = FutureProvider.family .autoDispose, (VendorServiceUploadModel, List)>(( ref, data, ) async { final repo = ref.read(vendorserviceuploadRepositoryProvider); return repo.vendorserviceupload( ConstsApi.vendorserivceupload, data.$1, // VendorServiceUploadModel data.$2, // List images ); }); final vendorbookingdetailsRepositoryProvider = Provider( (ref) => VendorbookingdetailsRepository(), ); final vendorbookingdetailsProvider = FutureProvider.autoDispose>((ref) async { final repo = ref.read(vendorbookingdetailsRepositoryProvider); return repo.fetchvendorbooking(ConstsApi.vendormybooking); }); final changebookingstatusRepositoryProvider = Provider( (ref) => ChangebookingstatusRepository(), ); final changebookingProvider = FutureProvider.autoDispose .family((ref, data) async { final repo = ref.read(changebookingstatusRepositoryProvider); return repo.changebooking( url: ConstsApi.vendorchangebookingstatus, id: data.id.toString(), status: data.status.toString(), ); }); final vendorcatgoriesRepositoryProvider = Provider( (ref) => VendorcatgoriesRepository(), ); final vendorcatgoriesProvider = FutureProvider.autoDispose>((ref) async { final repo = ref.read(vendorcatgoriesRepositoryProvider); return repo.fetchvendorcat(ConstsApi.vendorcat); }); final vendorserviceRepositoryProvider = Provider( (ref) => VendorserviceRepository(), ); final vendorserviceProvider = FutureProvider.autoDispose>((ref) async { final repo = ref.read(vendorserviceRepositoryProvider); return repo.fetchvendorservice(ConstsApi.vendormyservice); }); final vendorserviceupdateRepositoryProvider = Provider( (ref) => Vendorserviceupadate(), ); final vendorServiceUploadUpdateProvider = FutureProvider.family .autoDispose, (VendorServiceUploadModel, List)>(( ref, data, ) async { final repo = ref.read(vendorserviceupdateRepositoryProvider); return repo.vendorserviceupdate( ConstsApi.vendorserviceupload, data.$1, data.$2, ); }); final vendorexpiredPlanRepositoryProvider = Provider( (ref) => VendorExpiredPlanRepository(), ); final vendorexpiredPlanProvider = FutureProvider.autoDispose(( ref, ) async { final repo = ref.read(vendorexpiredPlanRepositoryProvider); return repo.fetchvendorExpiredPlan(ConstsApi.expiredplan); }); final catDeleteRepositoryProvider = Provider( (ref) => CatManagementDeleteRepository(), ); // Provider for delete operation final deleteCategoryProvider = FutureProvider.family.autoDispose(( ref, categoryId, ) async { final repo = ref.read(catDeleteRepositoryProvider); return repo.deleteCategoryManagement( ConstsApi.catmangementdelete, categoryId, ); }); final ServiceDeleteRepositoryProvider = Provider( (ref) => SerciceDeleteRepository(), ); // Provider for delete operation final deleteserviceProvider = FutureProvider.family.autoDispose(( ref, id, ) async { final repo = ref.read(ServiceDeleteRepositoryProvider); return repo.deleteService(ConstsApi.servicedelete, id); }); final profilegetvendorRepositoryProvider = Provider( (ref) => ProfilegetvendorRepository(), ); final profilegetvendorProvider = FutureProvider.autoDispose>((ref) async { final repo = ref.read(profilegetvendorRepositoryProvider); return repo.fetchprofilegetvendor(ConstsApi.vendorprofileget); }); final profileupdatevendorRepositoryProvider = Provider( (ref) => ProfileupdatevendorRepository(), ); final profileupdatevendorProvider = FutureProvider.autoDispose>((ref) async { final repo = ref.read(profileupdatevendorRepositoryProvider); return repo.fetchProfileupdatevendor(ConstsApi.upadatevendorprofile); }); final termsAndConditionsRepositoryProvider = Provider( (ref) => TermsAndConditionsRepository(), ); final termsAndConditionsProvider = FutureProvider.autoDispose((ref) async { final repo = ref.read(termsAndConditionsRepositoryProvider); return repo.fetchTermsAndCondition(ConstsApi.termsandcondition); }); final privacypolicyRepositoryProvider = Provider( (ref) => PrivacypolicyRepository(), ); final privacypolicyProvider = FutureProvider.autoDispose((ref) async { final repo = ref.read(privacypolicyRepositoryProvider); return repo.fetchPrivacypolicy(ConstsApi.privacypolicy); }); final notificationRepositoryProvider = Provider( (ref) => NotificationRepository(), ); final notificationProvider = FutureProvider.family .autoDispose, ({int type, String userId})>(( ref, params, ) async { final repo = ref.read(notificationRepositoryProvider); return repo.fetchNotification(type: params.type, userId: params.userId); }); Future updateNotificationCount( WidgetRef ref, { required int type, required String userId, }) async { final repo = ref.read(notificationRepositoryProvider); final notifications = await repo.fetchNotification( type: type, userId: userId, ); ref.read(notificationCountProvider.notifier).state = notifications.length; }