import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:siro_rider/constant/links.dart'; import 'package:siro_rider/controller/functions/crud.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 { var response = await CRUD().post( link: AppLink.getPassengerReferrals, payload: {} // Token is automatically handled by CRUD() ); if (response != 'failure') { var data = jsonDecode(response); if (data['status'] == 'success') { referralCode = data['message']['referral_code']; totalInvitedDrivers = data['message']['total_invited_drivers'] ?? 0; totalInvitedPassengers = data['message']['total_invited_passengers'] ?? 0; referrals = data['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') { var data = jsonDecode(response); if (data['status'] == 'success') { Get.snackbar("Success".tr, "You have been successfully referred!".tr, backgroundColor: Colors.green, colorText: Colors.white); } else { Get.snackbar("Notice".tr, data['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); } } }