first commit

This commit is contained in:
Anbarasu
2026-05-26 18:01:57 +05:30
commit 6d59c8daf6
297 changed files with 35238 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
import 'package:get/get.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '../../domain/provider/tenant/get_tenant_pro.dart';
class Create_tenant extends GetxController {
final CustomerTenantsProvider provider = CustomerTenantsProvider();
var isLoading = false.obs;
var responseMessage = ''.obs;
// Get customerId from SharedPreferences
Future<int?> _getCustomerId() async {
final prefs = await SharedPreferences.getInstance();
return prefs.getInt('customerId');
}
// Call POST API after scanning QR
Future<void> createTenantCustomerFromQR({
required int tenantId,
required int locationId,
int status = 1,
}) async {
try {
final customerId = await _getCustomerId();
if (customerId == null) {
responseMessage.value = "Customer ID not found";
return;
}
isLoading.value = true;
final response = await provider.createTenantCustomer(
tenantId: tenantId,
locationId: locationId,
customerId: customerId,
status: status,
);
print("🔸 Tenant API Response: $response");
if (response == null) {
responseMessage.value = "No response from server.";
return;
}
// ✅ Check API response structure and handle message properly
final code = response['code'];
final message = response['message'] ?? 'Unknown response';
if (code == 200 || code == 201) {
responseMessage.value = "Tenant customer created successfully";
} else if (code == 409) {
responseMessage.value = "Customer already assigned to this location";
} else {
responseMessage.value = "Error: $message";
}
} catch (e) {
responseMessage.value = "Error: $e";
print('❌ Exception: $e');
} finally {
isLoading.value = false;
}
}
}

View File

@@ -0,0 +1,92 @@
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;
}
}
}