removed hardcoded status feedback and submission mode
This commit is contained in:
@@ -0,0 +1,7 @@
|
|||||||
|
/// Barrel export for all status enums
|
||||||
|
library;
|
||||||
|
|
||||||
|
export 'tender_approval_status.dart';
|
||||||
|
export 'tender_approval_status_extension.dart';
|
||||||
|
export 'tender_feedback.dart';
|
||||||
|
export 'tender_feedback_extension.dart';
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
/// Enum for tender approval statuses
|
||||||
|
enum TenderApprovalStatus {
|
||||||
|
submitted,
|
||||||
|
rejected,
|
||||||
|
unsubmitted,
|
||||||
|
unrejected;
|
||||||
|
|
||||||
|
/// Convert enum to string value for API
|
||||||
|
String get value {
|
||||||
|
switch (this) {
|
||||||
|
case TenderApprovalStatus.submitted:
|
||||||
|
return 'submitted';
|
||||||
|
case TenderApprovalStatus.rejected:
|
||||||
|
return 'rejected';
|
||||||
|
case TenderApprovalStatus.unsubmitted:
|
||||||
|
return 'unsubmitted';
|
||||||
|
case TenderApprovalStatus.unrejected:
|
||||||
|
return 'unrejected';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
import 'tender_approval_status.dart';
|
||||||
|
|
||||||
|
/// Extension for parsing string to TenderApprovalStatus
|
||||||
|
extension TenderApprovalStatusExtension on String {
|
||||||
|
/// Parse string to TenderApprovalStatus
|
||||||
|
TenderApprovalStatus? toTenderApprovalStatus() {
|
||||||
|
switch (toLowerCase()) {
|
||||||
|
case 'submitted':
|
||||||
|
return TenderApprovalStatus.submitted;
|
||||||
|
case 'rejected':
|
||||||
|
return TenderApprovalStatus.rejected;
|
||||||
|
case 'unsubmitted':
|
||||||
|
return TenderApprovalStatus.unsubmitted;
|
||||||
|
case 'unrejected':
|
||||||
|
return TenderApprovalStatus.unrejected;
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
/// Enum for tender feedback
|
||||||
|
enum TenderFeedback {
|
||||||
|
liked,
|
||||||
|
disliked,
|
||||||
|
unliked,
|
||||||
|
undisliked;
|
||||||
|
|
||||||
|
/// Convert enum to string value for API
|
||||||
|
String get value {
|
||||||
|
switch (this) {
|
||||||
|
case TenderFeedback.liked:
|
||||||
|
return 'like';
|
||||||
|
case TenderFeedback.disliked:
|
||||||
|
return 'dislike';
|
||||||
|
case TenderFeedback.unliked:
|
||||||
|
return 'unlike';
|
||||||
|
case TenderFeedback.undisliked:
|
||||||
|
return 'undislike';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
import 'tender_feedback.dart';
|
||||||
|
|
||||||
|
/// Extension for parsing string to TenderFeedback
|
||||||
|
extension TenderFeedbackExtension on String {
|
||||||
|
/// Parse string to TenderFeedback
|
||||||
|
TenderFeedback? toTenderFeedback() {
|
||||||
|
switch (this) {
|
||||||
|
case 'like':
|
||||||
|
return TenderFeedback.liked;
|
||||||
|
case 'dislike':
|
||||||
|
return TenderFeedback.disliked;
|
||||||
|
case 'unlike':
|
||||||
|
return TenderFeedback.unliked;
|
||||||
|
case 'undislike':
|
||||||
|
return TenderFeedback.undisliked;
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
/// Enum for tender submission mode
|
||||||
|
enum TenderSubmissionMode {
|
||||||
|
selfApply,
|
||||||
|
partnership;
|
||||||
|
|
||||||
|
/// Convert enum to string value for API
|
||||||
|
String get value {
|
||||||
|
switch (this) {
|
||||||
|
case TenderSubmissionMode.selfApply:
|
||||||
|
return 'self-apply';
|
||||||
|
case TenderSubmissionMode.partnership:
|
||||||
|
return 'partnership';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
import 'tender_submision_mode.dart';
|
||||||
|
|
||||||
|
/// Extension for parsing string to TenderSubmissionMode
|
||||||
|
extension TenderSubmissionModeExtension on String {
|
||||||
|
/// Parse string to TenderSubmissionMode
|
||||||
|
TenderSubmissionMode? toTenderSubmissionMode() {
|
||||||
|
switch (this) {
|
||||||
|
case 'self-apply':
|
||||||
|
return TenderSubmissionMode.selfApply;
|
||||||
|
case 'partnership':
|
||||||
|
return TenderSubmissionMode.partnership;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,20 +16,6 @@ class YourTendersRepository {
|
|||||||
}) : _yourTendersService = yourTendersService,
|
}) : _yourTendersService = yourTendersService,
|
||||||
_likedTendersService = likedTendersService;
|
_likedTendersService = likedTendersService;
|
||||||
|
|
||||||
Future<Result<TenderApprovalsResponse>> getApprovedTenders({
|
|
||||||
required int limit,
|
|
||||||
required int offset,
|
|
||||||
required String createdFrom,
|
|
||||||
required String createdTo,
|
|
||||||
}) {
|
|
||||||
return _yourTendersService.getApprovedTenders(
|
|
||||||
limit: limit,
|
|
||||||
offset: offset,
|
|
||||||
createdFrom: createdFrom,
|
|
||||||
createdTo: createdTo,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<Result<TenderApprovalsResponse>> getTenders({
|
Future<Result<TenderApprovalsResponse>> getTenders({
|
||||||
required GetTendersRequestModel requestModel,
|
required GetTendersRequestModel requestModel,
|
||||||
}) {
|
}) {
|
||||||
|
|||||||
@@ -1,20 +1,4 @@
|
|||||||
class YourTendersApi {
|
class YourTendersApi {
|
||||||
static const String tenderApprovalsStatus =
|
|
||||||
'/api/v1/tender-approvals?status=submitted';
|
|
||||||
|
|
||||||
static String getTenderApprovalsStatus({
|
|
||||||
required int limit,
|
|
||||||
required int offset,
|
|
||||||
required String createdFrom,
|
|
||||||
required String createdTo,
|
|
||||||
}) {
|
|
||||||
if (createdFrom.isNotEmpty && createdTo.isNotEmpty) {
|
|
||||||
return '$tenderApprovalsStatus&created_from=$createdFrom&created_to=$createdTo';
|
|
||||||
}
|
|
||||||
return tenderApprovalsStatus;
|
|
||||||
}
|
|
||||||
// return '$tenderApprovalsStatus?limit=$limit&offset=$offset';
|
|
||||||
|
|
||||||
static const String tenderApproval = '/api/v1/tender-approvals';
|
static const String tenderApproval = '/api/v1/tender-approvals';
|
||||||
|
|
||||||
static String getTenders({
|
static String getTenders({
|
||||||
|
|||||||
@@ -11,26 +11,6 @@ class YourTendersService {
|
|||||||
|
|
||||||
final NetworkManager _networkManager;
|
final NetworkManager _networkManager;
|
||||||
|
|
||||||
Future<Result<TenderApprovalsResponse>> getApprovedTenders({
|
|
||||||
required int limit,
|
|
||||||
required int offset,
|
|
||||||
required String createdFrom,
|
|
||||||
required String createdTo,
|
|
||||||
}) async {
|
|
||||||
final result = await _networkManager.makeRequest(
|
|
||||||
YourTendersApi.getTenderApprovalsStatus(
|
|
||||||
limit: limit,
|
|
||||||
offset: offset,
|
|
||||||
createdFrom: createdFrom,
|
|
||||||
createdTo: createdTo,
|
|
||||||
),
|
|
||||||
(json) => TenderApprovalsResponse.fromJson(json),
|
|
||||||
method: 'GET',
|
|
||||||
);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<Result<TenderApprovalsResponse>> getTenders({
|
Future<Result<TenderApprovalsResponse>> getTenders({
|
||||||
required GetTendersRequestModel requestModel,
|
required GetTendersRequestModel requestModel,
|
||||||
}) async {
|
}) async {
|
||||||
|
|||||||
@@ -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/data/services/model/tender_approvals_toggle_response/tender_approvals_toggle_response.dart';
|
||||||
import 'package:tm_app/view_models/home_view_model.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/feedback_response/feedback_response.dart';
|
||||||
import '../data/services/model/request_models/tender_feedback_request_model/tender_feedback_request_model.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';
|
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
|
/// Check if tender is submitted
|
||||||
bool isTenderSubmitted(String tenderId) {
|
bool isTenderSubmitted(String tenderId) {
|
||||||
return getApprovalStatusForTenderId(tenderId) == 'submitted';
|
return getApprovalStatusForTenderId(tenderId) ==
|
||||||
|
TenderApprovalStatus.submitted.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Check if tender is rejected
|
/// Check if tender is rejected
|
||||||
bool isTenderRejected(String tenderId) {
|
bool isTenderRejected(String tenderId) {
|
||||||
return getApprovalStatusForTenderId(tenderId) == 'rejected';
|
return getApprovalStatusForTenderId(tenderId) ==
|
||||||
|
TenderApprovalStatus.rejected.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> submitTenderApproval({
|
Future<void> submitTenderApproval({
|
||||||
@@ -268,12 +271,15 @@ class LikedTendersViewModel with ChangeNotifier {
|
|||||||
final existingApproval = getApprovalStatusForTender(tenderId);
|
final existingApproval = getApprovalStatusForTender(tenderId);
|
||||||
|
|
||||||
if (existingApproval != null) {
|
if (existingApproval != null) {
|
||||||
if (existingApproval.status == 'submitted') {
|
if (existingApproval.status == TenderApprovalStatus.submitted.value) {
|
||||||
// Remove from list if already submitted
|
// Remove from list if already submitted
|
||||||
tenderApprovals.removeWhere((a) => a.tenderId == tenderId);
|
tenderApprovals.removeWhere((a) => a.tenderId == tenderId);
|
||||||
} else if (existingApproval.status == 'rejected') {
|
} else if (existingApproval.status ==
|
||||||
|
TenderApprovalStatus.rejected.value) {
|
||||||
// Change rejected to submitted
|
// 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);
|
final index = tenderApprovals.indexWhere((a) => a.tenderId == tenderId);
|
||||||
if (index != -1) {
|
if (index != -1) {
|
||||||
tenderApprovals[index] = updatedApproval;
|
tenderApprovals[index] = updatedApproval;
|
||||||
@@ -283,7 +289,7 @@ class LikedTendersViewModel with ChangeNotifier {
|
|||||||
// Add new approval with submitted status
|
// Add new approval with submitted status
|
||||||
final newApproval = TenderApprovalsData(
|
final newApproval = TenderApprovalsData(
|
||||||
id: null,
|
id: null,
|
||||||
status: 'submitted',
|
status: TenderApprovalStatus.submitted.value,
|
||||||
tenderId: tenderId,
|
tenderId: tenderId,
|
||||||
companyId: null,
|
companyId: null,
|
||||||
submissionMode: submissionMode,
|
submissionMode: submissionMode,
|
||||||
@@ -298,7 +304,7 @@ class LikedTendersViewModel with ChangeNotifier {
|
|||||||
// Make server request
|
// Make server request
|
||||||
final result = await _tendersRepository.toggleApprovals(
|
final result = await _tendersRepository.toggleApprovals(
|
||||||
tenderId: tenderId,
|
tenderId: tenderId,
|
||||||
status: 'submitted',
|
status: TenderApprovalStatus.submitted.value,
|
||||||
submissionMode: submissionMode,
|
submissionMode: submissionMode,
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -334,12 +340,15 @@ class LikedTendersViewModel with ChangeNotifier {
|
|||||||
final existingApproval = getApprovalStatusForTender(tenderId);
|
final existingApproval = getApprovalStatusForTender(tenderId);
|
||||||
|
|
||||||
if (existingApproval != null) {
|
if (existingApproval != null) {
|
||||||
if (existingApproval.status == 'rejected') {
|
if (existingApproval.status == TenderApprovalStatus.rejected.value) {
|
||||||
// Remove from list if already rejected
|
// Remove from list if already rejected
|
||||||
tenderApprovals.removeWhere((a) => a.tenderId == tenderId);
|
tenderApprovals.removeWhere((a) => a.tenderId == tenderId);
|
||||||
} else if (existingApproval.status == 'submitted') {
|
} else if (existingApproval.status ==
|
||||||
|
TenderApprovalStatus.submitted.value) {
|
||||||
// Change submitted to rejected
|
// 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);
|
final index = tenderApprovals.indexWhere((a) => a.tenderId == tenderId);
|
||||||
if (index != -1) {
|
if (index != -1) {
|
||||||
tenderApprovals[index] = updatedApproval;
|
tenderApprovals[index] = updatedApproval;
|
||||||
@@ -349,7 +358,7 @@ class LikedTendersViewModel with ChangeNotifier {
|
|||||||
// Add new approval with rejected status
|
// Add new approval with rejected status
|
||||||
final newApproval = TenderApprovalsData(
|
final newApproval = TenderApprovalsData(
|
||||||
id: null,
|
id: null,
|
||||||
status: 'rejected',
|
status: TenderApprovalStatus.rejected.value,
|
||||||
tenderId: tenderId,
|
tenderId: tenderId,
|
||||||
companyId: null,
|
companyId: null,
|
||||||
submissionMode: submissionMode,
|
submissionMode: submissionMode,
|
||||||
@@ -364,7 +373,7 @@ class LikedTendersViewModel with ChangeNotifier {
|
|||||||
// Make server request
|
// Make server request
|
||||||
final result = await _tendersRepository.toggleApprovals(
|
final result = await _tendersRepository.toggleApprovals(
|
||||||
tenderId: tenderId,
|
tenderId: tenderId,
|
||||||
status: 'rejected',
|
status: TenderApprovalStatus.rejected.value,
|
||||||
submissionMode: submissionMode,
|
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_data/tender_data.dart';
|
||||||
import 'package:tm_app/data/services/model/tender_detail_response/tender_detail_response_model.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_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_data/tender_approvals_data.dart';
|
||||||
import '../data/services/model/tender_approvals_toggle_response/tender_approvals_toggle_response.dart';
|
import '../data/services/model/tender_approvals_toggle_response/tender_approvals_toggle_response.dart';
|
||||||
@@ -73,7 +74,7 @@ class TenderDetailViewModel with ChangeNotifier {
|
|||||||
notifyListeners();
|
notifyListeners();
|
||||||
final result = await _tendersRepository.toggleApprovals(
|
final result = await _tendersRepository.toggleApprovals(
|
||||||
tenderId: tenderId,
|
tenderId: tenderId,
|
||||||
status: 'submitted',
|
status: TenderApprovalStatus.submitted.value,
|
||||||
submissionMode: submissionMode,
|
submissionMode: submissionMode,
|
||||||
);
|
);
|
||||||
switch (result) {
|
switch (result) {
|
||||||
@@ -102,7 +103,7 @@ class TenderDetailViewModel with ChangeNotifier {
|
|||||||
notifyListeners();
|
notifyListeners();
|
||||||
final result = await _tendersRepository.toggleApprovals(
|
final result = await _tendersRepository.toggleApprovals(
|
||||||
tenderId: tenderId,
|
tenderId: tenderId,
|
||||||
status: 'rejected',
|
status: TenderApprovalStatus.rejected.value,
|
||||||
submissionMode: submissionMode,
|
submissionMode: submissionMode,
|
||||||
);
|
);
|
||||||
switch (result) {
|
switch (result) {
|
||||||
|
|||||||
@@ -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/tender_approvals_toggle_response/tender_approvals_toggle_response.dart';
|
||||||
import 'package:tm_app/data/services/model/tenders/tenders_response/tenders_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 '../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_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_data/tender_approvals_data.dart';
|
||||||
@@ -420,7 +421,10 @@ class TendersViewModel with ChangeNotifier {
|
|||||||
status: _tenderApprovalToggleData!.status!,
|
status: _tenderApprovalToggleData!.status!,
|
||||||
tenderId: _tenderApprovalToggleData!.tenderId,
|
tenderId: _tenderApprovalToggleData!.tenderId,
|
||||||
companyId: _tenderApprovalToggleData!.companyId,
|
companyId: _tenderApprovalToggleData!.companyId,
|
||||||
submissionMode: _tenderApprovalToggleData!.submissionMode,
|
submissionMode:
|
||||||
|
(_tenderApprovalToggleData!.submissionMode?.isNotEmpty == true)
|
||||||
|
? _tenderApprovalToggleData!.submissionMode
|
||||||
|
: TenderSubmissionMode.selfApply.value,
|
||||||
createdAt: _tenderApprovalToggleData!.createdAt,
|
createdAt: _tenderApprovalToggleData!.createdAt,
|
||||||
tender: null, // Tender data is not included in toggle response
|
tender: null, // Tender data is not included in toggle response
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -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/data/services/model/tender_approvals_response/tender_approvals_response.dart';
|
||||||
import 'package:tm_app/views/your_tenders/strings/your_tenders_strings.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/get_tenders_request_model/get_tenders_request_model.dart';
|
||||||
import '../data/services/model/request_models/tender_feedback_request_model/tender_feedback_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);
|
await getTenders(requestModel: requestModel);
|
||||||
} else if (selectedStatus == YourTendersStrings.tendersSubmitted) {
|
} else if (selectedStatus == YourTendersStrings.tendersSubmitted) {
|
||||||
final requestModel = GetTendersRequestModel(
|
final requestModel = GetTendersRequestModel(
|
||||||
status: 'submitted',
|
status: TenderApprovalStatus.submitted.value,
|
||||||
createdFrom: startDateUnix,
|
createdFrom: startDateUnix,
|
||||||
createdTo: endDateUnix,
|
createdTo: endDateUnix,
|
||||||
limit: _tendersLimit,
|
limit: _tendersLimit,
|
||||||
@@ -272,7 +274,7 @@ class YourTendersViewModel with ChangeNotifier {
|
|||||||
await getTenders(requestModel: requestModel, reset: true);
|
await getTenders(requestModel: requestModel, reset: true);
|
||||||
} else if (selectedStatus == YourTendersStrings.tendersSubmitted) {
|
} else if (selectedStatus == YourTendersStrings.tendersSubmitted) {
|
||||||
final requestModel = GetTendersRequestModel(
|
final requestModel = GetTendersRequestModel(
|
||||||
status: 'submitted',
|
status: TenderApprovalStatus.submitted.value,
|
||||||
createdFrom: startDateUnix,
|
createdFrom: startDateUnix,
|
||||||
createdTo: endDateUnix,
|
createdTo: endDateUnix,
|
||||||
limit: _tendersLimit,
|
limit: _tendersLimit,
|
||||||
@@ -280,9 +282,15 @@ class YourTendersViewModel with ChangeNotifier {
|
|||||||
);
|
);
|
||||||
await getTenders(requestModel: requestModel, reset: true);
|
await getTenders(requestModel: requestModel, reset: true);
|
||||||
} else if (selectedStatus == YourTendersStrings.likeTenders) {
|
} else if (selectedStatus == YourTendersStrings.likeTenders) {
|
||||||
await getTendersFeedback(feedbackType: 'like', reset: true);
|
await getTendersFeedback(
|
||||||
|
feedbackType: TenderFeedback.liked.value,
|
||||||
|
reset: true,
|
||||||
|
);
|
||||||
} else if (selectedStatus == YourTendersStrings.dislikeTenders) {
|
} else if (selectedStatus == YourTendersStrings.dislikeTenders) {
|
||||||
await getTendersFeedback(feedbackType: 'dislike', reset: true);
|
await getTendersFeedback(
|
||||||
|
feedbackType: TenderFeedback.disliked.value,
|
||||||
|
reset: true,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import 'package:tm_app/views/detail/widgets/tender_detail_action.dart';
|
|||||||
import 'package:tm_app/views/detail/widgets/tender_detail_card.dart';
|
import 'package:tm_app/views/detail/widgets/tender_detail_card.dart';
|
||||||
import 'package:tm_app/views/detail/widgets/tender_detail_header.dart';
|
import 'package:tm_app/views/detail/widgets/tender_detail_header.dart';
|
||||||
|
|
||||||
|
import '../../../core/constants/tender_approval_status.dart';
|
||||||
import '../../../core/utils/app_toast.dart';
|
import '../../../core/utils/app_toast.dart';
|
||||||
import '../../shared/desktop_navigation_widget.dart';
|
import '../../shared/desktop_navigation_widget.dart';
|
||||||
import '../strings/tender_details_strings.dart';
|
import '../strings/tender_details_strings.dart';
|
||||||
@@ -31,7 +32,7 @@ class _TenderDetailDesktopPageState extends State<TenderDetailDesktopPage> {
|
|||||||
|
|
||||||
void _viewModelListener() {
|
void _viewModelListener() {
|
||||||
if (viewModel.status.isNotEmpty &&
|
if (viewModel.status.isNotEmpty &&
|
||||||
viewModel.status == 'submitted' &&
|
viewModel.status == TenderApprovalStatus.submitted.value &&
|
||||||
viewModel.approvalStatus == true) {
|
viewModel.approvalStatus == true) {
|
||||||
AppToast.success(
|
AppToast.success(
|
||||||
context,
|
context,
|
||||||
@@ -39,7 +40,7 @@ class _TenderDetailDesktopPageState extends State<TenderDetailDesktopPage> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (viewModel.status.isNotEmpty &&
|
if (viewModel.status.isNotEmpty &&
|
||||||
viewModel.status == 'unsubmitted' &&
|
viewModel.status == TenderApprovalStatus.unsubmitted.value &&
|
||||||
viewModel.approvalStatus == true) {
|
viewModel.approvalStatus == true) {
|
||||||
AppToast.success(
|
AppToast.success(
|
||||||
context,
|
context,
|
||||||
@@ -47,7 +48,7 @@ class _TenderDetailDesktopPageState extends State<TenderDetailDesktopPage> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (viewModel.status.isNotEmpty &&
|
if (viewModel.status.isNotEmpty &&
|
||||||
viewModel.status == 'rejected' &&
|
viewModel.status == TenderApprovalStatus.rejected.value &&
|
||||||
viewModel.approvalStatus == true) {
|
viewModel.approvalStatus == true) {
|
||||||
AppToast.success(
|
AppToast.success(
|
||||||
context,
|
context,
|
||||||
@@ -55,7 +56,7 @@ class _TenderDetailDesktopPageState extends State<TenderDetailDesktopPage> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (viewModel.status.isNotEmpty &&
|
if (viewModel.status.isNotEmpty &&
|
||||||
viewModel.status == 'unrejected' &&
|
viewModel.status == TenderApprovalStatus.unrejected.value &&
|
||||||
viewModel.approvalStatus == true) {
|
viewModel.approvalStatus == true) {
|
||||||
AppToast.success(
|
AppToast.success(
|
||||||
context,
|
context,
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import 'package:tm_app/views/detail/widgets/tender_detail_card.dart';
|
|||||||
import 'package:tm_app/views/detail/widgets/tender_detail_header.dart';
|
import 'package:tm_app/views/detail/widgets/tender_detail_header.dart';
|
||||||
import 'package:tm_app/views/shared/tender_app_bar.dart';
|
import 'package:tm_app/views/shared/tender_app_bar.dart';
|
||||||
|
|
||||||
|
import '../../../core/constants/tender_approval_status.dart';
|
||||||
import '../../../core/utils/app_toast.dart';
|
import '../../../core/utils/app_toast.dart';
|
||||||
|
|
||||||
class TenderDetailMobilePage extends StatefulWidget {
|
class TenderDetailMobilePage extends StatefulWidget {
|
||||||
@@ -31,7 +32,7 @@ class _TenderDetailMobilePageState extends State<TenderDetailMobilePage> {
|
|||||||
|
|
||||||
void _viewModelListener() {
|
void _viewModelListener() {
|
||||||
if (viewModel.status.isNotEmpty &&
|
if (viewModel.status.isNotEmpty &&
|
||||||
viewModel.status == 'submitted' &&
|
viewModel.status == TenderApprovalStatus.submitted.value &&
|
||||||
viewModel.approvalStatus == true) {
|
viewModel.approvalStatus == true) {
|
||||||
AppToast.success(
|
AppToast.success(
|
||||||
context,
|
context,
|
||||||
@@ -39,7 +40,7 @@ class _TenderDetailMobilePageState extends State<TenderDetailMobilePage> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (viewModel.status.isNotEmpty &&
|
if (viewModel.status.isNotEmpty &&
|
||||||
viewModel.status == 'unsubmitted' &&
|
viewModel.status == TenderApprovalStatus.unsubmitted.value &&
|
||||||
viewModel.approvalStatus == true) {
|
viewModel.approvalStatus == true) {
|
||||||
AppToast.success(
|
AppToast.success(
|
||||||
context,
|
context,
|
||||||
@@ -47,7 +48,7 @@ class _TenderDetailMobilePageState extends State<TenderDetailMobilePage> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (viewModel.status.isNotEmpty &&
|
if (viewModel.status.isNotEmpty &&
|
||||||
viewModel.status == 'rejected' &&
|
viewModel.status == TenderApprovalStatus.rejected.value &&
|
||||||
viewModel.approvalStatus == true) {
|
viewModel.approvalStatus == true) {
|
||||||
AppToast.success(
|
AppToast.success(
|
||||||
context,
|
context,
|
||||||
@@ -55,7 +56,7 @@ class _TenderDetailMobilePageState extends State<TenderDetailMobilePage> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (viewModel.status.isNotEmpty &&
|
if (viewModel.status.isNotEmpty &&
|
||||||
viewModel.status == 'unrejected' &&
|
viewModel.status == TenderApprovalStatus.unrejected.value &&
|
||||||
viewModel.approvalStatus == true) {
|
viewModel.approvalStatus == true) {
|
||||||
AppToast.success(
|
AppToast.success(
|
||||||
context,
|
context,
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import 'package:tm_app/views/detail/widgets/tender_detail_card.dart';
|
|||||||
import 'package:tm_app/views/detail/widgets/tender_detail_header.dart';
|
import 'package:tm_app/views/detail/widgets/tender_detail_header.dart';
|
||||||
import 'package:tm_app/views/shared/tablet_navigation_widget.dart';
|
import 'package:tm_app/views/shared/tablet_navigation_widget.dart';
|
||||||
|
|
||||||
|
import '../../../core/constants/tender_approval_status.dart';
|
||||||
import '../../../core/utils/app_toast.dart';
|
import '../../../core/utils/app_toast.dart';
|
||||||
import '../../shared/tender_app_bar.dart';
|
import '../../shared/tender_app_bar.dart';
|
||||||
import '../strings/tender_details_strings.dart';
|
import '../strings/tender_details_strings.dart';
|
||||||
@@ -32,7 +33,7 @@ class _TenderDetailTabletPageState extends State<TenderDetailTabletPage> {
|
|||||||
|
|
||||||
void _viewModelListener() {
|
void _viewModelListener() {
|
||||||
if (viewModel.status.isNotEmpty &&
|
if (viewModel.status.isNotEmpty &&
|
||||||
viewModel.status == 'submitted' &&
|
viewModel.status == TenderApprovalStatus.submitted.value &&
|
||||||
viewModel.approvalStatus == true) {
|
viewModel.approvalStatus == true) {
|
||||||
AppToast.success(
|
AppToast.success(
|
||||||
context,
|
context,
|
||||||
@@ -40,7 +41,7 @@ class _TenderDetailTabletPageState extends State<TenderDetailTabletPage> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (viewModel.status.isNotEmpty &&
|
if (viewModel.status.isNotEmpty &&
|
||||||
viewModel.status == 'unsubmitted' &&
|
viewModel.status == TenderApprovalStatus.unsubmitted.value &&
|
||||||
viewModel.approvalStatus == true) {
|
viewModel.approvalStatus == true) {
|
||||||
AppToast.success(
|
AppToast.success(
|
||||||
context,
|
context,
|
||||||
@@ -48,7 +49,7 @@ class _TenderDetailTabletPageState extends State<TenderDetailTabletPage> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (viewModel.status.isNotEmpty &&
|
if (viewModel.status.isNotEmpty &&
|
||||||
viewModel.status == 'rejected' &&
|
viewModel.status == TenderApprovalStatus.rejected.value &&
|
||||||
viewModel.approvalStatus == true) {
|
viewModel.approvalStatus == true) {
|
||||||
AppToast.success(
|
AppToast.success(
|
||||||
context,
|
context,
|
||||||
@@ -56,7 +57,7 @@ class _TenderDetailTabletPageState extends State<TenderDetailTabletPage> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (viewModel.status.isNotEmpty &&
|
if (viewModel.status.isNotEmpty &&
|
||||||
viewModel.status == 'unrejected' &&
|
viewModel.status == TenderApprovalStatus.unrejected.value &&
|
||||||
viewModel.approvalStatus == true) {
|
viewModel.approvalStatus == true) {
|
||||||
AppToast.success(
|
AppToast.success(
|
||||||
context,
|
context,
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import 'package:tm_app/view_models/tender_detail_view_model.dart';
|
|||||||
import 'package:tm_app/views/shared/base_button.dart';
|
import 'package:tm_app/views/shared/base_button.dart';
|
||||||
import 'package:tm_app/views/shared/select_submission_bottom_sheet.dart';
|
import 'package:tm_app/views/shared/select_submission_bottom_sheet.dart';
|
||||||
|
|
||||||
|
import '../../../core/constants/tender_approval_status.dart';
|
||||||
import '../../../data/services/model/tender_data/tender_data.dart';
|
import '../../../data/services/model/tender_data/tender_data.dart';
|
||||||
import '../../shared/select_submission_dialog.dart';
|
import '../../shared/select_submission_dialog.dart';
|
||||||
import '../strings/tender_details_strings.dart';
|
import '../strings/tender_details_strings.dart';
|
||||||
@@ -47,7 +48,8 @@ class TenderDetailActions extends StatelessWidget {
|
|||||||
backgroundColor: AppColors.primary30,
|
backgroundColor: AppColors.primary30,
|
||||||
textColor: AppColors.mainBlue,
|
textColor: AppColors.mainBlue,
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
if (viewModel.status == 'submitted') {
|
if (viewModel.status ==
|
||||||
|
TenderApprovalStatus.submitted.value) {
|
||||||
viewModel.submitTenderApproval(
|
viewModel.submitTenderApproval(
|
||||||
tenderId: detail.id!,
|
tenderId: detail.id!,
|
||||||
submissionMode: 'self-apply',
|
submissionMode: 'self-apply',
|
||||||
@@ -156,7 +158,8 @@ class TenderDetailActions extends StatelessWidget {
|
|||||||
backgroundColor: AppColors.lightBlue,
|
backgroundColor: AppColors.lightBlue,
|
||||||
textColor: AppColors.mainBlue,
|
textColor: AppColors.mainBlue,
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
if (viewModel.status == 'submitted') {
|
if (viewModel.status ==
|
||||||
|
TenderApprovalStatus.submitted.value) {
|
||||||
viewModel.submitTenderApproval(
|
viewModel.submitTenderApproval(
|
||||||
tenderId: detail.id!,
|
tenderId: detail.id!,
|
||||||
submissionMode: 'self-apply',
|
submissionMode: 'self-apply',
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:go_router/go_router.dart';
|
import 'package:go_router/go_router.dart';
|
||||||
import 'package:tm_app/core/utils/size_config.dart';
|
import 'package:tm_app/core/utils/size_config.dart';
|
||||||
|
|
||||||
|
import '../../core/constants/tender_submision_mode.dart';
|
||||||
import '../../core/theme/colors.dart';
|
import '../../core/theme/colors.dart';
|
||||||
|
|
||||||
class SelectSubmissionBottomSheet extends StatefulWidget {
|
class SelectSubmissionBottomSheet extends StatefulWidget {
|
||||||
@@ -16,7 +17,7 @@ class SelectSubmissionBottomSheet extends StatefulWidget {
|
|||||||
class _SelectSubmissionBottomSheetState
|
class _SelectSubmissionBottomSheetState
|
||||||
extends State<SelectSubmissionBottomSheet> {
|
extends State<SelectSubmissionBottomSheet> {
|
||||||
int selectedType = 0;
|
int selectedType = 0;
|
||||||
String type = 'self-apply';
|
String type = TenderSubmissionMode.selfApply.value;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@@ -46,20 +47,20 @@ class _SelectSubmissionBottomSheetState
|
|||||||
SizedBox(height: 8.0.h()),
|
SizedBox(height: 8.0.h()),
|
||||||
_submissionType(
|
_submissionType(
|
||||||
title: 'self-apply',
|
title: 'self-apply',
|
||||||
isSelected: type == 'self-apply',
|
isSelected: type == TenderSubmissionMode.selfApply.value,
|
||||||
onTap: () {
|
onTap: () {
|
||||||
selectedType = 0;
|
selectedType = 0;
|
||||||
type = 'self-apply';
|
type = TenderSubmissionMode.selfApply.value;
|
||||||
setState(() {});
|
setState(() {});
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
SizedBox(height: 8.0.h()),
|
SizedBox(height: 8.0.h()),
|
||||||
_submissionType(
|
_submissionType(
|
||||||
title: 'Partnership',
|
title: 'Partnership',
|
||||||
isSelected: type == 'partnership',
|
isSelected: type == TenderSubmissionMode.partnership.value,
|
||||||
onTap: () {
|
onTap: () {
|
||||||
selectedType = 1;
|
selectedType = 1;
|
||||||
type = 'partnership';
|
type = TenderSubmissionMode.partnership.value;
|
||||||
setState(() {});
|
setState(() {});
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:go_router/go_router.dart';
|
import 'package:go_router/go_router.dart';
|
||||||
import 'package:tm_app/core/utils/size_config.dart';
|
import 'package:tm_app/core/utils/size_config.dart';
|
||||||
|
|
||||||
|
import '../../core/constants/tender_submision_mode.dart';
|
||||||
import '../../core/theme/colors.dart';
|
import '../../core/theme/colors.dart';
|
||||||
|
|
||||||
class SelectSubmissionDialog extends StatefulWidget {
|
class SelectSubmissionDialog extends StatefulWidget {
|
||||||
@@ -14,7 +15,7 @@ class SelectSubmissionDialog extends StatefulWidget {
|
|||||||
|
|
||||||
class _SelectSubmissionDialogState extends State<SelectSubmissionDialog> {
|
class _SelectSubmissionDialogState extends State<SelectSubmissionDialog> {
|
||||||
int selectedType = 0;
|
int selectedType = 0;
|
||||||
String type = 'self-apply';
|
String type = TenderSubmissionMode.selfApply.value;
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Dialog(
|
return Dialog(
|
||||||
@@ -42,21 +43,21 @@ class _SelectSubmissionDialogState extends State<SelectSubmissionDialog> {
|
|||||||
),
|
),
|
||||||
SizedBox(height: 8.0.h()),
|
SizedBox(height: 8.0.h()),
|
||||||
_submissionType(
|
_submissionType(
|
||||||
title: 'self-apply',
|
title: 'Self-apply',
|
||||||
isSelected: type == 'self-apply',
|
isSelected: type == TenderSubmissionMode.selfApply.value,
|
||||||
onTap: () {
|
onTap: () {
|
||||||
selectedType = 0;
|
selectedType = 0;
|
||||||
type = 'self-apply';
|
type = TenderSubmissionMode.selfApply.value;
|
||||||
setState(() {});
|
setState(() {});
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
SizedBox(height: 8.0.h()),
|
SizedBox(height: 8.0.h()),
|
||||||
_submissionType(
|
_submissionType(
|
||||||
title: 'Partnership',
|
title: 'Partnership',
|
||||||
isSelected: type == 'partnership',
|
isSelected: type == TenderSubmissionMode.partnership.value,
|
||||||
onTap: () {
|
onTap: () {
|
||||||
selectedType = 1;
|
selectedType = 1;
|
||||||
type = 'partnership';
|
type = TenderSubmissionMode.partnership.value;
|
||||||
setState(() {});
|
setState(() {});
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -5,6 +5,9 @@ import 'package:tm_app/data/services/model/tender_data/tender_data.dart';
|
|||||||
import 'package:tm_app/view_models/tenders_view_model.dart';
|
import 'package:tm_app/view_models/tenders_view_model.dart';
|
||||||
|
|
||||||
import '../../../core/constants/assets.dart';
|
import '../../../core/constants/assets.dart';
|
||||||
|
import '../../../core/constants/tender_approval_status.dart';
|
||||||
|
import '../../../core/constants/tender_feedback.dart';
|
||||||
|
import '../../../core/constants/tender_submision_mode.dart';
|
||||||
import '../../../core/theme/colors.dart';
|
import '../../../core/theme/colors.dart';
|
||||||
import '../../../core/utils/size_config.dart';
|
import '../../../core/utils/size_config.dart';
|
||||||
import '../../shared/select_submission_bottom_sheet.dart';
|
import '../../shared/select_submission_bottom_sheet.dart';
|
||||||
@@ -54,7 +57,7 @@ class TenderActionButtonsRow extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final approval = viewModel.getTenderApprovalForTender(tender.id!);
|
final approval = viewModel.getTenderApprovalForTender(tender.id!);
|
||||||
final isRejected = approval?.status == 'rejected';
|
final isRejected = approval?.status == TenderApprovalStatus.rejected.value;
|
||||||
|
|
||||||
return Tooltip(
|
return Tooltip(
|
||||||
message: TendersStrings.reject,
|
message: TendersStrings.reject,
|
||||||
@@ -63,8 +66,8 @@ class TenderActionButtonsRow extends StatelessWidget {
|
|||||||
onTap: () {
|
onTap: () {
|
||||||
viewModel.toggleApprovals(
|
viewModel.toggleApprovals(
|
||||||
tenderId: tender.id!,
|
tenderId: tender.id!,
|
||||||
submissionMode: 'self-apply',
|
submissionMode: TenderSubmissionMode.selfApply.value,
|
||||||
status: 'rejected',
|
status: TenderApprovalStatus.rejected.value,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
child: Column(
|
child: Column(
|
||||||
@@ -109,7 +112,7 @@ class TenderActionButtonsRow extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final approval = viewModel.getTenderApprovalForTender(tender.id!);
|
final approval = viewModel.getTenderApprovalForTender(tender.id!);
|
||||||
final isApproved = approval?.status == 'submitted';
|
final isApproved = approval?.status == TenderApprovalStatus.submitted.value;
|
||||||
|
|
||||||
return Tooltip(
|
return Tooltip(
|
||||||
message: TendersStrings.submit,
|
message: TendersStrings.submit,
|
||||||
@@ -119,8 +122,11 @@ class TenderActionButtonsRow extends StatelessWidget {
|
|||||||
if (isApproved) {
|
if (isApproved) {
|
||||||
viewModel.toggleApprovals(
|
viewModel.toggleApprovals(
|
||||||
tenderId: tender.id!,
|
tenderId: tender.id!,
|
||||||
submissionMode: approval?.submissionMode ?? 'self-apply',
|
submissionMode:
|
||||||
status: 'submitted',
|
(approval?.submissionMode?.isNotEmpty == true)
|
||||||
|
? approval!.submissionMode!
|
||||||
|
: TenderSubmissionMode.selfApply.value,
|
||||||
|
status: TenderApprovalStatus.submitted.value,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
final isMobile = MediaQuery.sizeOf(context).width < 600;
|
final isMobile = MediaQuery.sizeOf(context).width < 600;
|
||||||
@@ -134,7 +140,7 @@ class TenderActionButtonsRow extends StatelessWidget {
|
|||||||
viewModel.toggleApprovals(
|
viewModel.toggleApprovals(
|
||||||
tenderId: tender.id!,
|
tenderId: tender.id!,
|
||||||
submissionMode: value,
|
submissionMode: value,
|
||||||
status: 'submitted',
|
status: TenderApprovalStatus.submitted.value,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@@ -149,7 +155,7 @@ class TenderActionButtonsRow extends StatelessWidget {
|
|||||||
viewModel.toggleApprovals(
|
viewModel.toggleApprovals(
|
||||||
tenderId: tender.id!,
|
tenderId: tender.id!,
|
||||||
submissionMode: value,
|
submissionMode: value,
|
||||||
status: 'submitted',
|
status: TenderApprovalStatus.submitted.value,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@@ -200,7 +206,7 @@ class TenderActionButtonsRow extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final feedback = viewModel.getFeedbackForTender(tender.id!);
|
final feedback = viewModel.getFeedbackForTender(tender.id!);
|
||||||
final isDisliked = feedback?.feedbackType == 'dislike';
|
final isDisliked = feedback?.feedbackType == TenderFeedback.disliked.value;
|
||||||
|
|
||||||
return Tooltip(
|
return Tooltip(
|
||||||
message: TendersStrings.dislike,
|
message: TendersStrings.dislike,
|
||||||
@@ -209,7 +215,7 @@ class TenderActionButtonsRow extends StatelessWidget {
|
|||||||
onTap: () {
|
onTap: () {
|
||||||
viewModel.toogleFeedback(
|
viewModel.toogleFeedback(
|
||||||
tenderId: tender.id!,
|
tenderId: tender.id!,
|
||||||
feedbackType: 'dislike',
|
feedbackType: TenderFeedback.disliked.value,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
child: Column(
|
child: Column(
|
||||||
@@ -247,14 +253,17 @@ class TenderActionButtonsRow extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final feedback = viewModel.getFeedbackForTender(tender.id!);
|
final feedback = viewModel.getFeedbackForTender(tender.id!);
|
||||||
final isLiked = feedback?.feedbackType == 'like';
|
final isLiked = feedback?.feedbackType == TenderFeedback.liked.value;
|
||||||
|
|
||||||
return Tooltip(
|
return Tooltip(
|
||||||
message: TendersStrings.like,
|
message: TendersStrings.like,
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
splashColor: Colors.transparent,
|
splashColor: Colors.transparent,
|
||||||
onTap: () {
|
onTap: () {
|
||||||
viewModel.toogleFeedback(tenderId: tender.id!, feedbackType: 'like');
|
viewModel.toogleFeedback(
|
||||||
|
tenderId: tender.id!,
|
||||||
|
feedbackType: TenderFeedback.liked.value,
|
||||||
|
);
|
||||||
},
|
},
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
import 'package:tm_app/core/constants/tender_feedback.dart';
|
||||||
import 'package:tm_app/core/theme/colors.dart';
|
import 'package:tm_app/core/theme/colors.dart';
|
||||||
import 'package:tm_app/view_models/your_tenders_view_model.dart';
|
import 'package:tm_app/view_models/your_tenders_view_model.dart';
|
||||||
import 'package:tm_app/views/your_tenders/strings/your_tenders_strings.dart';
|
import 'package:tm_app/views/your_tenders/strings/your_tenders_strings.dart';
|
||||||
@@ -73,7 +74,7 @@ class _YourTendersDesktopPageState extends State<YourTendersDesktopPage>
|
|||||||
viewModel.likedTendersData != null) {
|
viewModel.likedTendersData != null) {
|
||||||
return LikedDislikedTendersList(
|
return LikedDislikedTendersList(
|
||||||
data: viewModel.likedTendersData!,
|
data: viewModel.likedTendersData!,
|
||||||
status: 'liked',
|
status: TenderFeedback.liked.value,
|
||||||
isDesctop: true,
|
isDesctop: true,
|
||||||
);
|
);
|
||||||
} else if (viewModel.selectedStatus ==
|
} else if (viewModel.selectedStatus ==
|
||||||
@@ -81,7 +82,7 @@ class _YourTendersDesktopPageState extends State<YourTendersDesktopPage>
|
|||||||
viewModel.likedTendersData != null) {
|
viewModel.likedTendersData != null) {
|
||||||
return LikedDislikedTendersList(
|
return LikedDislikedTendersList(
|
||||||
data: viewModel.likedTendersData!,
|
data: viewModel.likedTendersData!,
|
||||||
status: 'disliked',
|
status: TenderFeedback.disliked.value,
|
||||||
isDesctop: true,
|
isDesctop: true,
|
||||||
);
|
);
|
||||||
} else if (viewModel.data != null) {
|
} else if (viewModel.data != null) {
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import 'package:tm_app/views/your_tenders/widgets/filter_button.dart';
|
|||||||
import 'package:tm_app/views/your_tenders/widgets/liked_disliked_tenders_list.dart';
|
import 'package:tm_app/views/your_tenders/widgets/liked_disliked_tenders_list.dart';
|
||||||
import 'package:tm_app/views/your_tenders/widgets/tenders_submitted.dart';
|
import 'package:tm_app/views/your_tenders/widgets/tenders_submitted.dart';
|
||||||
|
|
||||||
|
import '../../../core/constants/tender_feedback.dart';
|
||||||
|
|
||||||
class YourTendersMobilePage extends StatefulWidget {
|
class YourTendersMobilePage extends StatefulWidget {
|
||||||
const YourTendersMobilePage({super.key});
|
const YourTendersMobilePage({super.key});
|
||||||
|
|
||||||
@@ -65,7 +67,7 @@ class _YourTendersMobilePageState extends State<YourTendersMobilePage> {
|
|||||||
Expanded(
|
Expanded(
|
||||||
child: LikedDislikedTendersList(
|
child: LikedDislikedTendersList(
|
||||||
data: viewModel.likedTendersData!,
|
data: viewModel.likedTendersData!,
|
||||||
status: 'liked tenders',
|
status: TenderFeedback.liked.value,
|
||||||
isDesctop: false,
|
isDesctop: false,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@@ -75,7 +77,7 @@ class _YourTendersMobilePageState extends State<YourTendersMobilePage> {
|
|||||||
Expanded(
|
Expanded(
|
||||||
child: LikedDislikedTendersList(
|
child: LikedDislikedTendersList(
|
||||||
data: viewModel.likedTendersData!,
|
data: viewModel.likedTendersData!,
|
||||||
status: 'disliked',
|
status: TenderFeedback.disliked.value,
|
||||||
isDesctop: false,
|
isDesctop: false,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import 'package:tm_app/views/your_tenders/widgets/liked_disliked_tenders_list.da
|
|||||||
import 'package:tm_app/views/your_tenders/widgets/tablet_desktop_appbar.dart';
|
import 'package:tm_app/views/your_tenders/widgets/tablet_desktop_appbar.dart';
|
||||||
import 'package:tm_app/views/your_tenders/widgets/tenders_submitted.dart';
|
import 'package:tm_app/views/your_tenders/widgets/tenders_submitted.dart';
|
||||||
|
|
||||||
|
import '../../../core/constants/tender_feedback.dart';
|
||||||
import '../../shared/tablet_navigation_widget.dart';
|
import '../../shared/tablet_navigation_widget.dart';
|
||||||
import '../../shared/tender_app_bar.dart';
|
import '../../shared/tender_app_bar.dart';
|
||||||
import '../strings/your_tenders_strings.dart';
|
import '../strings/your_tenders_strings.dart';
|
||||||
@@ -85,7 +86,7 @@ class _YourTendersTabletPageState extends State<YourTendersTabletPage>
|
|||||||
viewModel.likedTendersData != null) {
|
viewModel.likedTendersData != null) {
|
||||||
return LikedDislikedTendersList(
|
return LikedDislikedTendersList(
|
||||||
data: viewModel.likedTendersData!,
|
data: viewModel.likedTendersData!,
|
||||||
status: 'liked',
|
status: TenderFeedback.liked.value,
|
||||||
isDesctop: false,
|
isDesctop: false,
|
||||||
);
|
);
|
||||||
} else if (viewModel.selectedStatus ==
|
} else if (viewModel.selectedStatus ==
|
||||||
@@ -93,7 +94,7 @@ class _YourTendersTabletPageState extends State<YourTendersTabletPage>
|
|||||||
viewModel.likedTendersData != null) {
|
viewModel.likedTendersData != null) {
|
||||||
return LikedDislikedTendersList(
|
return LikedDislikedTendersList(
|
||||||
data: viewModel.likedTendersData!,
|
data: viewModel.likedTendersData!,
|
||||||
status: 'disliked',
|
status: TenderFeedback.disliked.value,
|
||||||
isDesctop: false,
|
isDesctop: false,
|
||||||
);
|
);
|
||||||
} else if (viewModel.data != null) {
|
} else if (viewModel.data != null) {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import 'package:tm_app/core/utils/date_utils.dart';
|
|||||||
import 'package:tm_app/data/services/model/tender_data/tender_data.dart';
|
import 'package:tm_app/data/services/model/tender_data/tender_data.dart';
|
||||||
|
|
||||||
import '../../../core/constants/assets.dart';
|
import '../../../core/constants/assets.dart';
|
||||||
|
import '../../../core/constants/tender_approval_status.dart';
|
||||||
import '../../../core/theme/colors.dart';
|
import '../../../core/theme/colors.dart';
|
||||||
import '../../../core/utils/size_config.dart';
|
import '../../../core/utils/size_config.dart';
|
||||||
|
|
||||||
@@ -29,7 +30,7 @@ class TenderCard extends StatelessWidget {
|
|||||||
statusIcon = AssetsManager.tickCircle;
|
statusIcon = AssetsManager.tickCircle;
|
||||||
statusCardColor = AppColors.green20;
|
statusCardColor = AppColors.green20;
|
||||||
statusTextColor = AppColors.green30;
|
statusTextColor = AppColors.green30;
|
||||||
} else if (tender.status == 'submitted') {
|
} else if (tender.status == TenderApprovalStatus.submitted.value) {
|
||||||
backgroundColor = AppColors.grey0;
|
backgroundColor = AppColors.grey0;
|
||||||
borderColor = AppColors.grey30;
|
borderColor = AppColors.grey30;
|
||||||
statusIcon = null;
|
statusIcon = null;
|
||||||
|
|||||||
Reference in New Issue
Block a user