From 7b6f7d6dbd310f8978c7b6407ba1e422c0bf00eb Mon Sep 17 00:00:00 2001 From: amirrezaghabeli Date: Wed, 3 Sep 2025 09:19:39 +0330 Subject: [PATCH] your tenders apprvals filter --- lib/view_models/your_tenders_view_model.dart | 29 +++++++++++++++++++ .../pages/your_tenders_mobile_page.dart | 22 +++++++++++++- .../your_tenders/widgets/tender_card.dart | 3 +- .../widgets/tenders_filter_dialog.dart | 13 +-------- 4 files changed, 53 insertions(+), 14 deletions(-) diff --git a/lib/view_models/your_tenders_view_model.dart b/lib/view_models/your_tenders_view_model.dart index a92d0e8..e381234 100644 --- a/lib/view_models/your_tenders_view_model.dart +++ b/lib/view_models/your_tenders_view_model.dart @@ -27,6 +27,16 @@ class YourTendersViewModel with ChangeNotifier { ? _fmt.format(selectedDateRange!.end) : 'YYYY/MM/DD'; + int get startDateUnix => + selectedDateRange?.start != null + ? selectedDateRange!.start.millisecondsSinceEpoch ~/ 1000 + : 0; + + int get endDateUnix => + selectedDateRange?.end != null + ? selectedDateRange!.end.millisecondsSinceEpoch ~/ 1000 + : 0; + Future getApprovedTenders() async { isLoading = true; notifyListeners(); @@ -86,4 +96,23 @@ class YourTendersViewModel with ChangeNotifier { selectedStatus = status; notifyListeners(); } + + void clearFilter() { + selectedDateRange = null; + selectedStatus = 'All'; + notifyListeners(); + } + + Future callWithFilter() async { + if (selectedStatus == 'All') { + await getTenders( + limit: 10, + offset: 0, + createdFrom: startDateUnix.toString(), + createdTo: endDateUnix.toString(), + ); + } else if (selectedStatus == 'Tenders submitted') { + await getApprovedTenders(); + } + } } diff --git a/lib/views/your_tenders/pages/your_tenders_mobile_page.dart b/lib/views/your_tenders/pages/your_tenders_mobile_page.dart index 858f193..9395b56 100644 --- a/lib/views/your_tenders/pages/your_tenders_mobile_page.dart +++ b/lib/views/your_tenders/pages/your_tenders_mobile_page.dart @@ -7,9 +7,29 @@ import 'package:tm_app/views/your_tenders/strings/your_tenders_strings.dart'; import 'package:tm_app/views/your_tenders/widgets/filter_button.dart'; import 'package:tm_app/views/your_tenders/widgets/tenders_submitted.dart'; -class YourTendersMobilePage extends StatelessWidget { +class YourTendersMobilePage extends StatefulWidget { const YourTendersMobilePage({super.key}); + @override + State createState() => _YourTendersMobilePageState(); +} + +class _YourTendersMobilePageState extends State { + late final YourTendersViewModel viewModel; + @override + void initState() { + viewModel = context.read(); + super.initState(); + } + + @override + void dispose() { + WidgetsBinding.instance.addPostFrameCallback((_) { + viewModel.clearFilter(); + }); + super.dispose(); + } + @override Widget build(BuildContext context) { return Scaffold( diff --git a/lib/views/your_tenders/widgets/tender_card.dart b/lib/views/your_tenders/widgets/tender_card.dart index c8dee35..8beade1 100644 --- a/lib/views/your_tenders/widgets/tender_card.dart +++ b/lib/views/your_tenders/widgets/tender_card.dart @@ -1,6 +1,7 @@ import 'package:country_flags/country_flags.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; +import 'package:tm_app/core/utils/date_utils.dart'; import '../../../core/constants/assets.dart'; import '../../../core/theme/colors.dart'; @@ -63,7 +64,7 @@ class TenderCard extends StatelessWidget { children: [ // Date Text( - date, + unixToDate(int.parse(date)), style: TextStyle( color: AppColors.grey60, fontSize: 12.0.sp(), diff --git a/lib/views/your_tenders/widgets/tenders_filter_dialog.dart b/lib/views/your_tenders/widgets/tenders_filter_dialog.dart index 6005777..a0aa696 100644 --- a/lib/views/your_tenders/widgets/tenders_filter_dialog.dart +++ b/lib/views/your_tenders/widgets/tenders_filter_dialog.dart @@ -162,18 +162,7 @@ class TendersFilterDialog extends StatelessWidget { isEnabled: true, onPressed: () { context.pop(); - if (vm.selectedStatus == - YourTendersStrings.tendersSubmitted) { - vm.getApprovedTenders(); - } - if (vm.selectedStatus == YourTendersStrings.all) { - vm.getTenders( - limit: 10, - offset: 0, - createdFrom: vm.startDateFormatted, - createdTo: vm.endDateFormatted, - ); - } + vm.callWithFilter(); }, text: YourTendersStrings.confirm, textColor: AppColors.mainBlue,