Implement tender workflows and dashboard integration
continuous-integration/drone/push Build encountered an error

This commit is contained in:
AmirReza Jamali
2026-07-14 11:12:09 +03:30
parent ce170f9bc8
commit 72881df210
29 changed files with 1820 additions and 159 deletions
+33 -7
View File
@@ -4,6 +4,8 @@ import 'package:tm_app/data/services/model/recommended_tenders_response/recommen
import 'package:tm_app/data/services/model/tender_approvals_response/tender_approvals_response.dart';
import 'package:tm_app/data/services/model/tender_approvals_stats_response/tender_approvals_stats_response.dart';
import 'package:tm_app/data/services/model/tender_data/tender_data.dart';
import 'package:tm_app/data/services/model/feedback_stats_response/feedback_stat_response.dart';
import 'package:tm_app/data/services/model/tender_submission/tender_submission.dart';
import '../data/repositories/home_repository.dart';
import '../data/services/model/home/home_response/home_response_model.dart';
@@ -44,6 +46,7 @@ class HomeViewModel with ChangeNotifier {
RecommendedTendersResponse? _recommendedTendersResponse;
TenderApprovalsStatsResponse? tenderApprovalsStateResponse;
TenderSubmissionStats? tenderSubmissionStats;
int userLikedTendersCount = 0;
final List<TenderData> _tenders = [];
final int _pageSize = 10;
@@ -71,11 +74,15 @@ class HomeViewModel with ChangeNotifier {
_isRecommendedMode = false;
data = null;
tenderApprovalsStateResponse = null;
tenderSubmissionStats = null;
notifyListeners();
await getApprovedStates();
await getYourTenders(reset: true);
await loadUserLikedTendersCount();
await Future.wait([
getApprovedStates(),
getYourTenders(reset: true),
loadUserLikedTendersCount(),
loadSubmissionStats(),
]);
if (_errorMessage != null) {
_isLoading = false;
@@ -199,19 +206,38 @@ class HomeViewModel with ChangeNotifier {
}
Future<void> loadUserLikedTendersCount() async {
final result = await _homeRepository.getUserLikedTendersCount();
final result = await _homeRepository.getCustomerFeedbackStats();
switch (result) {
case Ok<int>():
userLikedTendersCount = result.value;
case Ok<FeedbackStatResponse>():
userLikedTendersCount = result.value.data?.totalLikes ?? 0;
break;
case Error<int>():
case Error<FeedbackStatResponse>():
userLikedTendersCount = 0;
break;
}
notifyListeners();
}
Future<void> loadSubmissionStats() async {
final result = await _homeRepository.getSubmissionStats();
switch (result) {
case Ok<TenderSubmissionStatsResponse>():
tenderSubmissionStats = result.value.data;
break;
case Error<TenderSubmissionStatsResponse>():
tenderSubmissionStats = null;
break;
}
notifyListeners();
}
int get approvedTendersCount =>
tenderApprovalsStateResponse?.data?.submittedTenders ?? 0;
int get submittedTendersCount =>
tenderSubmissionStats?.byStage['submitted'] ?? 0;
double get partnershipCount {
return tenderApprovalsStateResponse?.data?.partnershipCount?.toDouble() ??
0.0;