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'; import 'package:siro_rider/views/widgets/error_snakbar.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, } ); Navigator.maybeOf(Get.context!)?.pop(); // close loading dialog only if (response != 'failure') { if (response['status'] == 'success') { mySnackbarSuccess("You have been successfully referred!".tr); } else { mySnackbarWarning(response['message'] ?? "Could not add invite".tr); } } else { mySnackeBarError("Network error occurred".tr); } } catch (e) { Navigator.maybeOf(Get.context!)?.pop(); // close loading dialog only mySnackeBarError("Network error occurred".tr); } } }