|
|
|
|
@ -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<DashboardView> {
|
|
|
|
|
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<AllRequestsProvider>(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<int> statusTransaction = [];
|
|
|
|
|
List<int> priority = [];
|
|
|
|
|
List<int> 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,
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|