153 lines
5.9 KiB
Dart
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"),
|
|
),
|
|
);
|
|
}
|
|
}
|