From cb1a1475fa5e50f2fb5ce014be5d76a6ab8f626d Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 20 Jul 2026 15:09:00 +0300 Subject: [PATCH] pagination api calling bug fixed. --- lib/dashboard_latest/dashboard_view.dart | 86 ++++++++++++++++++++++-- 1 file changed, 79 insertions(+), 7 deletions(-) diff --git a/lib/dashboard_latest/dashboard_view.dart b/lib/dashboard_latest/dashboard_view.dart index ca986cc1..6de6e88b 100644 --- a/lib/dashboard_latest/dashboard_view.dart +++ b/lib/dashboard_latest/dashboard_view.dart @@ -12,6 +12,7 @@ import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/dashboard_latest/dashboard_provider.dart'; import 'package:test_sa/dashboard_latest/widgets/app_bar_widget.dart'; +import 'package:test_sa/extensions/enum_extensions.dart'; import 'package:test_sa/dashboard_latest/widgets/progress_fragment.dart'; import 'package:test_sa/dashboard_latest/widgets/request_category_fragment_housekeeper.dart'; import 'package:test_sa/dashboard_latest/widgets/requests_fragment.dart'; @@ -103,15 +104,86 @@ class _DashboardViewState extends State { void handleScroll() async { _scrollController = ScrollController(); _scrollController.addListener(() async { - if (_scrollController.position.pixels == _scrollController.position.maxScrollExtent && !_dashBoardProvider.isDetailLoading) { - _dashBoardProvider.pageNum = _dashBoardProvider.pageNum + 1; - if (_dashBoardProvider.currentListIndex == null) { - } else { - _dashBoardProvider.getRequestDetail( + if (_scrollController.position.pixels == _scrollController.position.maxScrollExtent) { + final allRequestsProvider = Provider.of(context, listen: false); + + // Check which scenario is active and call appropriate pagination API + if (_dashBoardProvider.listIndex.isEmpty) { + // No category selected - paginate AllRequests + if (!allRequestsProvider.isAllLoading && allRequestsProvider.nextPage) { + allRequestsProvider.getAllRequests(context); + } + } else if (_dashBoardProvider.listIndex.length == 1 && _dashBoardProvider.isUnassignedTab(_dashBoardProvider.listIndex[0])) { + // Only UnAssigned tab selected - paginate with getRequestDetail + if (!_dashBoardProvider.isDetailLoading && _dashBoardProvider.nextPage) { + _dashBoardProvider.pageNum = _dashBoardProvider.pageNum + 1; + _dashBoardProvider.getRequestDetail( usersType: user.type!, showLoader: false, - status: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex!].tag, - tabId: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex!].id); + status: _dashBoardProvider.tabs[_dashBoardProvider.listIndex[0]].tag, + tabId: _dashBoardProvider.tabs[_dashBoardProvider.listIndex[0]].id, + ); + } + } else { + // Multi-select categories - paginate with getDashboardMultifilterRequests + if (!allRequestsProvider.isMultiFilterLoading && allRequestsProvider.nextPage) { + // Build filter arrays based on selected tabs + List statusTransaction = []; + List priority = []; + List displayData = []; + + for (int index in _dashBoardProvider.listIndex) { + if (index >= 0 && index < _dashBoardProvider.tabs.length) { + CategoryTabs tab = _dashBoardProvider.tabs[index]; + + // High Priority + if (tab.isHighPriority) { + if (!priority.contains(1)) priority.add(1); + } + + // Overdue + if (tab.isOverDue) { + if (!displayData.contains(1)) displayData.add(1); + } + + // Status categories + if (!tab.isHighPriority && !tab.isOverDue && tab.requestType != RequestTypeEnum.unassigned) { + switch (tab.requestType) { + case RequestTypeEnum.open: + if (!statusTransaction.contains(1)) statusTransaction.add(1); + break; + case RequestTypeEnum.inProgress: + if (!statusTransaction.contains(2)) statusTransaction.add(2); + break; + case RequestTypeEnum.completed: + if (!statusTransaction.contains(4)) statusTransaction.add(4); + break; + case RequestTypeEnum.closed: + if (!statusTransaction.contains(4)) statusTransaction.add(4); + break; + case RequestTypeEnum.canceled: + if (!statusTransaction.contains(5)) statusTransaction.add(5); + break; + case RequestTypeEnum.pendingAcknowledgment: + if (!statusTransaction.contains(3)) statusTransaction.add(3); + break; + case RequestTypeEnum.unassigned: + case RequestTypeEnum.highPriority: + case RequestTypeEnum.overdue: + break; + } + } + } + } + + allRequestsProvider.getDashboardMultifilterRequests( + context, + pagination: false, + statusTransaction: statusTransaction, + priority: priority, + displayData: displayData, + ); + } } } });