Merge pull request 'your_tenders_changes' (#91) from your_tenders_changes into main

Reviewed-on: https://repo.ravanertebat.com/TM/tm_app/pulls/91
This commit is contained in:
a.ghabeli
2025-09-03 09:21:15 +03:30
9 changed files with 172 additions and 15 deletions
+65 -5
View File
@@ -6,9 +6,7 @@ import 'package:tm_app/data/services/model/tender_approvals_response/tender_appr
class YourTendersViewModel with ChangeNotifier {
final YourTendersRepository yourTendersRepository;
YourTendersViewModel({required this.yourTendersRepository}) {
getApprovedTenders();
}
YourTendersViewModel({required this.yourTendersRepository});
bool isLoading = false;
String? errorMessage;
@@ -20,10 +18,24 @@ class YourTendersViewModel with ChangeNotifier {
final _fmt = DateFormat('yyyy/MM/dd');
String get startDateFormatted =>
selectedDateRange?.start != null ? _fmt.format(selectedDateRange!.start) : 'YYYY/MM/DD';
selectedDateRange?.start != null
? _fmt.format(selectedDateRange!.start)
: 'YYYY/MM/DD';
String get endDateFormatted =>
selectedDateRange?.end != null ? _fmt.format(selectedDateRange!.end) : 'YYYY/MM/DD';
selectedDateRange?.end != null
? _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<void> getApprovedTenders() async {
isLoading = true;
@@ -45,6 +57,35 @@ class YourTendersViewModel with ChangeNotifier {
notifyListeners();
}
Future<void> getTenders({
required int limit,
required int offset,
required String createdFrom,
required String createdTo,
}) async {
isLoading = true;
notifyListeners();
final result = await yourTendersRepository.getTenders(
limit: limit,
offset: offset,
createdFrom: createdFrom,
createdTo: createdTo,
);
switch (result) {
case Ok<TenderApprovalsResponse>():
data = result.value;
errorMessage = null;
break;
case Error<TenderApprovalsResponse>():
errorMessage = result.error.toString();
break;
}
isLoading = false;
notifyListeners();
}
// --- Filter Actions ---
void setDateRange(DateTimeRange? range) {
selectedDateRange = range;
@@ -55,4 +96,23 @@ class YourTendersViewModel with ChangeNotifier {
selectedStatus = status;
notifyListeners();
}
void clearFilter() {
selectedDateRange = null;
selectedStatus = 'All';
notifyListeners();
}
Future<void> callWithFilter() async {
if (selectedStatus == 'All') {
await getTenders(
limit: 10,
offset: 0,
createdFrom: startDateUnix.toString(),
createdTo: endDateUnix.toString(),
);
} else if (selectedStatus == 'Tenders submitted') {
await getApprovedTenders();
}
}
}