merge branches

This commit is contained in:
amirrezaghabeli
2025-08-20 13:11:22 +03:30
parent 1af9c0a76b
commit 4b51071aad
36 changed files with 1894 additions and 167 deletions
+65 -1
View File
@@ -1,21 +1,33 @@
import 'package:flutter/material.dart';
import 'package:tm_app/core/utils/result.dart';
import 'package:tm_app/data/repositories/tender_detail_repository.dart';
import 'package:tm_app/data/repositories/tenders_repository.dart';
import 'package:tm_app/data/services/model/tender_data/tender_data.dart';
import 'package:tm_app/data/services/model/tender_detail_response/tender_detail_response_model.dart';
import '../data/services/model/tender_approvals_toggle_response/tender_approvals_toggle_response.dart';
class TenderDetailViewModel with ChangeNotifier {
final TenderDetailRepository _tenderDetailRepository;
final TendersRepository _tendersRepository;
TenderDetailViewModel({
required TenderDetailRepository tenderDetailRepository,
}) : _tenderDetailRepository = tenderDetailRepository;
required TendersRepository tendersRepository,
}) : _tenderDetailRepository = tenderDetailRepository,
_tendersRepository = tendersRepository;
bool _isLoading = false;
bool _isSubmitApprovalLoading = false;
bool _isRejectApprovalLoading = false;
String? _errorMessage;
TenderData? _tenderDetail;
bool approvalStatus = false;
bool get isLoading => _isLoading;
bool get isSubmitApprovalLoading => _isSubmitApprovalLoading;
bool get isRejectApprovalLoading => _isRejectApprovalLoading;
String? get errorMessage => _errorMessage;
TenderData? get tenderDetail => _tenderDetail;
@@ -37,4 +49,56 @@ class TenderDetailViewModel with ChangeNotifier {
_isLoading = false;
notifyListeners();
}
Future<void> submitTenderApproval({
required String tenderId,
required String submissionMode,
}) async {
_isSubmitApprovalLoading = true;
notifyListeners();
final result = await _tendersRepository.toggleApprovals(
tenderId: tenderId,
status: 'approved',
submissionMode: submissionMode,
);
switch (result) {
case Ok<TenderApprovalsToggleResponse>():
approvalStatus = true;
break;
case Error<TenderApprovalsToggleResponse>():
_errorMessage = result.error.toString();
approvalStatus = false;
break;
}
_isSubmitApprovalLoading = false;
notifyListeners();
_errorMessage = null;
notifyListeners();
}
Future<void> rejectTenderApproval({
required String tenderId,
required String submissionMode,
}) async {
_isRejectApprovalLoading = true;
notifyListeners();
final result = await _tendersRepository.toggleApprovals(
tenderId: tenderId,
status: 'rejected',
submissionMode: submissionMode,
);
switch (result) {
case Ok<TenderApprovalsToggleResponse>():
approvalStatus = true;
break;
case Error<TenderApprovalsToggleResponse>():
_errorMessage = result.error.toString();
approvalStatus = false;
break;
}
_isRejectApprovalLoading = false;
notifyListeners();
_errorMessage = null;
notifyListeners();
}
}