Update iOS deployment target to 13.0, enhance Flutter integration, and improve tender submission flow
- Changed the iOS deployment target from 12.0 to 13.0 in Podfile and project settings. - Updated AppDelegate to support implicit Flutter engine initialization. - Modified Info.plist to include scene configuration for multiple scenes. - Enhanced CompletionOfDocumentsRouteData to accept a tenderId parameter. - Implemented tender submission functionality in TenderDetailViewModel and updated UI components to reflect loading states and success/error messages. - Added new strings for submission success and error notifications.
This commit is contained in:
@@ -6,6 +6,7 @@ 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 '../core/constants/tender_approval_status.dart';
|
||||
import '../core/constants/tender_submision_mode.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';
|
||||
import '../data/services/model/tender_approvals_toggle_response/tender_approvals_toggle_response.dart';
|
||||
@@ -143,4 +144,33 @@ class TenderDetailViewModel with ChangeNotifier {
|
||||
_errorMessage = null;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
/// Submits the tender for completion via the self-apply flow.
|
||||
/// POSTs to /api/v1/tender-approvals with status "submitted" and
|
||||
/// submission_mode "self-apply". Returns true on success.
|
||||
Future<bool> submitForCompletion({required String tenderId}) async {
|
||||
_isSubmitApprovalLoading = true;
|
||||
_errorMessage = null;
|
||||
notifyListeners();
|
||||
|
||||
bool success = false;
|
||||
final result = await _tendersRepository.toggleApprovals(
|
||||
tenderId: tenderId,
|
||||
status: TenderApprovalStatus.submitted.value,
|
||||
submissionMode: TenderSubmissionMode.selfApply.value,
|
||||
);
|
||||
switch (result) {
|
||||
case Ok<TenderApprovalsToggleResponse>():
|
||||
success = true;
|
||||
_status = result.value.data?.status ?? '';
|
||||
break;
|
||||
case Error<TenderApprovalsToggleResponse>():
|
||||
_errorMessage = result.error.toString();
|
||||
break;
|
||||
}
|
||||
|
||||
_isSubmitApprovalLoading = false;
|
||||
notifyListeners();
|
||||
return success;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -206,7 +206,9 @@ class YourTendersViewModel with ChangeNotifier {
|
||||
offset: _tendersOffset,
|
||||
);
|
||||
await getTenders(requestModel: requestModel);
|
||||
} else if (selectedStatus == YourTendersStrings.tendersSubmitted) {
|
||||
} else if (selectedStatus == YourTendersStrings.tendersSubmitted ||
|
||||
selectedStatus == TenderApprovalStatus.submitted.value ||
|
||||
selectedStatus == TenderApprovalStatus.approved.value) {
|
||||
final requestModel = GetTendersRequestModel(
|
||||
status: TenderApprovalStatus.submitted.value,
|
||||
createdFrom: startDateUnix,
|
||||
@@ -299,10 +301,17 @@ class YourTendersViewModel with ChangeNotifier {
|
||||
reset: true,
|
||||
);
|
||||
} else if (selectedStatus == TenderApprovalStatus.approved.value) {
|
||||
await getTendersFeedback(
|
||||
feedbackType: TenderApprovalStatus.approved.value,
|
||||
reset: true,
|
||||
// "Approved tenders" maps to submitted tender-approvals. The API has no
|
||||
// `approved` value; approved tenders are the ones a company has submitted
|
||||
// for pursuit (GET /api/v1/tender-approvals?status=submitted).
|
||||
final requestModel = GetTendersRequestModel(
|
||||
status: TenderApprovalStatus.submitted.value,
|
||||
createdFrom: startDateUnix,
|
||||
createdTo: endDateUnix,
|
||||
limit: _tendersLimit,
|
||||
offset: _tendersOffset,
|
||||
);
|
||||
await getTenders(requestModel: requestModel, reset: true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user