// import 'dart:developer'; // import 'package:get/get.dart'; // import 'package:onufitness/constants/api_endpoints.dart'; // import 'package:onufitness/models/user_details_response_model.dart'; // import 'package:onufitness/services/api_services/base_api_services.dart'; // import 'package:onufitness/services/local_storage_services/shared_services.dart'; // import 'package:onufitness/utils/custom_sneakbar.dart'; // class GetUserDetailsController extends GetxController { // UserDetailsResponseModel userDetailsResponseModel = // UserDetailsResponseModel(); // RxBool isUserDetailsFetchedLoading = false.obs; // // observable for becomeCoachStatus // RxString becomeCoachStatus = ''.obs; // Future fetchUserDetails() async { // isUserDetailsFetchedLoading(true); // var ret = false; // try { // var response = await ApiBase.getRequest( // extendedURL: ApiUrl.fetchUserDetails, // ); // userDetailsResponseModel = userDetailsResponseModelFromJson( // response.body, // ); // log("User details API Statuscode---------------> ${response.statusCode}"); // if (response.statusCode == 200 || response.statusCode == 201) { // if (userDetailsResponseModel.isSuccess == true) { // await SharedServices.setUserDetails(userDetailsResponseModel); // //........................................................ // becomeCoachStatus.value = // userDetailsResponseModel.data?.becomeCoachStatus ?? ''; // //........................................................ // ret = true; // } else { // ret = false; // customSnackbar( // title: "Error", // message: "Failed to fetch user details", // ); // } // } else { // ret = false; // customSnackbar(title: "Error", message: "Failed to fetch user details"); // } // } catch (e) { // ret = false; // log("Exception: $e"); // } // isUserDetailsFetchedLoading(false); // return ret; // } // } //.....Above one is Coach to Traine Degrade without Handelled................................................................................... import 'dart:developer'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:onufitness/constants/api_endpoints.dart'; import 'package:onufitness/models/user_details_response_model.dart'; import 'package:onufitness/routes/route_constant.dart'; import 'package:onufitness/screens/chat/controllers/chat_controller.dart'; import 'package:onufitness/services/api_services/base_api_services.dart'; import 'package:onufitness/services/local_storage_services/shared_services.dart'; import 'package:onufitness/services/notification_services/notification_service.dart'; import 'package:onufitness/utils/custom_sneakbar.dart'; class GetUserDetailsController extends GetxController { UserDetailsResponseModel userDetailsResponseModel = UserDetailsResponseModel(); RxBool isUserDetailsFetchedLoading = false.obs; // observable for becomeCoachStatus RxString becomeCoachStatus = ''.obs; Future fetchUserDetails() async { isUserDetailsFetchedLoading(true); var ret = false; try { var response = await ApiBase.getRequest( extendedURL: ApiUrl.fetchUserDetails, ); userDetailsResponseModel = userDetailsResponseModelFromJson( response.body, ); log("User details API Statuscode---------------> ${response.statusCode}"); if (response.statusCode == 200 || response.statusCode == 201) { if (userDetailsResponseModel.isSuccess == true) { // Update the value of becomeCoachStatus................................................. becomeCoachStatus.value = userDetailsResponseModel.data?.becomeCoachStatus ?? ''; // Get stored user type role from SharedPreferences...................................... String? storedUserTypeRole = SharedServices.getUserDetails()?.data?.userTypeName; String? newUserTypeRole = userDetailsResponseModel.data?.userTypeName; // Check if user type role has changed................................................. if (storedUserTypeRole != null && newUserTypeRole != null && storedUserTypeRole != newUserTypeRole) { // Show non-dismissible dialog showRoleChangedDialog(); ret = false; } // Else set the new data................................................................ else { // Role matches, proceed with normal flow await SharedServices.setUserDetails(userDetailsResponseModel); ret = true; } } else { ret = false; customSnackbar( title: "Error", message: "Failed to fetch user details", ); } } else { ret = false; customSnackbar(title: "Error", message: "Failed to fetch user details"); } } catch (e) { ret = false; customSnackbar(title: "Error", message: "Failed to fetch user details"); log("Exception: $e"); } isUserDetailsFetchedLoading(false); return ret; } static Future showRoleChangedDialog() async { final chatController = Get.find(); final notioficationService = Get.find(); await Get.defaultDialog( title: "Role Changed", middleText: 'Your role has changed. Please logout and login again to continue.', barrierDismissible: false, confirm: TextButton( onPressed: () async { await chatController.logout(); await notioficationService.deleteDeviceToken(); await SharedServices.logout(); Get.offNamedUntil(RouteConstant.loginFirstScreen, (route) => false); }, child: Text("Ok"), ), ); } }