From 6b740549a55d73ab47ac537a8d47dd19deaf793f Mon Sep 17 00:00:00 2001 From: nextwo <1234> Date: Tue, 2 Jan 2024 15:24:14 +0300 Subject: [PATCH] my requests pagination + Sender only close sender request Sender, Receiver can do both jobs, sender & receiver. --- .../providers/api/all_requests_provider.dart | 25 ++++++++++++++++++- .../my_request/my_requests_page.dart | 13 +++++++--- .../device_transfer_details.dart | 2 +- .../requests/service_request_details.dart | 4 +++ 4 files changed, 39 insertions(+), 5 deletions(-) diff --git a/lib/controllers/providers/api/all_requests_provider.dart b/lib/controllers/providers/api/all_requests_provider.dart index 5fd9c2a2..13c6611c 100644 --- a/lib/controllers/providers/api/all_requests_provider.dart +++ b/lib/controllers/providers/api/all_requests_provider.dart @@ -28,6 +28,18 @@ class AllRequestsProvider extends ChangeNotifier { AllRequestsAndCount highPriorityRequests; AllRequestsAndCount calendarRequests; + final pageItemNumber = 10; + int pageNum=1; + bool nextPage = true; + + void reset() { + allRequestsAndCount?.requestsDetails?.clear(); + allRequestsAndCount = null; + pageNum=1; + nextPage = true; + stateCode = null; + } + void getRequests() { getHighPriorityRequests(); getOverdueRequests(); @@ -53,6 +65,8 @@ class AllRequestsProvider extends ChangeNotifier { "statusTransaction": status, "priority": [0, 1], "displayData": [], + "pageNumber" : pageNum++, + "pageSize" : pageItemNumber, if (search?.requestNumber?.value?.isNotEmpty ?? false) "requestNumber": search.requestNumber.value, if (search?.assetName?.value?.isNotEmpty ?? false) "assetName": search.assetName.value, if (search?.assetNo?.value?.isNotEmpty ?? false) "assetNumber": search.assetNo.value, @@ -66,7 +80,16 @@ class AllRequestsProvider extends ChangeNotifier { stateCode = response.statusCode; if (response.statusCode >= 200 && response.statusCode < 300) { - allRequestsAndCount = AllRequestsAndCount.fromJson(json.decode(response.body)["data"][0]); + if (allRequestsAndCount == null) { + allRequestsAndCount = AllRequestsAndCount.fromJson(json.decode(response.body)["data"][0]); + } else{ + allRequestsAndCount.requestsDetails.addAll(AllRequestsAndCount.fromJson(json.decode(response.body)["data"][0]).requestsDetails); + } + if (allRequestsAndCount.requestsDetails.length >= pageItemNumber) { + nextPage = true; + } else { + nextPage = false; + } notifyListeners(); } else { allRequestsAndCount = null; diff --git a/lib/new_views/pages/land_page/my_request/my_requests_page.dart b/lib/new_views/pages/land_page/my_request/my_requests_page.dart index 82a29932..b8f05348 100644 --- a/lib/new_views/pages/land_page/my_request/my_requests_page.dart +++ b/lib/new_views/pages/land_page/my_request/my_requests_page.dart @@ -10,6 +10,7 @@ import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/pages/land_page/my_request/all_requests_filter_page.dart'; import 'package:test_sa/new_views/pages/land_page/my_request/all_requests_search_page.dart'; import 'package:test_sa/new_views/pages/land_page/widgets/request_item_view_list.dart'; +import 'package:test_sa/views/widgets/loaders/lazy_loading.dart'; class MyRequestsPage extends StatefulWidget { const MyRequestsPage({Key key}) : super(key: key); @@ -23,7 +24,7 @@ class _MyRequestsPageState extends State { SearchAllRequestsModel _search; List requestsList; - int selectedRequest; + int selectedRequest=0; @override Widget build(BuildContext context) { @@ -35,7 +36,6 @@ class _MyRequestsPageState extends State { context.translation.deviceTransferRequest, context.translation.preventiveMaintenance, ]; - selectedRequest = 0; _provider = Provider.of(context, listen: false); _provider.getAllRequests(context); } @@ -122,6 +122,7 @@ class _MyRequestsPageState extends State { setState(() { selectedRequest = index; }); + _provider.reset(); _provider.getAllRequests(context, typeTransaction: selectedRequest == 0 ? null : selectedRequest); } }), @@ -129,7 +130,13 @@ class _MyRequestsPageState extends State { itemCount: requestsList.length), ), Consumer(builder: (context, snapshot, _) { - return RequestItemViewList(snapshot.allRequestsAndCount?.requestsDetails ?? [], snapshot.isAllLoading); + return LazyLoading( + child: RequestItemViewList(snapshot.allRequestsAndCount?.requestsDetails ?? [], snapshot.isAllLoading), + nextPage: snapshot.nextPage, + onLazyLoad: (){ + print(selectedRequest); + snapshot.getAllRequests(context, typeTransaction: selectedRequest == 0 ? null : selectedRequest);}, + ); }).expanded, ], )); diff --git a/lib/views/pages/device_transfer/device_transfer_details.dart b/lib/views/pages/device_transfer/device_transfer_details.dart index 40c0b3dc..ff91db62 100644 --- a/lib/views/pages/device_transfer/device_transfer_details.dart +++ b/lib/views/pages/device_transfer/device_transfer_details.dart @@ -185,7 +185,7 @@ class _DeviceTransferDetailsState extends State { if ((_userProvider.user?.type == UsersTypes.engineer)) if (isSender ? (!(_model?.senderMachineStatusName?.toLowerCase()?.contains("close") ?? false) && !(_model?.senderMachineStatusName?.toLowerCase()?.contains("complete") ?? false)) - : (!(_model?.receiverMachineStatusName?.toLowerCase()?.contains("close") ?? false) && !(_model?.receiverMachineStatusName?.toLowerCase()?.contains("complete") ?? false))) + : ((!(_model?.receiverMachineStatusName?.toLowerCase()?.contains("close") ?? false) && !(_model?.receiverMachineStatusName?.toLowerCase()?.contains("complete") ?? false)) && (_userProvider.user?.username == _model.receiverAssignedEmployeeName))) "edit".toSvgAsset(height: 48, width: 48).onPress(() { Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model, isSender: isSender))); }), diff --git a/lib/views/pages/user/requests/service_request_details.dart b/lib/views/pages/user/requests/service_request_details.dart index 3b7f8e99..fc2a026f 100644 --- a/lib/views/pages/user/requests/service_request_details.dart +++ b/lib/views/pages/user/requests/service_request_details.dart @@ -100,6 +100,10 @@ class _ServiceRequestDetailsPageState extends State { '${context.translation.requestNo}: ${serviceRequest.requestCode}', style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), ), + // Text( + // '${context.translation.visitDate}: ${serviceRequest.visitDate}', + // style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), + // ), ], ).expanded, Column(