Files
daily_mobileapp_merchant/lib/Controller/Orders/Tabs/Todaycontroller.dart
2026-05-27 10:35:09 +05:30

104 lines
2.7 KiB
Dart

import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';
import 'package:get/get.dart' hide Response;
import '../../../Data/Repository/Summary/ordersrepository.dart';
import '../../../Model/Response/Summary/Getsummarysresponse.dart';
class TodayOrderController extends GetxController {
String? currentTime;
String? notificationDate;
RxBool shimmer = true.obs;
bool filter2 = false;
bool searchMode = false;
bool showOrder = false;
List<DeliveriesDetails> orderAllList = [];
List<DeliveriesDetails> searchCompare = [];
var orderId;
var orderHeaderId;
var userId;
OrderSummaryRepository orderSummaryRepository = OrderSummaryRepository();
TextEditingController searchController = TextEditingController();
Timer? _timer; // To hold the periodic timer
@override
void onInit() {
super.onInit();
getOrders(); // Initial call
startAutoRefresh(); // Start periodic refresh
}
void startAutoRefresh() {
_timer = Timer.periodic(const Duration(seconds: 3), (timer) {
getOrders(); // Refresh every 3 seconds
});
}
getOrders() async {
try {
GetDeliveries? result = await orderSummaryRepository.getOrdersToday();
if (result != null) {
todayOrderResult(result);
print('printresultjson${result.toJson()}');
}
} catch (e) {
print("Error fetching orders: $e");
// Optionally handle error (e.g., show snackbar)
}
}
todayOrderResult(GetDeliveries orderData) async {
print('todayorderresultss');
orderAllList.clear();
if (orderData.details != null) {
print('dataDetailsif${orderData.details}');
searchCompare.clear();
searchCompare.addAll(orderData.details!);
orderAllList.addAll(orderData.details!);
print('orderalllistlengthincontroller ${orderAllList.length}');
}
showOrder = orderAllList.any((order) => order.orderstatus != 'created');
print('showOrder: $showOrder');
shimmer.value = false;
update();
}
search(String searchData) {
print("datasearchData$searchData");
print("lenght${orderAllList.length}");
// Restore from searchCompare before filtering
orderAllList = List.from(searchCompare);
if (searchData.isEmpty) {
searchMode = false;
update();
return;
}
List<DeliveriesDetails> searchResults = searchCompare
.where((value) =>
value.pickupcontactno!
.toLowerCase()
.contains(searchData.toLowerCase()))
.toList();
orderAllList = searchResults;
searchMode = true;
update();
}
@override
void onClose() {
_timer?.cancel(); // Cancel timer to prevent memory leaks
searchController.dispose();
super.onClose();
}
}