|  |  |  | @ -82,7 +82,7 @@ class AuthenticationViewModel extends ChangeNotifier { | 
		
	
		
			
				|  |  |  |  |   String errorMsg = ''; | 
		
	
		
			
				|  |  |  |  |   final FocusNode myFocusNode = FocusNode(); | 
		
	
		
			
				|  |  |  |  |   var healthId; | 
		
	
		
			
				|  |  |  |  |   int getDeviceLastLogin =1; | 
		
	
		
			
				|  |  |  |  |   int getDeviceLastLogin = 1; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   Future<void> onLoginPressed() async { | 
		
	
		
			
				|  |  |  |  |     try { | 
		
	
	
		
			
				
					|  |  |  | @ -297,12 +297,7 @@ class AuthenticationViewModel extends ChangeNotifier { | 
		
	
		
			
				|  |  |  |  |         } else if (apiResponse.messageStatus == 1) { | 
		
	
		
			
				|  |  |  |  |           if (apiResponse.data['isSMSSent']) { | 
		
	
		
			
				|  |  |  |  |             _appState.setAppAuthToken = apiResponse.data['LogInTokenID']; | 
		
	
		
			
				|  |  |  |  |           await  sendActivationCode( | 
		
	
		
			
				|  |  |  |  |               otpTypeEnum: otpTypeEnum, | 
		
	
		
			
				|  |  |  |  |               phoneNumber: phoneNumberController.text, | 
		
	
		
			
				|  |  |  |  |               nationalIdOrFileNumber: nationalIdController.text, | 
		
	
		
			
				|  |  |  |  |             ); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |             await sendActivationCode(otpTypeEnum: otpTypeEnum, phoneNumber: phoneNumberController.text, nationalIdOrFileNumber: nationalIdController.text, isForRegister: false); | 
		
	
		
			
				|  |  |  |  |           } else { | 
		
	
		
			
				|  |  |  |  |             if (apiResponse.data['IsAuthenticated']) { | 
		
	
		
			
				|  |  |  |  |               await checkActivationCode( | 
		
	
	
		
			
				
					|  |  |  | @ -310,7 +305,6 @@ class AuthenticationViewModel extends ChangeNotifier { | 
		
	
		
			
				|  |  |  |  |                 onWrongActivationCode: (String? message) {}, | 
		
	
		
			
				|  |  |  |  |                 activationCode: null, //todo silent login case halded on the repo itself.. | 
		
	
		
			
				|  |  |  |  |               ); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |           } | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
	
		
			
				
					|  |  |  | @ -318,18 +312,23 @@ class AuthenticationViewModel extends ChangeNotifier { | 
		
	
		
			
				|  |  |  |  |     ); | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   Future<void> sendActivationCode({required OTPTypeEnum otpTypeEnum, required String nationalIdOrFileNumber, required String phoneNumber, dynamic payload}) async { | 
		
	
		
			
				|  |  |  |  |   Future<void> sendActivationCode({required OTPTypeEnum otpTypeEnum, required String nationalIdOrFileNumber, required String phoneNumber, required bool isForRegister, dynamic payload}) async { | 
		
	
		
			
				|  |  |  |  |     var request = RequestUtils.getCommonRequestSendActivationCode( | 
		
	
		
			
				|  |  |  |  |         otpTypeEnum: otpTypeEnum, | 
		
	
		
			
				|  |  |  |  |         mobileNumber: phoneNumber, | 
		
	
		
			
				|  |  |  |  |         selectedLoginType: otpTypeEnum.toInt(), | 
		
	
		
			
				|  |  |  |  |         zipCode: selectedCountrySignup.countryCode, | 
		
	
		
			
				|  |  |  |  |         nationalId: int.parse(nationalIdOrFileNumber), | 
		
	
		
			
				|  |  |  |  |         isFileNo: isPatientHasFile(request: payload), | 
		
	
		
			
				|  |  |  |  |         patientId: 0, | 
		
	
		
			
				|  |  |  |  |         isForRegister: checkIsUserComingForRegister(request: payload), | 
		
	
		
			
				|  |  |  |  |         patientOutSA: isPatientOutsideSA(request: payload), | 
		
	
		
			
				|  |  |  |  |         payload: payload); | 
		
	
		
			
				|  |  |  |  |       otpTypeEnum: otpTypeEnum, | 
		
	
		
			
				|  |  |  |  |       mobileNumber: phoneNumber, | 
		
	
		
			
				|  |  |  |  |       selectedLoginType: otpTypeEnum.toInt(), | 
		
	
		
			
				|  |  |  |  |       zipCode: selectedCountrySignup.countryCode, | 
		
	
		
			
				|  |  |  |  |       nationalId: int.parse(nationalIdOrFileNumber), | 
		
	
		
			
				|  |  |  |  |       isFileNo: isForRegister ? isPatientHasFile(request: payload) : false, | 
		
	
		
			
				|  |  |  |  |       patientId: 0, | 
		
	
		
			
				|  |  |  |  |       isForRegister: isForRegister, | 
		
	
		
			
				|  |  |  |  |       patientOutSA: isForRegister | 
		
	
		
			
				|  |  |  |  |           ? isPatientOutsideSA(request: payload) | 
		
	
		
			
				|  |  |  |  |           : selectedCountrySignup.countryCode == CountryEnum.saudiArabia | 
		
	
		
			
				|  |  |  |  |               ? false | 
		
	
		
			
				|  |  |  |  |               : true, | 
		
	
		
			
				|  |  |  |  |       payload: payload, | 
		
	
		
			
				|  |  |  |  |     ); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     // TODO: GET APP SMS SIGNATURE HERE | 
		
	
		
			
				|  |  |  |  |     request.sMSSignature = "enKTDcqbOVd"; | 
		
	
	
		
			
				
					|  |  |  | @ -384,7 +383,7 @@ class AuthenticationViewModel extends ChangeNotifier { | 
		
	
		
			
				|  |  |  |  |             countryCode: selectedCountrySignup.countryCode, | 
		
	
		
			
				|  |  |  |  |             loginType: loginTypeEnum.toInt) | 
		
	
		
			
				|  |  |  |  |         .toJson(); | 
		
	
		
			
				|  |  |  |  |       LoaderBottomSheet.showLoader(); | 
		
	
		
			
				|  |  |  |  |     LoaderBottomSheet.showLoader(); | 
		
	
		
			
				|  |  |  |  |     bool isForRegister = (_appState.getUserRegistrationPayload.healthId != null || _appState.getUserRegistrationPayload.patientOutSa == true); | 
		
	
		
			
				|  |  |  |  |     if (isForRegister) { | 
		
	
		
			
				|  |  |  |  |       if (_appState.getUserRegistrationPayload.patientOutSa == 0) request['DOB'] = _appState.getUserRegistrationPayload.dob; | 
		
	
	
		
			
				
					|  |  |  | @ -425,7 +424,6 @@ class AuthenticationViewModel extends ChangeNotifier { | 
		
	
		
			
				|  |  |  |  |       resultEither.fold((failure) async => await _errorHandlerService.handleError(failure: failure), (apiResponse) async { | 
		
	
		
			
				|  |  |  |  |         final activation = CheckActivationCode.fromJson(apiResponse.data as Map<String, dynamic>); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         if (activation.errorCode == '699') { | 
		
	
		
			
				|  |  |  |  |           // Todo: Hide Loader | 
		
	
		
			
				|  |  |  |  |           // GifLoaderDialogUtils.hideDialog(context); | 
		
	
	
		
			
				
					|  |  |  | @ -434,7 +432,7 @@ class AuthenticationViewModel extends ChangeNotifier { | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |           return; | 
		
	
		
			
				|  |  |  |  |         } else if (activation.messageStatus == 2) { | 
		
	
		
			
				|  |  |  |  |           LoaderBottomSheet.hideLoader(); | 
		
	
		
			
				|  |  |  |  |            LoaderBottomSheet.hideLoader(); | 
		
	
		
			
				|  |  |  |  |           onWrongActivationCode(activation.errorEndUserMessage); | 
		
	
		
			
				|  |  |  |  |           return; | 
		
	
		
			
				|  |  |  |  |         } else if (_appState.getUserRegistrationPayload.isRegister == true) { | 
		
	
	
		
			
				
					|  |  |  | @ -443,7 +441,6 @@ class AuthenticationViewModel extends ChangeNotifier { | 
		
	
		
			
				|  |  |  |  |           // Navigator.popUntil(context, (route) => Utils.route(route, equalsTo: RegisterNew)); | 
		
	
		
			
				|  |  |  |  |           return; | 
		
	
		
			
				|  |  |  |  |         } else { | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |           if (activation.list != null && activation.list!.isNotEmpty) { | 
		
	
		
			
				|  |  |  |  |             _appState.setAuthenticatedUser(activation.list!.first); | 
		
	
		
			
				|  |  |  |  |           } | 
		
	
	
		
			
				
					|  |  |  | @ -453,7 +450,7 @@ class AuthenticationViewModel extends ChangeNotifier { | 
		
	
		
			
				|  |  |  |  |           bool isUserAgreedBefore = await checkIfUserAgreedBefore(request: request); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |           //updating the last login type in app state to show the fingerprint/face id option on home screen | 
		
	
		
			
				|  |  |  |  |           if( _appState.getSelectDeviceByImeiRespModelElement !=null) { | 
		
	
		
			
				|  |  |  |  |           if (_appState.getSelectDeviceByImeiRespModelElement != null) { | 
		
	
		
			
				|  |  |  |  |             _appState.getSelectDeviceByImeiRespModelElement!.logInType = loginTypeEnum.toInt; | 
		
	
		
			
				|  |  |  |  |           } | 
		
	
		
			
				|  |  |  |  |           LoaderBottomSheet.hideLoader(); | 
		
	
	
		
			
				
					|  |  |  | @ -551,12 +548,12 @@ class AuthenticationViewModel extends ChangeNotifier { | 
		
	
		
			
				|  |  |  |  |         loginTypeEnum = (_appState.deviceTypeID == 1 ? LoginTypeEnum.face : LoginTypeEnum.fingerprint); | 
		
	
		
			
				|  |  |  |  |         if (!_appState.isAuthenticated) { | 
		
	
		
			
				|  |  |  |  |           //commenting this api to check either the same flow working or not because this api does not needed further if work fine we will remove this | 
		
	
		
			
				|  |  |  |  |         //  await getPatientDeviceData(loginTypeEnum.toInt); | 
		
	
		
			
				|  |  |  |  |           //  await getPatientDeviceData(loginTypeEnum.toInt); | 
		
	
		
			
				|  |  |  |  |           await checkActivationCode(otpTypeEnum: OTPTypeEnum.faceIDFingerprint, activationCode: null, onWrongActivationCode: (String? message) {}); | 
		
	
		
			
				|  |  |  |  |          await insertPatientIMEIData(loginTypeEnum.toInt); | 
		
	
		
			
				|  |  |  |  |           await insertPatientIMEIData(loginTypeEnum.toInt); | 
		
	
		
			
				|  |  |  |  |         } else { | 
		
	
		
			
				|  |  |  |  |           // authenticated = true; | 
		
	
		
			
				|  |  |  |  |          await insertPatientIMEIData(loginTypeEnum.toInt); | 
		
	
		
			
				|  |  |  |  |           await insertPatientIMEIData(loginTypeEnum.toInt); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         LoaderBottomSheet.hideLoader(); | 
		
	
		
			
				|  |  |  |  |         notifyListeners(); | 
		
	
	
		
			
				
					|  |  |  | @ -669,10 +666,12 @@ class AuthenticationViewModel extends ChangeNotifier { | 
		
	
		
			
				|  |  |  |  |         if (isPatientOutsideSA(request: response)) { | 
		
	
		
			
				|  |  |  |  |           print("=======OUT SA======="); | 
		
	
		
			
				|  |  |  |  |           sendActivationCode( | 
		
	
		
			
				|  |  |  |  |               otpTypeEnum: OTPTypeEnumExtension.fromInt(request["OTP_SendType"]), | 
		
	
		
			
				|  |  |  |  |               nationalIdOrFileNumber: request["PatientIdentificationID"].toString(), | 
		
	
		
			
				|  |  |  |  |               phoneNumber: request["PatientMobileNumber"].toString(), | 
		
	
		
			
				|  |  |  |  |               payload: request); | 
		
	
		
			
				|  |  |  |  |             otpTypeEnum: OTPTypeEnumExtension.fromInt(request["OTP_SendType"]), | 
		
	
		
			
				|  |  |  |  |             nationalIdOrFileNumber: request["PatientIdentificationID"].toString(), | 
		
	
		
			
				|  |  |  |  |             phoneNumber: request["PatientMobileNumber"].toString(), | 
		
	
		
			
				|  |  |  |  |             payload: request, | 
		
	
		
			
				|  |  |  |  |             isForRegister: true, | 
		
	
		
			
				|  |  |  |  |           ); | 
		
	
		
			
				|  |  |  |  |         } else { | 
		
	
		
			
				|  |  |  |  |           print("=======IN SA======="); | 
		
	
		
			
				|  |  |  |  |           chekUserNHICData(request: request); | 
		
	
	
		
			
				
					|  |  |  | @ -710,10 +709,12 @@ class AuthenticationViewModel extends ChangeNotifier { | 
		
	
		
			
				|  |  |  |  |       if (apiResponse.data is Map) { | 
		
	
		
			
				|  |  |  |  |         setNHICData(apiResponse.data, request); | 
		
	
		
			
				|  |  |  |  |         sendActivationCode( | 
		
	
		
			
				|  |  |  |  |             otpTypeEnum: OTPTypeEnumExtension.fromInt(request["OTP_SendType"]), | 
		
	
		
			
				|  |  |  |  |             nationalIdOrFileNumber: request["PatientIdentificationID"].toString(), | 
		
	
		
			
				|  |  |  |  |             phoneNumber: request["PatientMobileNumber"].toString(), | 
		
	
		
			
				|  |  |  |  |             payload: request); | 
		
	
		
			
				|  |  |  |  |           otpTypeEnum: OTPTypeEnumExtension.fromInt(request["OTP_SendType"]), | 
		
	
		
			
				|  |  |  |  |           nationalIdOrFileNumber: request["PatientIdentificationID"].toString(), | 
		
	
		
			
				|  |  |  |  |           phoneNumber: request["PatientMobileNumber"].toString(), | 
		
	
		
			
				|  |  |  |  |           payload: request, | 
		
	
		
			
				|  |  |  |  |           isForRegister: true, | 
		
	
		
			
				|  |  |  |  |         ); | 
		
	
		
			
				|  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |     }); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -813,33 +814,30 @@ class AuthenticationViewModel extends ChangeNotifier { | 
		
	
		
			
				|  |  |  |  |         log("Insert IMEI Failed"); | 
		
	
		
			
				|  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |     }); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   Future<void> getPatientDeviceData(int loginType) async { | 
		
	
		
			
				|  |  |  |  |     final resultEither = await _authenticationRepo.getPatientDeviceData( | 
		
	
		
			
				|  |  |  |  |         patientDeviceDataRequest: GetUserMobileDeviceData( | 
		
	
		
			
				|  |  |  |  |             deviceToken: _appState.deviceToken, | 
		
	
		
			
				|  |  |  |  |             deviceTypeId: _appState.getDeviceTypeID(), | 
		
	
		
			
				|  |  |  |  |             patientId: _appState.getSelectDeviceByImeiRespModelElement!.patientId!, | 
		
	
		
			
				|  |  |  |  |             patientType: _appState.getSelectDeviceByImeiRespModelElement!.patientType, | 
		
	
		
			
				|  |  |  |  |             patientOutSa:_appState.getSelectDeviceByImeiRespModelElement!.outSa == true ?1 :0, | 
		
	
		
			
				|  |  |  |  |             loginType: loginType, | 
		
	
		
			
				|  |  |  |  |             languageId: _appState.getLanguageID(), | 
		
	
		
			
				|  |  |  |  |             latitude: _appState.userLat, | 
		
	
		
			
				|  |  |  |  |             longitude: _appState.userLong, | 
		
	
		
			
				|  |  |  |  |             mobileNo:_appState.getSelectDeviceByImeiRespModelElement!.mobile! , | 
		
	
		
			
				|  |  |  |  |             patientMobileNumber:int.parse(_appState.getSelectDeviceByImeiRespModelElement!.mobile!), | 
		
	
		
			
				|  |  |  |  |             nationalId:_appState.getSelectDeviceByImeiRespModelElement!.identificationNo) | 
		
	
		
			
				|  |  |  |  |                 deviceToken: _appState.deviceToken, | 
		
	
		
			
				|  |  |  |  |                 deviceTypeId: _appState.getDeviceTypeID(), | 
		
	
		
			
				|  |  |  |  |                 patientId: _appState.getSelectDeviceByImeiRespModelElement!.patientId!, | 
		
	
		
			
				|  |  |  |  |                 patientType: _appState.getSelectDeviceByImeiRespModelElement!.patientType, | 
		
	
		
			
				|  |  |  |  |                 patientOutSa: _appState.getSelectDeviceByImeiRespModelElement!.outSa == true ? 1 : 0, | 
		
	
		
			
				|  |  |  |  |                 loginType: loginType, | 
		
	
		
			
				|  |  |  |  |                 languageId: _appState.getLanguageID(), | 
		
	
		
			
				|  |  |  |  |                 latitude: _appState.userLat, | 
		
	
		
			
				|  |  |  |  |                 longitude: _appState.userLong, | 
		
	
		
			
				|  |  |  |  |                 mobileNo: _appState.getSelectDeviceByImeiRespModelElement!.mobile!, | 
		
	
		
			
				|  |  |  |  |                 patientMobileNumber: int.parse(_appState.getSelectDeviceByImeiRespModelElement!.mobile!), | 
		
	
		
			
				|  |  |  |  |                 nationalId: _appState.getSelectDeviceByImeiRespModelElement!.identificationNo) | 
		
	
		
			
				|  |  |  |  |             .toJson()); | 
		
	
		
			
				|  |  |  |  |     resultEither.fold((failure) async => await _errorHandlerService.handleError(failure: failure), (apiResponse) async { | 
		
	
		
			
				|  |  |  |  |       if (apiResponse.messageStatus == 1) { | 
		
	
		
			
				|  |  |  |  |         dynamic deviceInfo= apiResponse.data['List_MobileLoginInfo']; | 
		
	
		
			
				|  |  |  |  |           getDeviceLastLogin =  deviceInfo['LoginType']; | 
		
	
		
			
				|  |  |  |  |         dynamic deviceInfo = apiResponse.data['List_MobileLoginInfo']; | 
		
	
		
			
				|  |  |  |  |         getDeviceLastLogin = deviceInfo['LoginType']; | 
		
	
		
			
				|  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |     }); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   @override | 
		
	
	
		
			
				
					|  |  |  | 
 |