get liked list approvals

This commit is contained in:
amirrezaghabeli
2025-09-05 12:59:01 +03:30
parent 7ed240b8df
commit 9398c83b8e
9 changed files with 195 additions and 13 deletions
@@ -6,6 +6,8 @@ import 'package:tm_app/data/services/model/liked_tender_feedback/liked_tender_fe
import 'package:tm_app/data/services/model/liked_tenders_response/liked_tenders_response.dart';
import '../data/services/model/feedback_response/feedback_response.dart';
import '../data/services/model/tender_approvals_by_id_response/tender_approvals_by_id_response.dart';
import '../data/services/model/tender_approvals_data/tender_approvals_data.dart';
class LikedTendersViewModel with ChangeNotifier {
final LikedTendersRepository _likedTendersRepository;
@@ -21,6 +23,11 @@ class LikedTendersViewModel with ChangeNotifier {
bool hasMore = true;
String? errorMessage;
LikedTendersResponse? data;
TenderApprovalsData? _tenderApprovalData;
TenderApprovalsData? get tenderApprovalData => _tenderApprovalData;
List<TenderApprovalsData> tenderApprovals = [];
int _offset = 0;
final int _limit = 7;
@@ -60,6 +67,10 @@ class LikedTendersViewModel with ChangeNotifier {
final incoming = result.value;
final incomingList = incoming.data?.feedback ?? [];
for (var element in incomingList) {
await getTenderApproval(element.tenderId!);
}
if (reset) {
data = incoming;
} else {
@@ -151,4 +162,98 @@ class LikedTendersViewModel with ChangeNotifier {
notifyListeners();
}
Future<void> getTenderApproval(String tenderId) async {
errorMessage = null;
notifyListeners();
final result = await _tendersRepository.getTenderApprovals(
tenderId: tenderId,
);
switch (result) {
case Ok<TenderApprovalsByIdResponse>():
_tenderApprovalData = result.value.data;
tenderApprovals.add(_tenderApprovalData!);
break;
case Error<TenderApprovalsByIdResponse>():
errorMessage = result.error.toString();
break;
}
notifyListeners();
errorMessage = null;
notifyListeners();
}
TenderApprovalsData? getApprovalStatusForTender(String tenderId) {
try {
return tenderApprovals.firstWhere((a) => a.tenderId == tenderId);
} catch (e) {
return null;
}
}
/// Check if tender approval exists for a specific tender
bool hasTenderApprovalForTender(String tenderId) {
return tenderApprovals.any((a) => a.tenderId == tenderId);
}
// Future<void> submitTenderApproval({
// required String tenderId,
// required String submissionMode,
// }) async {
// errorMessage = null;
// notifyListeners();
// final result = await _tendersRepository.toggleApprovals(
// tenderId: tenderId,
// status: 'submitted',
// submissionMode: submissionMode,
// );
// switch (result) {
// case Ok<TenderApprovalsToggleResponse>():
// approvalStatus = true;
// _status = result.value.data?.status ?? '';
// break;
// case Error<TenderApprovalsToggleResponse>():
// _errorMessage = result.error.toString();
// approvalStatus = false;
// break;
// }
// _isSubmitApprovalLoading = false;
// notifyListeners();
// _errorMessage = null;
// approvalStatus = false;
// notifyListeners();
// }
// Future<void> rejectTenderApproval({
// required String tenderId,
// required String submissionMode,
// }) async {
// _isRejectApprovalLoading = true;
// _errorMessage = null;
// notifyListeners();
// final result = await _tendersRepository.toggleApprovals(
// tenderId: tenderId,
// status: 'rejected',
// submissionMode: submissionMode,
// );
// switch (result) {
// case Ok<TenderApprovalsToggleResponse>():
// approvalStatus = true;
// _status = result.value.data?.status ?? '';
// break;
// case Error<TenderApprovalsToggleResponse>():
// _errorMessage = result.error.toString();
// approvalStatus = false;
// break;
// }
// _isRejectApprovalLoading = false;
// notifyListeners();
// _errorMessage = null;
// approvalStatus = false;
// notifyListeners();
// }
}