onufitness_mobile/lib/controller/get_user_data_controller.dart
2026-01-13 11:36:24 +05:30

153 lines
5.9 KiB
Dart

// 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<bool> 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<bool> 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<ChatController>();
final notioficationService = Get.find<NotificationService>();
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"),
),
);
}
}