import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/request_utils.dart'; import 'package:hmg_patient_app_new/features/authentication/authentication_repo.dart'; import 'package:hmg_patient_app_new/features/authentication/models/request_models/check_patient_authentication_request_model.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; class AuthenticationViewModel extends ChangeNotifier { AuthenticationRepo authenticationRepo; AppState appState; ErrorHandlerService errorHandlerService; DialogService dialogService; AuthenticationViewModel({ required this.appState, required this.authenticationRepo, required this.errorHandlerService, required this.dialogService, }); final TextEditingController nationalIdController = TextEditingController(); final TextEditingController phoneNumberController = TextEditingController(); Future selectDeviceImei({Function(dynamic)? onSuccess, Function(String)? onError}) async { String firebaseToken = "dOGRRszQQMGe_9wA5Hx3kO:APA91bFV5IcIJXvcCXXk0tc2ddtZgWwCPq7sGSuPr-YW7iiJpQZKgFGN9GAzCVOWL8MfheaP1slE8MdxB7lczdPBGdONQ7WbMmhgHcsUCUktq-hsapGXXqc"; final result = await authenticationRepo.selectDeviceByImei(firebaseToken: firebaseToken); result.fold( (failure) async => await errorHandlerService.handleError(failure: failure), (apiResponse) { if (apiResponse.messageStatus == 2) { dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); } else if (apiResponse.messageStatus == 1) { //todo: move to next api call } }, ); } Future checkUserAuthentication({Function(dynamic)? onSuccess, Function(String)? onError}) async { CheckPatientAuthenticationReq checkPatientAuthenticationReq = RequestUtils.getCommonRequestWelcome( phoneNumber: '0567184134', otpTypeEnum: OTPTypeEnum.sms, deviceToken: 'dummyDeviceToken123', patientOutSA: true, loginTokenID: 'dummyLoginToken456', registeredData: null, patientId: 12345, nationIdText: '1234567890', countryCode: 'SA', ); final result = await authenticationRepo.checkPatientAuthentication(checkPatientAuthenticationReq: checkPatientAuthenticationReq); result.fold( (failure) async => await errorHandlerService.handleError(failure: failure), (apiResponse) { if (apiResponse.data['isSMSSent']) { // TODO: set this in AppState // sharedPref.setString(LOGIN_TOKEN_ID, value['LogInTokenID']); // loginTokenID = value['LogInTokenID'], // sharedPref.setObject(REGISTER_DATA_FOR_LOGIIN, request), sendActivationCode(type); } else { if (apiResponse.data['IsAuthenticated']) { checkActivationCode(onWrongActivationCode: (String? message) {}); } } }, ); } Future sendActivationCode({required OTPTypeEnum otpTypeEnum}) async { var request = RequestUtils.getCommonRequestAuthProvider( otpTypeEnum: otpTypeEnum, registeredData: null, deviceToken: "dummyLoginToken456", mobileNumber: "0567184134", zipCode: "SA", patientOutSA: true, loginTokenID: "dummyLoginToken456", selectedOption: selectedOption, patientId: 12345, ); request.sMSSignature = await SMSOTP.getSignature(); selectedOption = type; // GifLoaderDialogUtils.showMyDialog(context); if (healthId != null || isDubai) { if (!isDubai) { request.dob = dob; //isHijri == 1 ? dob : dateFormat2.format(dateFormat.parse(dob)); } request.healthId = healthId; request.isHijri = isHijri; await this.apiClient.sendActivationCodeRegister(request).then((result) { // GifLoaderDialogUtils.hideDialog(context); if (result != null && result['isSMSSent'] == true) { this.startSMSService(type); } }).catchError((r) { GifLoaderDialogUtils.hideDialog(context); context.showBottomSheet( child: ExceptionBottomSheet( message: r.toString(), onOkPressed: () { Navigator.of(context).pop(); }, )); // AppToast.showErrorToast(message: r); }); } else { request.dob = ""; request.healthId = ""; request.isHijri = 0; await this.authService.sendActivationCode(request).then((result) { GifLoaderDialogUtils.hideDialog(context); if (result != null && result['isSMSSent'] == true) { this.startSMSService(type); } }).catchError((r) { GifLoaderDialogUtils.hideDialog(context); context.showBottomSheet( child: ExceptionBottomSheet( message: r.toString(), onOkPressed: () { Navigator.of(context).pop(); }, )); // AppToast.showErrorToast(message: r.toString()); }); } } }