removed hardcoded status feedback and submission mode

This commit is contained in:
amirrezaghabeli
2025-09-08 12:22:08 +03:30
parent 65822036c8
commit f6da74f739
25 changed files with 228 additions and 113 deletions
+21 -12
View File
@@ -7,6 +7,7 @@ import 'package:tm_app/data/services/model/liked_tenders_response/liked_tenders_
import 'package:tm_app/data/services/model/tender_approvals_toggle_response/tender_approvals_toggle_response.dart';
import 'package:tm_app/view_models/home_view_model.dart';
import '../core/constants/tender_approval_status.dart';
import '../data/services/model/feedback_response/feedback_response.dart';
import '../data/services/model/request_models/tender_feedback_request_model/tender_feedback_request_model.dart';
import '../data/services/model/tender_approvals_by_id_response/tender_approvals_by_id_response.dart';
@@ -245,12 +246,14 @@ class LikedTendersViewModel with ChangeNotifier {
/// Check if tender is submitted
bool isTenderSubmitted(String tenderId) {
return getApprovalStatusForTenderId(tenderId) == 'submitted';
return getApprovalStatusForTenderId(tenderId) ==
TenderApprovalStatus.submitted.value;
}
/// Check if tender is rejected
bool isTenderRejected(String tenderId) {
return getApprovalStatusForTenderId(tenderId) == 'rejected';
return getApprovalStatusForTenderId(tenderId) ==
TenderApprovalStatus.rejected.value;
}
Future<void> submitTenderApproval({
@@ -268,12 +271,15 @@ class LikedTendersViewModel with ChangeNotifier {
final existingApproval = getApprovalStatusForTender(tenderId);
if (existingApproval != null) {
if (existingApproval.status == 'submitted') {
if (existingApproval.status == TenderApprovalStatus.submitted.value) {
// Remove from list if already submitted
tenderApprovals.removeWhere((a) => a.tenderId == tenderId);
} else if (existingApproval.status == 'rejected') {
} else if (existingApproval.status ==
TenderApprovalStatus.rejected.value) {
// Change rejected to submitted
final updatedApproval = existingApproval.copyWith(status: 'submitted');
final updatedApproval = existingApproval.copyWith(
status: TenderApprovalStatus.submitted.value,
);
final index = tenderApprovals.indexWhere((a) => a.tenderId == tenderId);
if (index != -1) {
tenderApprovals[index] = updatedApproval;
@@ -283,7 +289,7 @@ class LikedTendersViewModel with ChangeNotifier {
// Add new approval with submitted status
final newApproval = TenderApprovalsData(
id: null,
status: 'submitted',
status: TenderApprovalStatus.submitted.value,
tenderId: tenderId,
companyId: null,
submissionMode: submissionMode,
@@ -298,7 +304,7 @@ class LikedTendersViewModel with ChangeNotifier {
// Make server request
final result = await _tendersRepository.toggleApprovals(
tenderId: tenderId,
status: 'submitted',
status: TenderApprovalStatus.submitted.value,
submissionMode: submissionMode,
);
@@ -334,12 +340,15 @@ class LikedTendersViewModel with ChangeNotifier {
final existingApproval = getApprovalStatusForTender(tenderId);
if (existingApproval != null) {
if (existingApproval.status == 'rejected') {
if (existingApproval.status == TenderApprovalStatus.rejected.value) {
// Remove from list if already rejected
tenderApprovals.removeWhere((a) => a.tenderId == tenderId);
} else if (existingApproval.status == 'submitted') {
} else if (existingApproval.status ==
TenderApprovalStatus.submitted.value) {
// Change submitted to rejected
final updatedApproval = existingApproval.copyWith(status: 'rejected');
final updatedApproval = existingApproval.copyWith(
status: TenderApprovalStatus.rejected.value,
);
final index = tenderApprovals.indexWhere((a) => a.tenderId == tenderId);
if (index != -1) {
tenderApprovals[index] = updatedApproval;
@@ -349,7 +358,7 @@ class LikedTendersViewModel with ChangeNotifier {
// Add new approval with rejected status
final newApproval = TenderApprovalsData(
id: null,
status: 'rejected',
status: TenderApprovalStatus.rejected.value,
tenderId: tenderId,
companyId: null,
submissionMode: submissionMode,
@@ -364,7 +373,7 @@ class LikedTendersViewModel with ChangeNotifier {
// Make server request
final result = await _tendersRepository.toggleApprovals(
tenderId: tenderId,
status: 'rejected',
status: TenderApprovalStatus.rejected.value,
submissionMode: submissionMode,
);
@@ -5,6 +5,7 @@ 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 '../core/constants/tender_approval_status.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';
@@ -73,7 +74,7 @@ class TenderDetailViewModel with ChangeNotifier {
notifyListeners();
final result = await _tendersRepository.toggleApprovals(
tenderId: tenderId,
status: 'submitted',
status: TenderApprovalStatus.submitted.value,
submissionMode: submissionMode,
);
switch (result) {
@@ -102,7 +103,7 @@ class TenderDetailViewModel with ChangeNotifier {
notifyListeners();
final result = await _tendersRepository.toggleApprovals(
tenderId: tenderId,
status: 'rejected',
status: TenderApprovalStatus.rejected.value,
submissionMode: submissionMode,
);
switch (result) {
+5 -1
View File
@@ -8,6 +8,7 @@ import 'package:tm_app/data/services/model/tender_approvals_toggle_data/tender_a
import 'package:tm_app/data/services/model/tender_approvals_toggle_response/tender_approvals_toggle_response.dart';
import 'package:tm_app/data/services/model/tenders/tenders_response/tenders_response.dart';
import '../core/constants/tender_submision_mode.dart';
import '../core/utils/result.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';
@@ -420,7 +421,10 @@ class TendersViewModel with ChangeNotifier {
status: _tenderApprovalToggleData!.status!,
tenderId: _tenderApprovalToggleData!.tenderId,
companyId: _tenderApprovalToggleData!.companyId,
submissionMode: _tenderApprovalToggleData!.submissionMode,
submissionMode:
(_tenderApprovalToggleData!.submissionMode?.isNotEmpty == true)
? _tenderApprovalToggleData!.submissionMode
: TenderSubmissionMode.selfApply.value,
createdAt: _tenderApprovalToggleData!.createdAt,
tender: null, // Tender data is not included in toggle response
);
+12 -4
View File
@@ -6,6 +6,8 @@ import 'package:tm_app/data/services/model/liked_tenders_response/liked_tenders_
import 'package:tm_app/data/services/model/tender_approvals_response/tender_approvals_response.dart';
import 'package:tm_app/views/your_tenders/strings/your_tenders_strings.dart';
import '../core/constants/tender_approval_status.dart';
import '../core/constants/tender_feedback.dart';
import '../data/services/model/request_models/get_tenders_request_model/get_tenders_request_model.dart';
import '../data/services/model/request_models/tender_feedback_request_model/tender_feedback_request_model.dart';
@@ -201,7 +203,7 @@ class YourTendersViewModel with ChangeNotifier {
await getTenders(requestModel: requestModel);
} else if (selectedStatus == YourTendersStrings.tendersSubmitted) {
final requestModel = GetTendersRequestModel(
status: 'submitted',
status: TenderApprovalStatus.submitted.value,
createdFrom: startDateUnix,
createdTo: endDateUnix,
limit: _tendersLimit,
@@ -272,7 +274,7 @@ class YourTendersViewModel with ChangeNotifier {
await getTenders(requestModel: requestModel, reset: true);
} else if (selectedStatus == YourTendersStrings.tendersSubmitted) {
final requestModel = GetTendersRequestModel(
status: 'submitted',
status: TenderApprovalStatus.submitted.value,
createdFrom: startDateUnix,
createdTo: endDateUnix,
limit: _tendersLimit,
@@ -280,9 +282,15 @@ class YourTendersViewModel with ChangeNotifier {
);
await getTenders(requestModel: requestModel, reset: true);
} else if (selectedStatus == YourTendersStrings.likeTenders) {
await getTendersFeedback(feedbackType: 'like', reset: true);
await getTendersFeedback(
feedbackType: TenderFeedback.liked.value,
reset: true,
);
} else if (selectedStatus == YourTendersStrings.dislikeTenders) {
await getTendersFeedback(feedbackType: 'dislike', reset: true);
await getTendersFeedback(
feedbackType: TenderFeedback.disliked.value,
reset: true,
);
}
}
}