import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:siro_rider/constant/box_name.dart'; import 'package:siro_rider/constant/links.dart'; import 'package:siro_rider/controller/functions/crud.dart'; import 'package:siro_rider/main.dart'; class InvitesRewardsController extends GetxController { bool isLoading = false; String? referralCode; int totalInvitedDrivers = 0; int totalInvitedPassengers = 0; List referrals = []; @override void onInit() { super.onInit(); fetchPassengerReferrals(); } Future fetchPassengerReferrals() async { isLoading = true; update(); try { // Ensure a referral code exists first (creates one if not) var codeResponse = await CRUD().post( link: AppLink.getUnifiedCode, payload: {}, ); if (codeResponse != 'failure' && codeResponse['status'] == 'success') { referralCode = codeResponse['message']['referral_code']; } var response = await CRUD().post( link: AppLink.getPassengerReferrals, payload: { 'country_code': box.read(BoxName.countryCode) ?? 'Jordan', }, ); if (response != 'failure') { if (response['status'] == 'success') { referralCode ??= response['message']['referral_code']; totalInvitedDrivers = response['message']['total_invited_drivers'] ?? 0; totalInvitedPassengers = response['message']['total_invited_passengers'] ?? 0; referrals = response['message']['referrals'] ?? []; } else { referrals = []; } } } catch (e) { print("Error fetching passenger referrals: $e"); } isLoading = false; update(); } Future linkInviteCode(String inviteCode) async { Get.dialog(const Center(child: CircularProgressIndicator()), barrierDismissible: false); try { var response = await CRUD().post( link: AppLink.addUnifiedInvite, payload: { "inviter_code": inviteCode, } ); Get.back(); // close loading if (response != 'failure') { if (response['status'] == 'success') { Get.snackbar("Success".tr, "You have been successfully referred!".tr, backgroundColor: Colors.green, colorText: Colors.white); } else { Get.snackbar("Notice".tr, response['message'] ?? "Could not add invite".tr); } } else { Get.snackbar("Error".tr, "Network error occurred".tr); } } catch (e) { Get.back(); // close loading Get.snackbar("Error".tr, "Network error occurred".tr); } } }