pd-android-app/lib/controller/get_single_invoice_controller.dart

90 lines
3.1 KiB
Dart

import 'package:cheminova/controller/rd_processing_invoice_service.dart';
import 'package:cheminova/models/get_invoice_model.dart';
import 'package:get/get.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '../models/rd_processing_invoice_model.dart';
import '../utils/show_snackbar.dart';
import 'get_single_invoice_Service.dart';
class GetSingleInvoiceController extends GetxController {
// Import your Invoice model file
// Observable for holding the fetched invoice
var invoice = <GetInvoiceModel?>[].obs;
var isLoading = true.obs; // Observable for loading state
var errorMessage = ''.obs; // Observable for error message
@override
void onInit() {
super.onInit();
// Call fetchInvoice with a specific ID
}
Future<void> fetchInvoice(String invoiceId) async {
isLoading.value = true; // Set loading state to true
try {
SharedPreferences prefs = await SharedPreferences.getInstance();
String? token = prefs.getString('token');
final List<InvoiceResponseModel>? allOrders = await RdProcessingInvoiceService().getRDProcessingProduct(token!);
// Check if the token is null or empty
if (token == null || token.isEmpty) {
errorMessage.value = 'Token not found'; // Handle token not being available
return;
}
if (allOrders == null || allOrders.isEmpty) {
print("No orders found.");
showSnackbar("No orders found.");
return;
}
// Display the number of fetched orders
print("Fetched ${allOrders.length} orders.");
// Get the ID of the first order and convert it to a String
final String firstOrderId = allOrders[0].id.toString(); // Convert to String
print("First order ID: $firstOrderId"); // Debugging: Log the order ID
// Fetch the single order using the first order ID
final GetInvoiceModel? result = await GetSingleInvoiceService().fetchInvoice(token, firstOrderId);
// Check if the result is not null
if (result != null) {
// Here, you should add the single order to your observable list
invoice.clear(); // Clear the previous data if necessary
invoice.add(result); // Add the single order to the list
} else {
// If the result is null, you can clear the list
invoice.clear();
}
// For debugging, log the fetched orders count
print("Fetched orders count: ${invoice.length}");
}
// Attempt to fetch the invoice
// final fetchedInvoice = await GetSingleInvoiceService().fetchInvoice(token, invoiceId);
// Check if the fetchedInvoice is null before accessing it
// if (fetchedInvoice != null) {
// invoice.value = fetchedInvoice as List<GetInvoiceModel?>; // Assign the fetched invoice to the observable
// } else {
// errorMessage.value = 'Invoice not found'; // Handle the case where the invoice could not be fetched
// }
// }
catch (e) {
errorMessage.value = 'Error fetching invoice: $e'; // Set the error message with more context
} finally {
isLoading.value = false; // Set loading state to false
}
}
}