Files
daily_mobileapp_customer/lib/controllers/tenant/get_tenant.dart
2026-05-26 18:01:57 +05:30

92 lines
2.4 KiB
Dart

import 'package:get/get.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '../../domain/provider/tenant/get_tenant_pro.dart';
import '../../modules/orders/getcustomerorders.dart';
import '../../modules/tenant/get_tenant.dart';
class OrderedTenantController extends GetxController {
final CustomerTenantsProvider provider = CustomerTenantsProvider();
var isLoading = false.obs;
var orders = <Order>[].obs; // ✅ Use Order, not OrderDatum
int pageNo = 1;
int pageSize = 10;
bool allLoaded = false;
@override
void onInit() {
super.onInit();
loadOrders();
}
/// Reload orders from page 1
Future<void> refreshOrders() async {
allLoaded = false;
pageNo = 1;
orders.clear();
await loadOrders();
}
/// Load orders with pagination and duplicate prevention
Future<void> loadOrders() async {
if (allLoaded || isLoading.value) return;
try {
isLoading.value = true;
final prefs = await SharedPreferences.getInstance();
final customerId = prefs.getInt('customerId');
if (customerId == null) {
Get.snackbar('Error', 'No customer ID found. Please log in.');
return;
}
final response = await provider.getCustomerOrderss(
customerId,
pageNo: pageNo,
pageSize: pageSize,
);
print('Requested page: $pageNo, pageSize: $pageSize');
if (response == null) {
print("⚠️ API returned null response");
return;
}
// ✅ Use response.orders (not response.data)
final fetchedOrders = response.orders;
if (fetchedOrders.isEmpty) {
allLoaded = true;
print("✅ All orders loaded.");
return;
}
// ✅ Deduplicate by orderheaderid
final newOrders = fetchedOrders.where((newOrder) =>
!orders.any((existing) =>
existing.orderheaderid == newOrder.orderheaderid)).toList();
if (newOrders.isNotEmpty) {
orders.addAll(newOrders);
pageNo++;
print("✅ Orders loaded: ${orders.length}");
} else {
allLoaded = true; // All fetched orders already exist locally
print("✅ No new unique orders. Marking as all loaded.");
}
// ✅ If fewer items than pageSize were returned, we've reached the end
if (fetchedOrders.length < pageSize) {
allLoaded = true;
}
} catch (e) {
print("⛔ Error in loadOrders: $e");
} finally {
isLoading.value = false;
}
}
}