import 'package:get/get.dart'; import 'package:sefer_driver/controller/auth/captin/login_captin_controller.dart'; import 'package:sefer_driver/controller/functions/crud.dart'; import 'package:sefer_driver/print.dart'; import 'package:sefer_driver/views/home/on_boarding_page.dart'; import 'package:sefer_driver/views/widgets/error_snakbar.dart'; import '../../../constant/box_name.dart'; import '../../../constant/links.dart'; import '../../../main.dart'; import '../../../views/auth/syria/registration_view.dart'; // --- Helper Class for Phone Authentication --- class PhoneAuthHelper { // Define your server URLs static final String _baseUrl = '${AppLink.server}/auth/syria/driver/'; static final String _sendOtpUrl = '${_baseUrl}sendWhatsAppDriver.php'; static final String _verifyOtpUrl = '${_baseUrl}verifyOtp.php'; static final String _registerUrl = '${_baseUrl}register_driver.php'; /// Sends an OTP to the provided phone number. static Future sendOtp(String phoneNumber) async { try { final response = await CRUD().post( link: _sendOtpUrl, payload: {'receiver': phoneNumber}, ); if (response != 'failure') { final data = (response); Log.print('data: ${data}'); // if (data['status'] == 'success') { mySnackbarSuccess('An OTP has been sent to your number.'.tr); return true; // } else { // mySnackeBarError(data['message'] ?? 'Failed to send OTP.'); // return false; // } } else { mySnackeBarError('Server error. Please try again.'.tr); return false; } } catch (e) { // mySnackeBarError('An error occurred: $e'); return false; } } /// Verifies the OTP and logs the user in. static Future verifyOtp(String phoneNumber, String otp) async { try { final response = await CRUD().post( link: _verifyOtpUrl, payload: {'phone_number': phoneNumber, 'otp': otp}, ); if (response != 'failure') { final data = response; if (data['status'] == 'success') { final isRegistered = data['message']['isRegistered'] ?? false; box.write(BoxName.phoneVerified, true); box.write(BoxName.phoneDriver, phoneNumber); box.write(BoxName.driverID, data['message']['driverID']); if (isRegistered) { // ✅ السائق مسجل مسبقًا - سجل دخوله واذهب إلى الصفحة الرئيسية final driver = data['message']['driver']; // mySnackbarSuccess('Welcome back, ${driver['first_name']}!'); // حفظ بيانات السائق إذا أردت: box.write(BoxName.driverID, driver['id']); box.write(BoxName.emailDriver, driver['email']); await Get.find().loginWithGoogleCredential( driver['id'].toString(), driver['email'].toString()); } else { // ✅ رقم الهاتف تم التحقق منه لكن السائق غير مسجل // mySnackbarSuccess('Phone verified. Please complete registration.'); // Get.offAll(() => SyrianCardAI()); Get.offAll(() => RegistrationView()); } } else { mySnackeBarError(data['message'] ?? 'Verification failed.'); } } else { mySnackeBarError('Server error. Please try again.'); } } catch (e) { mySnackeBarError('An error occurred: $e'); } } static Future registerUser({ required String phoneNumber, required String firstName, required String lastName, String? email, }) async { try { final response = await CRUD().post( link: _registerUrl, payload: { 'phone_number': phoneNumber, 'first_name': firstName, 'last_name': lastName, 'email': email ?? '', // Send empty string if null }, ); final data = (response); if (data != 'failure') { // Registration successful, log user in await _handleSuccessfulLogin(data['message']); } else { mySnackeBarError( "User with this phone number or email already exists.".tr); } } catch (e) { mySnackeBarError('An error occurred: $e'); } } static Future _handleSuccessfulLogin( Map userData) async { mySnackbarSuccess('Welcome, ${userData['first_name']}!'); // Save user data to local storage (Hive box) using new keys box.write(BoxName.passengerID, userData['id']); box.write(BoxName.nameDriver, userData['first_name']); box.write(BoxName.lastNameDriver, userData['last_name']); box.write(BoxName.emailDriver, userData['email']); box.write(BoxName.phoneDriver, userData['phone']); Get.offAll(() => OnBoardingPage()); // Navigate to home } }