Merge pull request 'refactors' (#114) from refactors into main

Reviewed-on: https://repo.ravanertebat.com/TM/tm_app/pulls/114
This commit is contained in:
a.ghabeli
2025-09-08 15:16:12 +03:30
55 changed files with 520 additions and 475 deletions
+2 -2
View File
@@ -8,13 +8,13 @@ class AppConfig {
// این متد بر اساس محیط فعال، URL مناسب را برمی‌گرداند. // این متد بر اساس محیط فعال، URL مناسب را برمی‌گرداند.
static String get apiBaseUrl { static String get apiBaseUrl {
// return 'http://10.0.2.2:8081'; return 'http://10.0.2.2:8081';
// return '192.168.1.103:8081'; // return '192.168.1.103:8081';
// if (isDevelopment) { // if (isDevelopment) {
// // Handle different platforms for local development // // Handle different platforms for local development
// if (kIsWeb) { // if (kIsWeb) {
// For web, use localhost // For web, use localhost
return 'https://app.opplens.com'; // return 'https://app.opplens.com';
// return 'http://localhost:8081'; // return 'http://localhost:8081';
// } else { // } else {
// For Android emulator, use 10.0.2.2 (special IP for host machine) // For Android emulator, use 10.0.2.2 (special IP for host machine)
+4 -2
View File
@@ -64,8 +64,10 @@ List<SingleChildWidget> get repositories {
Provider(create: (context) => AuthRepository(authService: context.read())), Provider(create: (context) => AuthRepository(authService: context.read())),
Provider( Provider(
create: create:
(context) => (context) => YourTendersRepository(
YourTendersRepository(yourTendersService: context.read()), yourTendersService: context.read(),
likedTendersService: context.read(),
),
), ),
Provider( Provider(
create: create:
+3 -6
View File
@@ -3,11 +3,8 @@ class CommonStrings {
// Truly shared strings across multiple features // Truly shared strings across multiple features
static const String noData = 'No data'; static const String noData = 'No data';
static const String selectSubmission = 'Select Submission';
static const String selfApply = 'Self-apply';
static const String partnership = 'Partnership';
static const String confirm = 'Confirm'; static const String confirm = 'Confirm';
static const String submit = 'Submit';
static const String cancel = 'Cancel';
static const String loading = 'Loading...';
static const String error = 'Error';
static const String success = 'Success';
static const String retry = 'Retry';
} }
+7
View File
@@ -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;
}
}
}
+21
View File
@@ -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;
}
}
}
+2 -2
View File
@@ -2,7 +2,7 @@ import 'package:tm_app/core/utils/result.dart';
import 'package:tm_app/data/services/home_service.dart'; import 'package:tm_app/data/services/home_service.dart';
import 'package:tm_app/data/services/model/recommended_tenders_response/recommended_tenders_response.dart'; import 'package:tm_app/data/services/model/recommended_tenders_response/recommended_tenders_response.dart';
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/data/services/model/tender_approvals_state_response/tender_approvals_state_response.dart'; import 'package:tm_app/data/services/model/tender_approvals_stats_response/tender_approvals_stats_response.dart';
import '../services/model/feedback_stats_response/feedback_stat_response.dart'; import '../services/model/feedback_stats_response/feedback_stat_response.dart';
import '../services/model/request_models/get_tenders_request_model/get_tenders_request_model.dart'; import '../services/model/request_models/get_tenders_request_model/get_tenders_request_model.dart';
@@ -30,7 +30,7 @@ class HomeRepository {
return _yourTendersService.getTenders(requestModel: requestModel); return _yourTendersService.getTenders(requestModel: requestModel);
} }
Future<Result<TenderApprovalsStateResponse>> getTendersApprovalsStats() { Future<Result<TenderApprovalsStatsResponse>> getTendersApprovalsStats() {
return _homeService.getTendersApprovalsStats(); return _homeService.getTendersApprovalsStats();
} }
@@ -1,6 +1,7 @@
import 'package:tm_app/core/utils/result.dart'; import 'package:tm_app/core/utils/result.dart';
import 'package:tm_app/data/services/liked_tenders_service.dart'; import 'package:tm_app/data/services/liked_tenders_service.dart';
import 'package:tm_app/data/services/model/liked_tenders_response/liked_tenders_response.dart'; import 'package:tm_app/data/services/model/liked_tenders_response/liked_tenders_response.dart';
import 'package:tm_app/data/services/model/request_models/tender_feedback_request_model/tender_feedback_request_model.dart';
class LikedTendersRepository { class LikedTendersRepository {
final LikedTendersService _likedTendersService; final LikedTendersService _likedTendersService;
@@ -8,9 +9,8 @@ class LikedTendersRepository {
: _likedTendersService = likedTendersService; : _likedTendersService = likedTendersService;
Future<Result<LikedTendersResponse>> getLikedTenders({ Future<Result<LikedTendersResponse>> getLikedTenders({
int offset = 0, required TenderFeedbackRequestModel requestModel,
int limit = 20,
}) { }) {
return _likedTendersService.getLikedTenders(offset: offset, limit: limit); return _likedTendersService.getLikedTenders(requestModel: requestModel);
} }
} }
@@ -1,27 +1,20 @@
import 'package:tm_app/core/utils/result.dart'; import 'package:tm_app/core/utils/result.dart';
import 'package:tm_app/data/services/liked_tenders_service.dart';
import 'package:tm_app/data/services/model/liked_tenders_response/liked_tenders_response.dart'; import 'package:tm_app/data/services/model/liked_tenders_response/liked_tenders_response.dart';
import 'package:tm_app/data/services/model/request_models/get_tenders_request_model/get_tenders_request_model.dart'; import 'package:tm_app/data/services/model/request_models/get_tenders_request_model/get_tenders_request_model.dart';
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/data/services/your_tenders_service.dart'; import 'package:tm_app/data/services/your_tenders_service.dart';
import '../services/model/request_models/tender_feedback_request_model/tender_feedback_request_model.dart';
class YourTendersRepository { class YourTendersRepository {
final YourTendersService _yourTendersService; final YourTendersService _yourTendersService;
YourTendersRepository({required YourTendersService yourTendersService}) final LikedTendersService _likedTendersService;
: _yourTendersService = yourTendersService; YourTendersRepository({
required YourTendersService yourTendersService,
Future<Result<TenderApprovalsResponse>> getApprovedTenders({ required LikedTendersService likedTendersService,
required int limit, }) : _yourTendersService = yourTendersService,
required int offset, _likedTendersService = likedTendersService;
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,
@@ -30,18 +23,8 @@ class YourTendersRepository {
} }
Future<Result<LikedTendersResponse>> getTendersFeedback({ Future<Result<LikedTendersResponse>> getTendersFeedback({
required int limit, required TenderFeedbackRequestModel requestModel,
required int offset,
required String feedbackType,
required String dateFrom,
required String dateTo,
}) { }) {
return _yourTendersService.getTendersFeedback( return _likedTendersService.getLikedTenders(requestModel: requestModel);
limit: limit,
offset: offset,
feedbackType: feedbackType,
dateFrom: dateFrom,
dateTo: dateTo,
);
} }
} }
+14 -2
View File
@@ -1,4 +1,16 @@
class LikedTendersApi { class LikedTendersApi {
static const String likedTenders = static const String tendersFeedback = '/api/v1/feedback';
'/api/v1/feedback?feedback_type=like';
static String getTendersFeedback({
required int limit,
required int offset,
required String feedbackType,
required String dateFrom,
required String dateTo,
}) {
if (dateFrom.isNotEmpty && dateTo.isNotEmpty) {
return '$tendersFeedback?feedback_type=$feedbackType&limit=$limit&offset=$offset&date_from=$dateFrom&date_to=$dateTo';
}
return '$tendersFeedback?feedback_type=$feedbackType&limit=$limit&offset=$offset';
}
} }
@@ -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({
@@ -36,19 +20,4 @@ class YourTendersApi {
return url; return url;
} }
static const String tendersFeedback = '/api/v1/feedback';
static String getTendersFeedback({
required int limit,
required int offset,
required String feedbackType,
required String dateFrom,
required String dateTo,
}) {
if (dateFrom.isNotEmpty && dateTo.isNotEmpty) {
return '$tendersFeedback?feedback_type=$feedbackType&limit=$limit&offset=$offset&date_from=$dateFrom&date_to=$dateTo';
}
return '$tendersFeedback?feedback_type=$feedbackType&limit=$limit&offset=$offset';
}
} }
+3 -3
View File
@@ -2,7 +2,7 @@ import 'package:tm_app/core/utils/result.dart';
import 'package:tm_app/data/services/api/home_api.dart'; import 'package:tm_app/data/services/api/home_api.dart';
import 'package:tm_app/data/services/model/feedback_stats_response/feedback_stat_response.dart'; import 'package:tm_app/data/services/model/feedback_stats_response/feedback_stat_response.dart';
import 'package:tm_app/data/services/model/recommended_tenders_response/recommended_tenders_response.dart'; import 'package:tm_app/data/services/model/recommended_tenders_response/recommended_tenders_response.dart';
import 'package:tm_app/data/services/model/tender_approvals_state_response/tender_approvals_state_response.dart'; import 'package:tm_app/data/services/model/tender_approvals_stats_response/tender_approvals_stats_response.dart';
import '../../core/network/network_manager.dart'; import '../../core/network/network_manager.dart';
@@ -23,11 +23,11 @@ class HomeService {
return result; return result;
} }
Future<Result<TenderApprovalsStateResponse>> Future<Result<TenderApprovalsStatsResponse>>
getTendersApprovalsStats() async { getTendersApprovalsStats() async {
final result = await _networkManager.makeRequest( final result = await _networkManager.makeRequest(
HomeApi.tenderApprovalStats, HomeApi.tenderApprovalStats,
(json) => TenderApprovalsStateResponse.fromJson(json), (json) => TenderApprovalsStatsResponse.fromJson(json),
method: 'GET', method: 'GET',
); );
return result; return result;
+9 -3
View File
@@ -3,6 +3,7 @@ import 'package:tm_app/data/services/api/liked_tenders_api.dart';
import 'package:tm_app/data/services/model/liked_tenders_response/liked_tenders_response.dart'; import 'package:tm_app/data/services/model/liked_tenders_response/liked_tenders_response.dart';
import '../../../core/network/network_manager.dart'; import '../../../core/network/network_manager.dart';
import 'model/request_models/tender_feedback_request_model/tender_feedback_request_model.dart';
class LikedTendersService { class LikedTendersService {
LikedTendersService({required NetworkManager networkManager}) LikedTendersService({required NetworkManager networkManager})
@@ -11,10 +12,15 @@ class LikedTendersService {
final NetworkManager _networkManager; final NetworkManager _networkManager;
Future<Result<LikedTendersResponse>> getLikedTenders({ Future<Result<LikedTendersResponse>> getLikedTenders({
int offset = 0, required TenderFeedbackRequestModel requestModel,
int limit = 20,
}) async { }) async {
final uri = '${LikedTendersApi.likedTenders}&limit=$limit&offset=$offset'; final uri = LikedTendersApi.getTendersFeedback(
limit: requestModel.limit,
offset: requestModel.offset,
feedbackType: requestModel.feedbackType,
dateFrom: requestModel.dateFrom,
dateTo: requestModel.dateTo,
);
final result = await _networkManager.makeRequest( final result = await _networkManager.makeRequest(
uri, uri,
@@ -0,0 +1,15 @@
class TenderFeedbackRequestModel {
final String feedbackType;
final String dateFrom;
final String dateTo;
final int limit;
final int offset;
TenderFeedbackRequestModel({
required this.feedbackType,
this.dateFrom = '',
this.dateTo = '',
this.limit = 10,
this.offset = 0,
});
}
@@ -1,22 +0,0 @@
// ignore_for_file: invalid_annotation_target
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:tm_app/data/services/model/error/error_model.dart';
import 'package:tm_app/data/services/model/tender_approvals_state_data/tender_approvals_state_data.dart';
part 'tender_approvals_state_response.freezed.dart';
part 'tender_approvals_state_response.g.dart';
@freezed
abstract class TenderApprovalsStateResponse with _$TenderApprovalsStateResponse {
@JsonSerializable(explicitToJson: true)
const factory TenderApprovalsStateResponse({
@JsonKey(name: 'success') required bool? success,
@JsonKey(name: 'message') required String? message,
@JsonKey(name: 'error') ErrorModel? error,
@JsonKey(name: 'data') TenderApprovalsStateData? data,
}) = _TenderApprovalsStateResponse;
factory TenderApprovalsStateResponse.fromJson(Map<String, dynamic> json) =>
_$TenderApprovalsStateResponseFromJson(json);
}
@@ -2,13 +2,13 @@
import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.dart';
part 'tender_approvals_state_data.freezed.dart'; part 'tender_approvals_stats_data.freezed.dart';
part 'tender_approvals_state_data.g.dart'; part 'tender_approvals_stats_data.g.dart';
@freezed @freezed
abstract class TenderApprovalsStateData with _$TenderApprovalsStateData { abstract class TenderApprovalsStatsData with _$TenderApprovalsStatsData {
@JsonSerializable(explicitToJson: true) @JsonSerializable(explicitToJson: true)
const factory TenderApprovalsStateData({ const factory TenderApprovalsStatsData({
@JsonKey(name: 'company_id') required String? companyId, @JsonKey(name: 'company_id') required String? companyId,
@JsonKey(name: 'total_approvals') required int? totalApprovals, @JsonKey(name: 'total_approvals') required int? totalApprovals,
@JsonKey(name: 'submitted_tenders') required int? submittedTenders, @JsonKey(name: 'submitted_tenders') required int? submittedTenders,
@@ -20,10 +20,10 @@ abstract class TenderApprovalsStateData with _$TenderApprovalsStateData {
@JsonKey(name: 'approvals_by_submission') @JsonKey(name: 'approvals_by_submission')
required ApprovalsBySubmission? approvalsBySubmission, required ApprovalsBySubmission? approvalsBySubmission,
@JsonKey(name: 'last_updated') required int? lastUpdated, @JsonKey(name: 'last_updated') required int? lastUpdated,
}) = _TenderApprovalsStateData; }) = _TenderApprovalsStatsData;
factory TenderApprovalsStateData.fromJson(Map<String, dynamic> json) => factory TenderApprovalsStatsData.fromJson(Map<String, dynamic> json) =>
_$TenderApprovalsStateDataFromJson(json); _$TenderApprovalsStatsDataFromJson(json);
} }
@freezed @freezed
@@ -3,7 +3,7 @@
// ignore_for_file: type=lint // ignore_for_file: type=lint
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
part of 'tender_approvals_state_data.dart'; part of 'tender_approvals_stats_data.dart';
// ************************************************************************** // **************************************************************************
// FreezedGenerator // FreezedGenerator
@@ -13,22 +13,22 @@ part of 'tender_approvals_state_data.dart';
T _$identity<T>(T value) => value; T _$identity<T>(T value) => value;
/// @nodoc /// @nodoc
mixin _$TenderApprovalsStateData { mixin _$TenderApprovalsStatsData {
@JsonKey(name: 'company_id') String? get companyId;@JsonKey(name: 'total_approvals') int? get totalApprovals;@JsonKey(name: 'submitted_tenders') int? get submittedTenders;@JsonKey(name: 'rejected_tenders') int? get rejectedTenders;@JsonKey(name: 'self_apply_count') int? get selfApplyCount;@JsonKey(name: 'partnership_count') int? get partnershipCount;@JsonKey(name: 'approvals_by_status') ApprovalsByStatus? get approvalsByStatus;@JsonKey(name: 'approvals_by_submission') ApprovalsBySubmission? get approvalsBySubmission;@JsonKey(name: 'last_updated') int? get lastUpdated; @JsonKey(name: 'company_id') String? get companyId;@JsonKey(name: 'total_approvals') int? get totalApprovals;@JsonKey(name: 'submitted_tenders') int? get submittedTenders;@JsonKey(name: 'rejected_tenders') int? get rejectedTenders;@JsonKey(name: 'self_apply_count') int? get selfApplyCount;@JsonKey(name: 'partnership_count') int? get partnershipCount;@JsonKey(name: 'approvals_by_status') ApprovalsByStatus? get approvalsByStatus;@JsonKey(name: 'approvals_by_submission') ApprovalsBySubmission? get approvalsBySubmission;@JsonKey(name: 'last_updated') int? get lastUpdated;
/// Create a copy of TenderApprovalsStateData /// Create a copy of TenderApprovalsStatsData
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false) @JsonKey(includeFromJson: false, includeToJson: false)
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
$TenderApprovalsStateDataCopyWith<TenderApprovalsStateData> get copyWith => _$TenderApprovalsStateDataCopyWithImpl<TenderApprovalsStateData>(this as TenderApprovalsStateData, _$identity); $TenderApprovalsStatsDataCopyWith<TenderApprovalsStatsData> get copyWith => _$TenderApprovalsStatsDataCopyWithImpl<TenderApprovalsStatsData>(this as TenderApprovalsStatsData, _$identity);
/// Serializes this TenderApprovalsStateData to a JSON map. /// Serializes this TenderApprovalsStatsData to a JSON map.
Map<String, dynamic> toJson(); Map<String, dynamic> toJson();
@override @override
bool operator ==(Object other) { bool operator ==(Object other) {
return identical(this, other) || (other.runtimeType == runtimeType&&other is TenderApprovalsStateData&&(identical(other.companyId, companyId) || other.companyId == companyId)&&(identical(other.totalApprovals, totalApprovals) || other.totalApprovals == totalApprovals)&&(identical(other.submittedTenders, submittedTenders) || other.submittedTenders == submittedTenders)&&(identical(other.rejectedTenders, rejectedTenders) || other.rejectedTenders == rejectedTenders)&&(identical(other.selfApplyCount, selfApplyCount) || other.selfApplyCount == selfApplyCount)&&(identical(other.partnershipCount, partnershipCount) || other.partnershipCount == partnershipCount)&&(identical(other.approvalsByStatus, approvalsByStatus) || other.approvalsByStatus == approvalsByStatus)&&(identical(other.approvalsBySubmission, approvalsBySubmission) || other.approvalsBySubmission == approvalsBySubmission)&&(identical(other.lastUpdated, lastUpdated) || other.lastUpdated == lastUpdated)); return identical(this, other) || (other.runtimeType == runtimeType&&other is TenderApprovalsStatsData&&(identical(other.companyId, companyId) || other.companyId == companyId)&&(identical(other.totalApprovals, totalApprovals) || other.totalApprovals == totalApprovals)&&(identical(other.submittedTenders, submittedTenders) || other.submittedTenders == submittedTenders)&&(identical(other.rejectedTenders, rejectedTenders) || other.rejectedTenders == rejectedTenders)&&(identical(other.selfApplyCount, selfApplyCount) || other.selfApplyCount == selfApplyCount)&&(identical(other.partnershipCount, partnershipCount) || other.partnershipCount == partnershipCount)&&(identical(other.approvalsByStatus, approvalsByStatus) || other.approvalsByStatus == approvalsByStatus)&&(identical(other.approvalsBySubmission, approvalsBySubmission) || other.approvalsBySubmission == approvalsBySubmission)&&(identical(other.lastUpdated, lastUpdated) || other.lastUpdated == lastUpdated));
} }
@JsonKey(includeFromJson: false, includeToJson: false) @JsonKey(includeFromJson: false, includeToJson: false)
@@ -37,15 +37,15 @@ int get hashCode => Object.hash(runtimeType,companyId,totalApprovals,submittedTe
@override @override
String toString() { String toString() {
return 'TenderApprovalsStateData(companyId: $companyId, totalApprovals: $totalApprovals, submittedTenders: $submittedTenders, rejectedTenders: $rejectedTenders, selfApplyCount: $selfApplyCount, partnershipCount: $partnershipCount, approvalsByStatus: $approvalsByStatus, approvalsBySubmission: $approvalsBySubmission, lastUpdated: $lastUpdated)'; return 'TenderApprovalsStatsData(companyId: $companyId, totalApprovals: $totalApprovals, submittedTenders: $submittedTenders, rejectedTenders: $rejectedTenders, selfApplyCount: $selfApplyCount, partnershipCount: $partnershipCount, approvalsByStatus: $approvalsByStatus, approvalsBySubmission: $approvalsBySubmission, lastUpdated: $lastUpdated)';
} }
} }
/// @nodoc /// @nodoc
abstract mixin class $TenderApprovalsStateDataCopyWith<$Res> { abstract mixin class $TenderApprovalsStatsDataCopyWith<$Res> {
factory $TenderApprovalsStateDataCopyWith(TenderApprovalsStateData value, $Res Function(TenderApprovalsStateData) _then) = _$TenderApprovalsStateDataCopyWithImpl; factory $TenderApprovalsStatsDataCopyWith(TenderApprovalsStatsData value, $Res Function(TenderApprovalsStatsData) _then) = _$TenderApprovalsStatsDataCopyWithImpl;
@useResult @useResult
$Res call({ $Res call({
@JsonKey(name: 'company_id') String? companyId,@JsonKey(name: 'total_approvals') int? totalApprovals,@JsonKey(name: 'submitted_tenders') int? submittedTenders,@JsonKey(name: 'rejected_tenders') int? rejectedTenders,@JsonKey(name: 'self_apply_count') int? selfApplyCount,@JsonKey(name: 'partnership_count') int? partnershipCount,@JsonKey(name: 'approvals_by_status') ApprovalsByStatus? approvalsByStatus,@JsonKey(name: 'approvals_by_submission') ApprovalsBySubmission? approvalsBySubmission,@JsonKey(name: 'last_updated') int? lastUpdated @JsonKey(name: 'company_id') String? companyId,@JsonKey(name: 'total_approvals') int? totalApprovals,@JsonKey(name: 'submitted_tenders') int? submittedTenders,@JsonKey(name: 'rejected_tenders') int? rejectedTenders,@JsonKey(name: 'self_apply_count') int? selfApplyCount,@JsonKey(name: 'partnership_count') int? partnershipCount,@JsonKey(name: 'approvals_by_status') ApprovalsByStatus? approvalsByStatus,@JsonKey(name: 'approvals_by_submission') ApprovalsBySubmission? approvalsBySubmission,@JsonKey(name: 'last_updated') int? lastUpdated
@@ -56,14 +56,14 @@ $ApprovalsByStatusCopyWith<$Res>? get approvalsByStatus;$ApprovalsBySubmissionCo
} }
/// @nodoc /// @nodoc
class _$TenderApprovalsStateDataCopyWithImpl<$Res> class _$TenderApprovalsStatsDataCopyWithImpl<$Res>
implements $TenderApprovalsStateDataCopyWith<$Res> { implements $TenderApprovalsStatsDataCopyWith<$Res> {
_$TenderApprovalsStateDataCopyWithImpl(this._self, this._then); _$TenderApprovalsStatsDataCopyWithImpl(this._self, this._then);
final TenderApprovalsStateData _self; final TenderApprovalsStatsData _self;
final $Res Function(TenderApprovalsStateData) _then; final $Res Function(TenderApprovalsStatsData) _then;
/// Create a copy of TenderApprovalsStateData /// Create a copy of TenderApprovalsStatsData
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline') @override $Res call({Object? companyId = freezed,Object? totalApprovals = freezed,Object? submittedTenders = freezed,Object? rejectedTenders = freezed,Object? selfApplyCount = freezed,Object? partnershipCount = freezed,Object? approvalsByStatus = freezed,Object? approvalsBySubmission = freezed,Object? lastUpdated = freezed,}) { @pragma('vm:prefer-inline') @override $Res call({Object? companyId = freezed,Object? totalApprovals = freezed,Object? submittedTenders = freezed,Object? rejectedTenders = freezed,Object? selfApplyCount = freezed,Object? partnershipCount = freezed,Object? approvalsByStatus = freezed,Object? approvalsBySubmission = freezed,Object? lastUpdated = freezed,}) {
return _then(_self.copyWith( return _then(_self.copyWith(
@@ -79,7 +79,7 @@ as ApprovalsBySubmission?,lastUpdated: freezed == lastUpdated ? _self.lastUpdate
as int?, as int?,
)); ));
} }
/// Create a copy of TenderApprovalsStateData /// Create a copy of TenderApprovalsStatsData
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@override @override
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
@@ -91,7 +91,7 @@ $ApprovalsByStatusCopyWith<$Res>? get approvalsByStatus {
return $ApprovalsByStatusCopyWith<$Res>(_self.approvalsByStatus!, (value) { return $ApprovalsByStatusCopyWith<$Res>(_self.approvalsByStatus!, (value) {
return _then(_self.copyWith(approvalsByStatus: value)); return _then(_self.copyWith(approvalsByStatus: value));
}); });
}/// Create a copy of TenderApprovalsStateData }/// Create a copy of TenderApprovalsStatsData
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@override @override
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
@@ -107,8 +107,8 @@ $ApprovalsBySubmissionCopyWith<$Res>? get approvalsBySubmission {
} }
/// Adds pattern-matching-related methods to [TenderApprovalsStateData]. /// Adds pattern-matching-related methods to [TenderApprovalsStatsData].
extension TenderApprovalsStateDataPatterns on TenderApprovalsStateData { extension TenderApprovalsStatsDataPatterns on TenderApprovalsStatsData {
/// A variant of `map` that fallback to returning `orElse`. /// A variant of `map` that fallback to returning `orElse`.
/// ///
/// It is equivalent to doing: /// It is equivalent to doing:
@@ -121,10 +121,10 @@ extension TenderApprovalsStateDataPatterns on TenderApprovalsStateData {
/// } /// }
/// ``` /// ```
@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _TenderApprovalsStateData value)? $default,{required TResult orElse(),}){ @optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _TenderApprovalsStatsData value)? $default,{required TResult orElse(),}){
final _that = this; final _that = this;
switch (_that) { switch (_that) {
case _TenderApprovalsStateData() when $default != null: case _TenderApprovalsStatsData() when $default != null:
return $default(_that);case _: return $default(_that);case _:
return orElse(); return orElse();
@@ -143,10 +143,10 @@ return $default(_that);case _:
/// } /// }
/// ``` /// ```
@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _TenderApprovalsStateData value) $default,){ @optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _TenderApprovalsStatsData value) $default,){
final _that = this; final _that = this;
switch (_that) { switch (_that) {
case _TenderApprovalsStateData(): case _TenderApprovalsStatsData():
return $default(_that);case _: return $default(_that);case _:
throw StateError('Unexpected subclass'); throw StateError('Unexpected subclass');
@@ -164,10 +164,10 @@ return $default(_that);case _:
/// } /// }
/// ``` /// ```
@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _TenderApprovalsStateData value)? $default,){ @optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _TenderApprovalsStatsData value)? $default,){
final _that = this; final _that = this;
switch (_that) { switch (_that) {
case _TenderApprovalsStateData() when $default != null: case _TenderApprovalsStatsData() when $default != null:
return $default(_that);case _: return $default(_that);case _:
return null; return null;
@@ -187,7 +187,7 @@ return $default(_that);case _:
@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function(@JsonKey(name: 'company_id') String? companyId, @JsonKey(name: 'total_approvals') int? totalApprovals, @JsonKey(name: 'submitted_tenders') int? submittedTenders, @JsonKey(name: 'rejected_tenders') int? rejectedTenders, @JsonKey(name: 'self_apply_count') int? selfApplyCount, @JsonKey(name: 'partnership_count') int? partnershipCount, @JsonKey(name: 'approvals_by_status') ApprovalsByStatus? approvalsByStatus, @JsonKey(name: 'approvals_by_submission') ApprovalsBySubmission? approvalsBySubmission, @JsonKey(name: 'last_updated') int? lastUpdated)? $default,{required TResult orElse(),}) {final _that = this; @optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function(@JsonKey(name: 'company_id') String? companyId, @JsonKey(name: 'total_approvals') int? totalApprovals, @JsonKey(name: 'submitted_tenders') int? submittedTenders, @JsonKey(name: 'rejected_tenders') int? rejectedTenders, @JsonKey(name: 'self_apply_count') int? selfApplyCount, @JsonKey(name: 'partnership_count') int? partnershipCount, @JsonKey(name: 'approvals_by_status') ApprovalsByStatus? approvalsByStatus, @JsonKey(name: 'approvals_by_submission') ApprovalsBySubmission? approvalsBySubmission, @JsonKey(name: 'last_updated') int? lastUpdated)? $default,{required TResult orElse(),}) {final _that = this;
switch (_that) { switch (_that) {
case _TenderApprovalsStateData() when $default != null: case _TenderApprovalsStatsData() when $default != null:
return $default(_that.companyId,_that.totalApprovals,_that.submittedTenders,_that.rejectedTenders,_that.selfApplyCount,_that.partnershipCount,_that.approvalsByStatus,_that.approvalsBySubmission,_that.lastUpdated);case _: return $default(_that.companyId,_that.totalApprovals,_that.submittedTenders,_that.rejectedTenders,_that.selfApplyCount,_that.partnershipCount,_that.approvalsByStatus,_that.approvalsBySubmission,_that.lastUpdated);case _:
return orElse(); return orElse();
@@ -208,7 +208,7 @@ return $default(_that.companyId,_that.totalApprovals,_that.submittedTenders,_tha
@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function(@JsonKey(name: 'company_id') String? companyId, @JsonKey(name: 'total_approvals') int? totalApprovals, @JsonKey(name: 'submitted_tenders') int? submittedTenders, @JsonKey(name: 'rejected_tenders') int? rejectedTenders, @JsonKey(name: 'self_apply_count') int? selfApplyCount, @JsonKey(name: 'partnership_count') int? partnershipCount, @JsonKey(name: 'approvals_by_status') ApprovalsByStatus? approvalsByStatus, @JsonKey(name: 'approvals_by_submission') ApprovalsBySubmission? approvalsBySubmission, @JsonKey(name: 'last_updated') int? lastUpdated) $default,) {final _that = this; @optionalTypeArgs TResult when<TResult extends Object?>(TResult Function(@JsonKey(name: 'company_id') String? companyId, @JsonKey(name: 'total_approvals') int? totalApprovals, @JsonKey(name: 'submitted_tenders') int? submittedTenders, @JsonKey(name: 'rejected_tenders') int? rejectedTenders, @JsonKey(name: 'self_apply_count') int? selfApplyCount, @JsonKey(name: 'partnership_count') int? partnershipCount, @JsonKey(name: 'approvals_by_status') ApprovalsByStatus? approvalsByStatus, @JsonKey(name: 'approvals_by_submission') ApprovalsBySubmission? approvalsBySubmission, @JsonKey(name: 'last_updated') int? lastUpdated) $default,) {final _that = this;
switch (_that) { switch (_that) {
case _TenderApprovalsStateData(): case _TenderApprovalsStatsData():
return $default(_that.companyId,_that.totalApprovals,_that.submittedTenders,_that.rejectedTenders,_that.selfApplyCount,_that.partnershipCount,_that.approvalsByStatus,_that.approvalsBySubmission,_that.lastUpdated);case _: return $default(_that.companyId,_that.totalApprovals,_that.submittedTenders,_that.rejectedTenders,_that.selfApplyCount,_that.partnershipCount,_that.approvalsByStatus,_that.approvalsBySubmission,_that.lastUpdated);case _:
throw StateError('Unexpected subclass'); throw StateError('Unexpected subclass');
@@ -228,7 +228,7 @@ return $default(_that.companyId,_that.totalApprovals,_that.submittedTenders,_tha
@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function(@JsonKey(name: 'company_id') String? companyId, @JsonKey(name: 'total_approvals') int? totalApprovals, @JsonKey(name: 'submitted_tenders') int? submittedTenders, @JsonKey(name: 'rejected_tenders') int? rejectedTenders, @JsonKey(name: 'self_apply_count') int? selfApplyCount, @JsonKey(name: 'partnership_count') int? partnershipCount, @JsonKey(name: 'approvals_by_status') ApprovalsByStatus? approvalsByStatus, @JsonKey(name: 'approvals_by_submission') ApprovalsBySubmission? approvalsBySubmission, @JsonKey(name: 'last_updated') int? lastUpdated)? $default,) {final _that = this; @optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function(@JsonKey(name: 'company_id') String? companyId, @JsonKey(name: 'total_approvals') int? totalApprovals, @JsonKey(name: 'submitted_tenders') int? submittedTenders, @JsonKey(name: 'rejected_tenders') int? rejectedTenders, @JsonKey(name: 'self_apply_count') int? selfApplyCount, @JsonKey(name: 'partnership_count') int? partnershipCount, @JsonKey(name: 'approvals_by_status') ApprovalsByStatus? approvalsByStatus, @JsonKey(name: 'approvals_by_submission') ApprovalsBySubmission? approvalsBySubmission, @JsonKey(name: 'last_updated') int? lastUpdated)? $default,) {final _that = this;
switch (_that) { switch (_that) {
case _TenderApprovalsStateData() when $default != null: case _TenderApprovalsStatsData() when $default != null:
return $default(_that.companyId,_that.totalApprovals,_that.submittedTenders,_that.rejectedTenders,_that.selfApplyCount,_that.partnershipCount,_that.approvalsByStatus,_that.approvalsBySubmission,_that.lastUpdated);case _: return $default(_that.companyId,_that.totalApprovals,_that.submittedTenders,_that.rejectedTenders,_that.selfApplyCount,_that.partnershipCount,_that.approvalsByStatus,_that.approvalsBySubmission,_that.lastUpdated);case _:
return null; return null;
@@ -240,9 +240,9 @@ return $default(_that.companyId,_that.totalApprovals,_that.submittedTenders,_tha
/// @nodoc /// @nodoc
@JsonSerializable(explicitToJson: true) @JsonSerializable(explicitToJson: true)
class _TenderApprovalsStateData implements TenderApprovalsStateData { class _TenderApprovalsStatsData implements TenderApprovalsStatsData {
const _TenderApprovalsStateData({@JsonKey(name: 'company_id') required this.companyId, @JsonKey(name: 'total_approvals') required this.totalApprovals, @JsonKey(name: 'submitted_tenders') required this.submittedTenders, @JsonKey(name: 'rejected_tenders') required this.rejectedTenders, @JsonKey(name: 'self_apply_count') required this.selfApplyCount, @JsonKey(name: 'partnership_count') required this.partnershipCount, @JsonKey(name: 'approvals_by_status') required this.approvalsByStatus, @JsonKey(name: 'approvals_by_submission') required this.approvalsBySubmission, @JsonKey(name: 'last_updated') required this.lastUpdated}); const _TenderApprovalsStatsData({@JsonKey(name: 'company_id') required this.companyId, @JsonKey(name: 'total_approvals') required this.totalApprovals, @JsonKey(name: 'submitted_tenders') required this.submittedTenders, @JsonKey(name: 'rejected_tenders') required this.rejectedTenders, @JsonKey(name: 'self_apply_count') required this.selfApplyCount, @JsonKey(name: 'partnership_count') required this.partnershipCount, @JsonKey(name: 'approvals_by_status') required this.approvalsByStatus, @JsonKey(name: 'approvals_by_submission') required this.approvalsBySubmission, @JsonKey(name: 'last_updated') required this.lastUpdated});
factory _TenderApprovalsStateData.fromJson(Map<String, dynamic> json) => _$TenderApprovalsStateDataFromJson(json); factory _TenderApprovalsStatsData.fromJson(Map<String, dynamic> json) => _$TenderApprovalsStatsDataFromJson(json);
@override@JsonKey(name: 'company_id') final String? companyId; @override@JsonKey(name: 'company_id') final String? companyId;
@override@JsonKey(name: 'total_approvals') final int? totalApprovals; @override@JsonKey(name: 'total_approvals') final int? totalApprovals;
@@ -254,20 +254,20 @@ class _TenderApprovalsStateData implements TenderApprovalsStateData {
@override@JsonKey(name: 'approvals_by_submission') final ApprovalsBySubmission? approvalsBySubmission; @override@JsonKey(name: 'approvals_by_submission') final ApprovalsBySubmission? approvalsBySubmission;
@override@JsonKey(name: 'last_updated') final int? lastUpdated; @override@JsonKey(name: 'last_updated') final int? lastUpdated;
/// Create a copy of TenderApprovalsStateData /// Create a copy of TenderApprovalsStatsData
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@override @JsonKey(includeFromJson: false, includeToJson: false) @override @JsonKey(includeFromJson: false, includeToJson: false)
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
_$TenderApprovalsStateDataCopyWith<_TenderApprovalsStateData> get copyWith => __$TenderApprovalsStateDataCopyWithImpl<_TenderApprovalsStateData>(this, _$identity); _$TenderApprovalsStatsDataCopyWith<_TenderApprovalsStatsData> get copyWith => __$TenderApprovalsStatsDataCopyWithImpl<_TenderApprovalsStatsData>(this, _$identity);
@override @override
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
return _$TenderApprovalsStateDataToJson(this, ); return _$TenderApprovalsStatsDataToJson(this, );
} }
@override @override
bool operator ==(Object other) { bool operator ==(Object other) {
return identical(this, other) || (other.runtimeType == runtimeType&&other is _TenderApprovalsStateData&&(identical(other.companyId, companyId) || other.companyId == companyId)&&(identical(other.totalApprovals, totalApprovals) || other.totalApprovals == totalApprovals)&&(identical(other.submittedTenders, submittedTenders) || other.submittedTenders == submittedTenders)&&(identical(other.rejectedTenders, rejectedTenders) || other.rejectedTenders == rejectedTenders)&&(identical(other.selfApplyCount, selfApplyCount) || other.selfApplyCount == selfApplyCount)&&(identical(other.partnershipCount, partnershipCount) || other.partnershipCount == partnershipCount)&&(identical(other.approvalsByStatus, approvalsByStatus) || other.approvalsByStatus == approvalsByStatus)&&(identical(other.approvalsBySubmission, approvalsBySubmission) || other.approvalsBySubmission == approvalsBySubmission)&&(identical(other.lastUpdated, lastUpdated) || other.lastUpdated == lastUpdated)); return identical(this, other) || (other.runtimeType == runtimeType&&other is _TenderApprovalsStatsData&&(identical(other.companyId, companyId) || other.companyId == companyId)&&(identical(other.totalApprovals, totalApprovals) || other.totalApprovals == totalApprovals)&&(identical(other.submittedTenders, submittedTenders) || other.submittedTenders == submittedTenders)&&(identical(other.rejectedTenders, rejectedTenders) || other.rejectedTenders == rejectedTenders)&&(identical(other.selfApplyCount, selfApplyCount) || other.selfApplyCount == selfApplyCount)&&(identical(other.partnershipCount, partnershipCount) || other.partnershipCount == partnershipCount)&&(identical(other.approvalsByStatus, approvalsByStatus) || other.approvalsByStatus == approvalsByStatus)&&(identical(other.approvalsBySubmission, approvalsBySubmission) || other.approvalsBySubmission == approvalsBySubmission)&&(identical(other.lastUpdated, lastUpdated) || other.lastUpdated == lastUpdated));
} }
@JsonKey(includeFromJson: false, includeToJson: false) @JsonKey(includeFromJson: false, includeToJson: false)
@@ -276,15 +276,15 @@ int get hashCode => Object.hash(runtimeType,companyId,totalApprovals,submittedTe
@override @override
String toString() { String toString() {
return 'TenderApprovalsStateData(companyId: $companyId, totalApprovals: $totalApprovals, submittedTenders: $submittedTenders, rejectedTenders: $rejectedTenders, selfApplyCount: $selfApplyCount, partnershipCount: $partnershipCount, approvalsByStatus: $approvalsByStatus, approvalsBySubmission: $approvalsBySubmission, lastUpdated: $lastUpdated)'; return 'TenderApprovalsStatsData(companyId: $companyId, totalApprovals: $totalApprovals, submittedTenders: $submittedTenders, rejectedTenders: $rejectedTenders, selfApplyCount: $selfApplyCount, partnershipCount: $partnershipCount, approvalsByStatus: $approvalsByStatus, approvalsBySubmission: $approvalsBySubmission, lastUpdated: $lastUpdated)';
} }
} }
/// @nodoc /// @nodoc
abstract mixin class _$TenderApprovalsStateDataCopyWith<$Res> implements $TenderApprovalsStateDataCopyWith<$Res> { abstract mixin class _$TenderApprovalsStatsDataCopyWith<$Res> implements $TenderApprovalsStatsDataCopyWith<$Res> {
factory _$TenderApprovalsStateDataCopyWith(_TenderApprovalsStateData value, $Res Function(_TenderApprovalsStateData) _then) = __$TenderApprovalsStateDataCopyWithImpl; factory _$TenderApprovalsStatsDataCopyWith(_TenderApprovalsStatsData value, $Res Function(_TenderApprovalsStatsData) _then) = __$TenderApprovalsStatsDataCopyWithImpl;
@override @useResult @override @useResult
$Res call({ $Res call({
@JsonKey(name: 'company_id') String? companyId,@JsonKey(name: 'total_approvals') int? totalApprovals,@JsonKey(name: 'submitted_tenders') int? submittedTenders,@JsonKey(name: 'rejected_tenders') int? rejectedTenders,@JsonKey(name: 'self_apply_count') int? selfApplyCount,@JsonKey(name: 'partnership_count') int? partnershipCount,@JsonKey(name: 'approvals_by_status') ApprovalsByStatus? approvalsByStatus,@JsonKey(name: 'approvals_by_submission') ApprovalsBySubmission? approvalsBySubmission,@JsonKey(name: 'last_updated') int? lastUpdated @JsonKey(name: 'company_id') String? companyId,@JsonKey(name: 'total_approvals') int? totalApprovals,@JsonKey(name: 'submitted_tenders') int? submittedTenders,@JsonKey(name: 'rejected_tenders') int? rejectedTenders,@JsonKey(name: 'self_apply_count') int? selfApplyCount,@JsonKey(name: 'partnership_count') int? partnershipCount,@JsonKey(name: 'approvals_by_status') ApprovalsByStatus? approvalsByStatus,@JsonKey(name: 'approvals_by_submission') ApprovalsBySubmission? approvalsBySubmission,@JsonKey(name: 'last_updated') int? lastUpdated
@@ -295,17 +295,17 @@ $Res call({
} }
/// @nodoc /// @nodoc
class __$TenderApprovalsStateDataCopyWithImpl<$Res> class __$TenderApprovalsStatsDataCopyWithImpl<$Res>
implements _$TenderApprovalsStateDataCopyWith<$Res> { implements _$TenderApprovalsStatsDataCopyWith<$Res> {
__$TenderApprovalsStateDataCopyWithImpl(this._self, this._then); __$TenderApprovalsStatsDataCopyWithImpl(this._self, this._then);
final _TenderApprovalsStateData _self; final _TenderApprovalsStatsData _self;
final $Res Function(_TenderApprovalsStateData) _then; final $Res Function(_TenderApprovalsStatsData) _then;
/// Create a copy of TenderApprovalsStateData /// Create a copy of TenderApprovalsStatsData
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@override @pragma('vm:prefer-inline') $Res call({Object? companyId = freezed,Object? totalApprovals = freezed,Object? submittedTenders = freezed,Object? rejectedTenders = freezed,Object? selfApplyCount = freezed,Object? partnershipCount = freezed,Object? approvalsByStatus = freezed,Object? approvalsBySubmission = freezed,Object? lastUpdated = freezed,}) { @override @pragma('vm:prefer-inline') $Res call({Object? companyId = freezed,Object? totalApprovals = freezed,Object? submittedTenders = freezed,Object? rejectedTenders = freezed,Object? selfApplyCount = freezed,Object? partnershipCount = freezed,Object? approvalsByStatus = freezed,Object? approvalsBySubmission = freezed,Object? lastUpdated = freezed,}) {
return _then(_TenderApprovalsStateData( return _then(_TenderApprovalsStatsData(
companyId: freezed == companyId ? _self.companyId : companyId // ignore: cast_nullable_to_non_nullable companyId: freezed == companyId ? _self.companyId : companyId // ignore: cast_nullable_to_non_nullable
as String?,totalApprovals: freezed == totalApprovals ? _self.totalApprovals : totalApprovals // ignore: cast_nullable_to_non_nullable as String?,totalApprovals: freezed == totalApprovals ? _self.totalApprovals : totalApprovals // ignore: cast_nullable_to_non_nullable
as int?,submittedTenders: freezed == submittedTenders ? _self.submittedTenders : submittedTenders // ignore: cast_nullable_to_non_nullable as int?,submittedTenders: freezed == submittedTenders ? _self.submittedTenders : submittedTenders // ignore: cast_nullable_to_non_nullable
@@ -319,7 +319,7 @@ as int?,
)); ));
} }
/// Create a copy of TenderApprovalsStateData /// Create a copy of TenderApprovalsStatsData
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@override @override
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
@@ -331,7 +331,7 @@ $ApprovalsByStatusCopyWith<$Res>? get approvalsByStatus {
return $ApprovalsByStatusCopyWith<$Res>(_self.approvalsByStatus!, (value) { return $ApprovalsByStatusCopyWith<$Res>(_self.approvalsByStatus!, (value) {
return _then(_self.copyWith(approvalsByStatus: value)); return _then(_self.copyWith(approvalsByStatus: value));
}); });
}/// Create a copy of TenderApprovalsStateData }/// Create a copy of TenderApprovalsStatsData
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@override @override
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
@@ -1,14 +1,14 @@
// GENERATED CODE - DO NOT MODIFY BY HAND // GENERATED CODE - DO NOT MODIFY BY HAND
part of 'tender_approvals_state_data.dart'; part of 'tender_approvals_stats_data.dart';
// ************************************************************************** // **************************************************************************
// JsonSerializableGenerator // JsonSerializableGenerator
// ************************************************************************** // **************************************************************************
_TenderApprovalsStateData _$TenderApprovalsStateDataFromJson( _TenderApprovalsStatsData _$TenderApprovalsStatsDataFromJson(
Map<String, dynamic> json, Map<String, dynamic> json,
) => _TenderApprovalsStateData( ) => _TenderApprovalsStatsData(
companyId: json['company_id'] as String?, companyId: json['company_id'] as String?,
totalApprovals: (json['total_approvals'] as num?)?.toInt(), totalApprovals: (json['total_approvals'] as num?)?.toInt(),
submittedTenders: (json['submitted_tenders'] as num?)?.toInt(), submittedTenders: (json['submitted_tenders'] as num?)?.toInt(),
@@ -30,8 +30,8 @@ _TenderApprovalsStateData _$TenderApprovalsStateDataFromJson(
lastUpdated: (json['last_updated'] as num?)?.toInt(), lastUpdated: (json['last_updated'] as num?)?.toInt(),
); );
Map<String, dynamic> _$TenderApprovalsStateDataToJson( Map<String, dynamic> _$TenderApprovalsStatsDataToJson(
_TenderApprovalsStateData instance, _TenderApprovalsStatsData instance,
) => <String, dynamic>{ ) => <String, dynamic>{
'company_id': instance.companyId, 'company_id': instance.companyId,
'total_approvals': instance.totalApprovals, 'total_approvals': instance.totalApprovals,
@@ -0,0 +1,23 @@
// ignore_for_file: invalid_annotation_target
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:tm_app/data/services/model/error/error_model.dart';
import 'package:tm_app/data/services/model/tender_approvals_stats_data/tender_approvals_stats_data.dart';
part 'tender_approvals_stats_response.freezed.dart';
part 'tender_approvals_stats_response.g.dart';
@freezed
abstract class TenderApprovalsStatsResponse
with _$TenderApprovalsStatsResponse {
@JsonSerializable(explicitToJson: true)
const factory TenderApprovalsStatsResponse({
@JsonKey(name: 'success') required bool? success,
@JsonKey(name: 'message') required String? message,
@JsonKey(name: 'error') ErrorModel? error,
@JsonKey(name: 'data') TenderApprovalsStatsData? data,
}) = _TenderApprovalsStatsResponse;
factory TenderApprovalsStatsResponse.fromJson(Map<String, dynamic> json) =>
_$TenderApprovalsStatsResponseFromJson(json);
}
@@ -3,7 +3,7 @@
// ignore_for_file: type=lint // ignore_for_file: type=lint
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
part of 'tender_approvals_state_response.dart'; part of 'tender_approvals_stats_response.dart';
// ************************************************************************** // **************************************************************************
// FreezedGenerator // FreezedGenerator
@@ -13,22 +13,22 @@ part of 'tender_approvals_state_response.dart';
T _$identity<T>(T value) => value; T _$identity<T>(T value) => value;
/// @nodoc /// @nodoc
mixin _$TenderApprovalsStateResponse { mixin _$TenderApprovalsStatsResponse {
@JsonKey(name: 'success') bool? get success;@JsonKey(name: 'message') String? get message;@JsonKey(name: 'error') ErrorModel? get error;@JsonKey(name: 'data') TenderApprovalsStateData? get data; @JsonKey(name: 'success') bool? get success;@JsonKey(name: 'message') String? get message;@JsonKey(name: 'error') ErrorModel? get error;@JsonKey(name: 'data') TenderApprovalsStatsData? get data;
/// Create a copy of TenderApprovalsStateResponse /// Create a copy of TenderApprovalsStatsResponse
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false) @JsonKey(includeFromJson: false, includeToJson: false)
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
$TenderApprovalsStateResponseCopyWith<TenderApprovalsStateResponse> get copyWith => _$TenderApprovalsStateResponseCopyWithImpl<TenderApprovalsStateResponse>(this as TenderApprovalsStateResponse, _$identity); $TenderApprovalsStatsResponseCopyWith<TenderApprovalsStatsResponse> get copyWith => _$TenderApprovalsStatsResponseCopyWithImpl<TenderApprovalsStatsResponse>(this as TenderApprovalsStatsResponse, _$identity);
/// Serializes this TenderApprovalsStateResponse to a JSON map. /// Serializes this TenderApprovalsStatsResponse to a JSON map.
Map<String, dynamic> toJson(); Map<String, dynamic> toJson();
@override @override
bool operator ==(Object other) { bool operator ==(Object other) {
return identical(this, other) || (other.runtimeType == runtimeType&&other is TenderApprovalsStateResponse&&(identical(other.success, success) || other.success == success)&&(identical(other.message, message) || other.message == message)&&(identical(other.error, error) || other.error == error)&&(identical(other.data, data) || other.data == data)); return identical(this, other) || (other.runtimeType == runtimeType&&other is TenderApprovalsStatsResponse&&(identical(other.success, success) || other.success == success)&&(identical(other.message, message) || other.message == message)&&(identical(other.error, error) || other.error == error)&&(identical(other.data, data) || other.data == data));
} }
@JsonKey(includeFromJson: false, includeToJson: false) @JsonKey(includeFromJson: false, includeToJson: false)
@@ -37,33 +37,33 @@ int get hashCode => Object.hash(runtimeType,success,message,error,data);
@override @override
String toString() { String toString() {
return 'TenderApprovalsStateResponse(success: $success, message: $message, error: $error, data: $data)'; return 'TenderApprovalsStatsResponse(success: $success, message: $message, error: $error, data: $data)';
} }
} }
/// @nodoc /// @nodoc
abstract mixin class $TenderApprovalsStateResponseCopyWith<$Res> { abstract mixin class $TenderApprovalsStatsResponseCopyWith<$Res> {
factory $TenderApprovalsStateResponseCopyWith(TenderApprovalsStateResponse value, $Res Function(TenderApprovalsStateResponse) _then) = _$TenderApprovalsStateResponseCopyWithImpl; factory $TenderApprovalsStatsResponseCopyWith(TenderApprovalsStatsResponse value, $Res Function(TenderApprovalsStatsResponse) _then) = _$TenderApprovalsStatsResponseCopyWithImpl;
@useResult @useResult
$Res call({ $Res call({
@JsonKey(name: 'success') bool? success,@JsonKey(name: 'message') String? message,@JsonKey(name: 'error') ErrorModel? error,@JsonKey(name: 'data') TenderApprovalsStateData? data @JsonKey(name: 'success') bool? success,@JsonKey(name: 'message') String? message,@JsonKey(name: 'error') ErrorModel? error,@JsonKey(name: 'data') TenderApprovalsStatsData? data
}); });
$ErrorModelCopyWith<$Res>? get error;$TenderApprovalsStateDataCopyWith<$Res>? get data; $ErrorModelCopyWith<$Res>? get error;$TenderApprovalsStatsDataCopyWith<$Res>? get data;
} }
/// @nodoc /// @nodoc
class _$TenderApprovalsStateResponseCopyWithImpl<$Res> class _$TenderApprovalsStatsResponseCopyWithImpl<$Res>
implements $TenderApprovalsStateResponseCopyWith<$Res> { implements $TenderApprovalsStatsResponseCopyWith<$Res> {
_$TenderApprovalsStateResponseCopyWithImpl(this._self, this._then); _$TenderApprovalsStatsResponseCopyWithImpl(this._self, this._then);
final TenderApprovalsStateResponse _self; final TenderApprovalsStatsResponse _self;
final $Res Function(TenderApprovalsStateResponse) _then; final $Res Function(TenderApprovalsStatsResponse) _then;
/// Create a copy of TenderApprovalsStateResponse /// Create a copy of TenderApprovalsStatsResponse
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline') @override $Res call({Object? success = freezed,Object? message = freezed,Object? error = freezed,Object? data = freezed,}) { @pragma('vm:prefer-inline') @override $Res call({Object? success = freezed,Object? message = freezed,Object? error = freezed,Object? data = freezed,}) {
return _then(_self.copyWith( return _then(_self.copyWith(
@@ -71,10 +71,10 @@ success: freezed == success ? _self.success : success // ignore: cast_nullable_t
as bool?,message: freezed == message ? _self.message : message // ignore: cast_nullable_to_non_nullable as bool?,message: freezed == message ? _self.message : message // ignore: cast_nullable_to_non_nullable
as String?,error: freezed == error ? _self.error : error // ignore: cast_nullable_to_non_nullable as String?,error: freezed == error ? _self.error : error // ignore: cast_nullable_to_non_nullable
as ErrorModel?,data: freezed == data ? _self.data : data // ignore: cast_nullable_to_non_nullable as ErrorModel?,data: freezed == data ? _self.data : data // ignore: cast_nullable_to_non_nullable
as TenderApprovalsStateData?, as TenderApprovalsStatsData?,
)); ));
} }
/// Create a copy of TenderApprovalsStateResponse /// Create a copy of TenderApprovalsStatsResponse
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@override @override
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
@@ -86,24 +86,24 @@ $ErrorModelCopyWith<$Res>? get error {
return $ErrorModelCopyWith<$Res>(_self.error!, (value) { return $ErrorModelCopyWith<$Res>(_self.error!, (value) {
return _then(_self.copyWith(error: value)); return _then(_self.copyWith(error: value));
}); });
}/// Create a copy of TenderApprovalsStateResponse }/// Create a copy of TenderApprovalsStatsResponse
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@override @override
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
$TenderApprovalsStateDataCopyWith<$Res>? get data { $TenderApprovalsStatsDataCopyWith<$Res>? get data {
if (_self.data == null) { if (_self.data == null) {
return null; return null;
} }
return $TenderApprovalsStateDataCopyWith<$Res>(_self.data!, (value) { return $TenderApprovalsStatsDataCopyWith<$Res>(_self.data!, (value) {
return _then(_self.copyWith(data: value)); return _then(_self.copyWith(data: value));
}); });
} }
} }
/// Adds pattern-matching-related methods to [TenderApprovalsStateResponse]. /// Adds pattern-matching-related methods to [TenderApprovalsStatsResponse].
extension TenderApprovalsStateResponsePatterns on TenderApprovalsStateResponse { extension TenderApprovalsStatsResponsePatterns on TenderApprovalsStatsResponse {
/// A variant of `map` that fallback to returning `orElse`. /// A variant of `map` that fallback to returning `orElse`.
/// ///
/// It is equivalent to doing: /// It is equivalent to doing:
@@ -116,10 +116,10 @@ extension TenderApprovalsStateResponsePatterns on TenderApprovalsStateResponse {
/// } /// }
/// ``` /// ```
@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _TenderApprovalsStateResponse value)? $default,{required TResult orElse(),}){ @optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _TenderApprovalsStatsResponse value)? $default,{required TResult orElse(),}){
final _that = this; final _that = this;
switch (_that) { switch (_that) {
case _TenderApprovalsStateResponse() when $default != null: case _TenderApprovalsStatsResponse() when $default != null:
return $default(_that);case _: return $default(_that);case _:
return orElse(); return orElse();
@@ -138,10 +138,10 @@ return $default(_that);case _:
/// } /// }
/// ``` /// ```
@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _TenderApprovalsStateResponse value) $default,){ @optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _TenderApprovalsStatsResponse value) $default,){
final _that = this; final _that = this;
switch (_that) { switch (_that) {
case _TenderApprovalsStateResponse(): case _TenderApprovalsStatsResponse():
return $default(_that);case _: return $default(_that);case _:
throw StateError('Unexpected subclass'); throw StateError('Unexpected subclass');
@@ -159,10 +159,10 @@ return $default(_that);case _:
/// } /// }
/// ``` /// ```
@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _TenderApprovalsStateResponse value)? $default,){ @optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _TenderApprovalsStatsResponse value)? $default,){
final _that = this; final _that = this;
switch (_that) { switch (_that) {
case _TenderApprovalsStateResponse() when $default != null: case _TenderApprovalsStatsResponse() when $default != null:
return $default(_that);case _: return $default(_that);case _:
return null; return null;
@@ -180,9 +180,9 @@ return $default(_that);case _:
/// } /// }
/// ``` /// ```
@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function(@JsonKey(name: 'success') bool? success, @JsonKey(name: 'message') String? message, @JsonKey(name: 'error') ErrorModel? error, @JsonKey(name: 'data') TenderApprovalsStateData? data)? $default,{required TResult orElse(),}) {final _that = this; @optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function(@JsonKey(name: 'success') bool? success, @JsonKey(name: 'message') String? message, @JsonKey(name: 'error') ErrorModel? error, @JsonKey(name: 'data') TenderApprovalsStatsData? data)? $default,{required TResult orElse(),}) {final _that = this;
switch (_that) { switch (_that) {
case _TenderApprovalsStateResponse() when $default != null: case _TenderApprovalsStatsResponse() when $default != null:
return $default(_that.success,_that.message,_that.error,_that.data);case _: return $default(_that.success,_that.message,_that.error,_that.data);case _:
return orElse(); return orElse();
@@ -201,9 +201,9 @@ return $default(_that.success,_that.message,_that.error,_that.data);case _:
/// } /// }
/// ``` /// ```
@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function(@JsonKey(name: 'success') bool? success, @JsonKey(name: 'message') String? message, @JsonKey(name: 'error') ErrorModel? error, @JsonKey(name: 'data') TenderApprovalsStateData? data) $default,) {final _that = this; @optionalTypeArgs TResult when<TResult extends Object?>(TResult Function(@JsonKey(name: 'success') bool? success, @JsonKey(name: 'message') String? message, @JsonKey(name: 'error') ErrorModel? error, @JsonKey(name: 'data') TenderApprovalsStatsData? data) $default,) {final _that = this;
switch (_that) { switch (_that) {
case _TenderApprovalsStateResponse(): case _TenderApprovalsStatsResponse():
return $default(_that.success,_that.message,_that.error,_that.data);case _: return $default(_that.success,_that.message,_that.error,_that.data);case _:
throw StateError('Unexpected subclass'); throw StateError('Unexpected subclass');
@@ -221,9 +221,9 @@ return $default(_that.success,_that.message,_that.error,_that.data);case _:
/// } /// }
/// ``` /// ```
@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function(@JsonKey(name: 'success') bool? success, @JsonKey(name: 'message') String? message, @JsonKey(name: 'error') ErrorModel? error, @JsonKey(name: 'data') TenderApprovalsStateData? data)? $default,) {final _that = this; @optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function(@JsonKey(name: 'success') bool? success, @JsonKey(name: 'message') String? message, @JsonKey(name: 'error') ErrorModel? error, @JsonKey(name: 'data') TenderApprovalsStatsData? data)? $default,) {final _that = this;
switch (_that) { switch (_that) {
case _TenderApprovalsStateResponse() when $default != null: case _TenderApprovalsStatsResponse() when $default != null:
return $default(_that.success,_that.message,_that.error,_that.data);case _: return $default(_that.success,_that.message,_that.error,_that.data);case _:
return null; return null;
@@ -235,29 +235,29 @@ return $default(_that.success,_that.message,_that.error,_that.data);case _:
/// @nodoc /// @nodoc
@JsonSerializable(explicitToJson: true) @JsonSerializable(explicitToJson: true)
class _TenderApprovalsStateResponse implements TenderApprovalsStateResponse { class _TenderApprovalsStatsResponse implements TenderApprovalsStatsResponse {
const _TenderApprovalsStateResponse({@JsonKey(name: 'success') required this.success, @JsonKey(name: 'message') required this.message, @JsonKey(name: 'error') this.error, @JsonKey(name: 'data') this.data}); const _TenderApprovalsStatsResponse({@JsonKey(name: 'success') required this.success, @JsonKey(name: 'message') required this.message, @JsonKey(name: 'error') this.error, @JsonKey(name: 'data') this.data});
factory _TenderApprovalsStateResponse.fromJson(Map<String, dynamic> json) => _$TenderApprovalsStateResponseFromJson(json); factory _TenderApprovalsStatsResponse.fromJson(Map<String, dynamic> json) => _$TenderApprovalsStatsResponseFromJson(json);
@override@JsonKey(name: 'success') final bool? success; @override@JsonKey(name: 'success') final bool? success;
@override@JsonKey(name: 'message') final String? message; @override@JsonKey(name: 'message') final String? message;
@override@JsonKey(name: 'error') final ErrorModel? error; @override@JsonKey(name: 'error') final ErrorModel? error;
@override@JsonKey(name: 'data') final TenderApprovalsStateData? data; @override@JsonKey(name: 'data') final TenderApprovalsStatsData? data;
/// Create a copy of TenderApprovalsStateResponse /// Create a copy of TenderApprovalsStatsResponse
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@override @JsonKey(includeFromJson: false, includeToJson: false) @override @JsonKey(includeFromJson: false, includeToJson: false)
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
_$TenderApprovalsStateResponseCopyWith<_TenderApprovalsStateResponse> get copyWith => __$TenderApprovalsStateResponseCopyWithImpl<_TenderApprovalsStateResponse>(this, _$identity); _$TenderApprovalsStatsResponseCopyWith<_TenderApprovalsStatsResponse> get copyWith => __$TenderApprovalsStatsResponseCopyWithImpl<_TenderApprovalsStatsResponse>(this, _$identity);
@override @override
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
return _$TenderApprovalsStateResponseToJson(this, ); return _$TenderApprovalsStatsResponseToJson(this, );
} }
@override @override
bool operator ==(Object other) { bool operator ==(Object other) {
return identical(this, other) || (other.runtimeType == runtimeType&&other is _TenderApprovalsStateResponse&&(identical(other.success, success) || other.success == success)&&(identical(other.message, message) || other.message == message)&&(identical(other.error, error) || other.error == error)&&(identical(other.data, data) || other.data == data)); return identical(this, other) || (other.runtimeType == runtimeType&&other is _TenderApprovalsStatsResponse&&(identical(other.success, success) || other.success == success)&&(identical(other.message, message) || other.message == message)&&(identical(other.error, error) || other.error == error)&&(identical(other.data, data) || other.data == data));
} }
@JsonKey(includeFromJson: false, includeToJson: false) @JsonKey(includeFromJson: false, includeToJson: false)
@@ -266,45 +266,45 @@ int get hashCode => Object.hash(runtimeType,success,message,error,data);
@override @override
String toString() { String toString() {
return 'TenderApprovalsStateResponse(success: $success, message: $message, error: $error, data: $data)'; return 'TenderApprovalsStatsResponse(success: $success, message: $message, error: $error, data: $data)';
} }
} }
/// @nodoc /// @nodoc
abstract mixin class _$TenderApprovalsStateResponseCopyWith<$Res> implements $TenderApprovalsStateResponseCopyWith<$Res> { abstract mixin class _$TenderApprovalsStatsResponseCopyWith<$Res> implements $TenderApprovalsStatsResponseCopyWith<$Res> {
factory _$TenderApprovalsStateResponseCopyWith(_TenderApprovalsStateResponse value, $Res Function(_TenderApprovalsStateResponse) _then) = __$TenderApprovalsStateResponseCopyWithImpl; factory _$TenderApprovalsStatsResponseCopyWith(_TenderApprovalsStatsResponse value, $Res Function(_TenderApprovalsStatsResponse) _then) = __$TenderApprovalsStatsResponseCopyWithImpl;
@override @useResult @override @useResult
$Res call({ $Res call({
@JsonKey(name: 'success') bool? success,@JsonKey(name: 'message') String? message,@JsonKey(name: 'error') ErrorModel? error,@JsonKey(name: 'data') TenderApprovalsStateData? data @JsonKey(name: 'success') bool? success,@JsonKey(name: 'message') String? message,@JsonKey(name: 'error') ErrorModel? error,@JsonKey(name: 'data') TenderApprovalsStatsData? data
}); });
@override $ErrorModelCopyWith<$Res>? get error;@override $TenderApprovalsStateDataCopyWith<$Res>? get data; @override $ErrorModelCopyWith<$Res>? get error;@override $TenderApprovalsStatsDataCopyWith<$Res>? get data;
} }
/// @nodoc /// @nodoc
class __$TenderApprovalsStateResponseCopyWithImpl<$Res> class __$TenderApprovalsStatsResponseCopyWithImpl<$Res>
implements _$TenderApprovalsStateResponseCopyWith<$Res> { implements _$TenderApprovalsStatsResponseCopyWith<$Res> {
__$TenderApprovalsStateResponseCopyWithImpl(this._self, this._then); __$TenderApprovalsStatsResponseCopyWithImpl(this._self, this._then);
final _TenderApprovalsStateResponse _self; final _TenderApprovalsStatsResponse _self;
final $Res Function(_TenderApprovalsStateResponse) _then; final $Res Function(_TenderApprovalsStatsResponse) _then;
/// Create a copy of TenderApprovalsStateResponse /// Create a copy of TenderApprovalsStatsResponse
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@override @pragma('vm:prefer-inline') $Res call({Object? success = freezed,Object? message = freezed,Object? error = freezed,Object? data = freezed,}) { @override @pragma('vm:prefer-inline') $Res call({Object? success = freezed,Object? message = freezed,Object? error = freezed,Object? data = freezed,}) {
return _then(_TenderApprovalsStateResponse( return _then(_TenderApprovalsStatsResponse(
success: freezed == success ? _self.success : success // ignore: cast_nullable_to_non_nullable success: freezed == success ? _self.success : success // ignore: cast_nullable_to_non_nullable
as bool?,message: freezed == message ? _self.message : message // ignore: cast_nullable_to_non_nullable as bool?,message: freezed == message ? _self.message : message // ignore: cast_nullable_to_non_nullable
as String?,error: freezed == error ? _self.error : error // ignore: cast_nullable_to_non_nullable as String?,error: freezed == error ? _self.error : error // ignore: cast_nullable_to_non_nullable
as ErrorModel?,data: freezed == data ? _self.data : data // ignore: cast_nullable_to_non_nullable as ErrorModel?,data: freezed == data ? _self.data : data // ignore: cast_nullable_to_non_nullable
as TenderApprovalsStateData?, as TenderApprovalsStatsData?,
)); ));
} }
/// Create a copy of TenderApprovalsStateResponse /// Create a copy of TenderApprovalsStatsResponse
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@override @override
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
@@ -316,16 +316,16 @@ $ErrorModelCopyWith<$Res>? get error {
return $ErrorModelCopyWith<$Res>(_self.error!, (value) { return $ErrorModelCopyWith<$Res>(_self.error!, (value) {
return _then(_self.copyWith(error: value)); return _then(_self.copyWith(error: value));
}); });
}/// Create a copy of TenderApprovalsStateResponse }/// Create a copy of TenderApprovalsStatsResponse
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@override @override
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
$TenderApprovalsStateDataCopyWith<$Res>? get data { $TenderApprovalsStatsDataCopyWith<$Res>? get data {
if (_self.data == null) { if (_self.data == null) {
return null; return null;
} }
return $TenderApprovalsStateDataCopyWith<$Res>(_self.data!, (value) { return $TenderApprovalsStatsDataCopyWith<$Res>(_self.data!, (value) {
return _then(_self.copyWith(data: value)); return _then(_self.copyWith(data: value));
}); });
} }
@@ -1,14 +1,14 @@
// GENERATED CODE - DO NOT MODIFY BY HAND // GENERATED CODE - DO NOT MODIFY BY HAND
part of 'tender_approvals_state_response.dart'; part of 'tender_approvals_stats_response.dart';
// ************************************************************************** // **************************************************************************
// JsonSerializableGenerator // JsonSerializableGenerator
// ************************************************************************** // **************************************************************************
_TenderApprovalsStateResponse _$TenderApprovalsStateResponseFromJson( _TenderApprovalsStatsResponse _$TenderApprovalsStatsResponseFromJson(
Map<String, dynamic> json, Map<String, dynamic> json,
) => _TenderApprovalsStateResponse( ) => _TenderApprovalsStatsResponse(
success: json['success'] as bool?, success: json['success'] as bool?,
message: json['message'] as String?, message: json['message'] as String?,
error: error:
@@ -18,13 +18,13 @@ _TenderApprovalsStateResponse _$TenderApprovalsStateResponseFromJson(
data: data:
json['data'] == null json['data'] == null
? null ? null
: TenderApprovalsStateData.fromJson( : TenderApprovalsStatsData.fromJson(
json['data'] as Map<String, dynamic>, json['data'] as Map<String, dynamic>,
), ),
); );
Map<String, dynamic> _$TenderApprovalsStateResponseToJson( Map<String, dynamic> _$TenderApprovalsStatsResponseToJson(
_TenderApprovalsStateResponse instance, _TenderApprovalsStatsResponse instance,
) => <String, dynamic>{ ) => <String, dynamic>{
'success': instance.success, 'success': instance.success,
'message': instance.message, 'message': instance.message,
@@ -1,6 +1,5 @@
import 'package:tm_app/core/utils/result.dart'; import 'package:tm_app/core/utils/result.dart';
import 'package:tm_app/data/services/api/your_tenders_api.dart'; import 'package:tm_app/data/services/api/your_tenders_api.dart';
import 'package:tm_app/data/services/model/liked_tenders_response/liked_tenders_response.dart';
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 '../../../core/network/network_manager.dart'; import '../../../core/network/network_manager.dart';
@@ -12,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 {
@@ -48,25 +27,4 @@ class YourTendersService {
); );
return result; return result;
} }
Future<Result<LikedTendersResponse>> getTendersFeedback({
required int limit,
required int offset,
required String feedbackType,
required String dateFrom,
required String dateTo,
}) async {
final result = await _networkManager.makeRequest(
YourTendersApi.getTendersFeedback(
limit: limit,
offset: offset,
feedbackType: feedbackType,
dateFrom: dateFrom,
dateTo: dateTo,
),
(json) => LikedTendersResponse.fromJson(json),
method: 'GET',
);
return result;
}
} }
+4 -4
View File
@@ -3,7 +3,7 @@ import 'package:tm_app/core/utils/result.dart';
import 'package:tm_app/data/services/model/feedback_stats/feedback_stats.dart'; import 'package:tm_app/data/services/model/feedback_stats/feedback_stats.dart';
import 'package:tm_app/data/services/model/recommended_tenders_response/recommended_tenders_response.dart'; import 'package:tm_app/data/services/model/recommended_tenders_response/recommended_tenders_response.dart';
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/data/services/model/tender_approvals_state_response/tender_approvals_state_response.dart'; import 'package:tm_app/data/services/model/tender_approvals_stats_response/tender_approvals_stats_response.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 '../data/repositories/home_repository.dart'; import '../data/repositories/home_repository.dart';
@@ -29,7 +29,7 @@ class HomeViewModel with ChangeNotifier {
HomeResponseModel? get homeResponse => _homeResponse; HomeResponseModel? get homeResponse => _homeResponse;
RecommendedTendersResponse? _recommendedTendersResponse; RecommendedTendersResponse? _recommendedTendersResponse;
TenderApprovalsStateResponse? tenderApprovalsStateResponse; TenderApprovalsStatsResponse? tenderApprovalsStateResponse;
FeedbackStats? feedbackStats; FeedbackStats? feedbackStats;
final List<TenderData> _tenders = []; final List<TenderData> _tenders = [];
final int _pageSize = 10; final int _pageSize = 10;
@@ -161,10 +161,10 @@ class HomeViewModel with ChangeNotifier {
final result = await _homeRepository.getTendersApprovalsStats(); final result = await _homeRepository.getTendersApprovalsStats();
switch (result) { switch (result) {
case Ok<TenderApprovalsStateResponse>(): case Ok<TenderApprovalsStatsResponse>():
tenderApprovalsStateResponse = result.value; tenderApprovalsStateResponse = result.value;
break; break;
case Error<TenderApprovalsStateResponse>(): case Error<TenderApprovalsStatsResponse>():
_errorMessage = result.error.toString(); _errorMessage = result.error.toString();
break; break;
} }
+28 -13
View File
@@ -7,7 +7,9 @@ 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/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';
@@ -83,9 +85,14 @@ class LikedTendersViewModel with ChangeNotifier {
errorMessage = null; errorMessage = null;
final result = await _likedTendersRepository.getLikedTenders( final requestModel = TenderFeedbackRequestModel(
offset: _offset, offset: _offset,
limit: _limit, limit: _limit,
feedbackType: 'like',
);
final result = await _likedTendersRepository.getLikedTenders(
requestModel: requestModel,
); );
switch (result) { switch (result) {
@@ -239,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({
@@ -262,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;
@@ -277,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,
@@ -292,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,
); );
@@ -328,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;
@@ -343,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,
@@ -358,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) {
+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/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
); );
+19 -6
View File
@@ -6,7 +6,10 @@ 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';
class YourTendersViewModel with ChangeNotifier { class YourTendersViewModel with ChangeNotifier {
final YourTendersRepository yourTendersRepository; final YourTendersRepository yourTendersRepository;
@@ -132,14 +135,18 @@ class YourTendersViewModel with ChangeNotifier {
} }
notifyListeners(); notifyListeners();
final result = await yourTendersRepository.getTendersFeedback( final requestModel = TenderFeedbackRequestModel(
limit: _limit,
offset: _offset, offset: _offset,
limit: _limit,
feedbackType: _currentFeedbackType ?? feedbackType, feedbackType: _currentFeedbackType ?? feedbackType,
dateFrom: startDateUnix, dateFrom: startDateUnix,
dateTo: endDateUnix, dateTo: endDateUnix,
); );
final result = await yourTendersRepository.getTendersFeedback(
requestModel: requestModel,
);
switch (result) { switch (result) {
case Ok<LikedTendersResponse>(): case Ok<LikedTendersResponse>():
final incoming = result.value; final incoming = result.value;
@@ -196,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,
@@ -267,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,
@@ -275,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,8 @@ 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 '../../../core/constants/tender_submision_mode.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,10 +49,12 @@ 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:
TenderSubmissionMode.selfApply.value,
); );
} else { } else {
showModalBottomSheet( showModalBottomSheet(
@@ -95,7 +99,7 @@ class TenderDetailActions extends StatelessWidget {
onPressed: () { onPressed: () {
viewModel.rejectTenderApproval( viewModel.rejectTenderApproval(
tenderId: detail.id!, tenderId: detail.id!,
submissionMode: 'self-apply', submissionMode: TenderSubmissionMode.selfApply.value,
); );
}, },
); );
@@ -131,7 +135,7 @@ class TenderDetailActions extends StatelessWidget {
onPressed: () { onPressed: () {
viewModel.rejectTenderApproval( viewModel.rejectTenderApproval(
tenderId: detail.id!, tenderId: detail.id!,
submissionMode: 'self-apply', submissionMode: TenderSubmissionMode.selfApply.value,
); );
}, },
width: 120.0.w(), width: 120.0.w(),
@@ -156,10 +160,11 @@ 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: TenderSubmissionMode.selfApply.value,
); );
} else { } else {
(MediaQuery.sizeOf(context).width > 600) (MediaQuery.sizeOf(context).width > 600)
+2 -2
View File
@@ -4,7 +4,7 @@ import 'package:tm_app/core/constants/assets.dart';
import 'package:tm_app/core/routes/app_routes.dart'; import 'package:tm_app/core/routes/app_routes.dart';
import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/theme/colors.dart';
import 'package:tm_app/core/utils/size_config.dart'; import 'package:tm_app/core/utils/size_config.dart';
import 'package:tm_app/data/services/model/tender_approvals_state_response/tender_approvals_state_response.dart'; import 'package:tm_app/data/services/model/tender_approvals_stats_response/tender_approvals_stats_response.dart';
import 'package:tm_app/view_models/home_view_model.dart'; import 'package:tm_app/view_models/home_view_model.dart';
import 'package:tm_app/views/shared/tender_app_bar.dart'; import 'package:tm_app/views/shared/tender_app_bar.dart';
@@ -90,7 +90,7 @@ class MobileHomePage extends StatelessWidget {
Widget _firstTenderCardsRow( Widget _firstTenderCardsRow(
BuildContext context, BuildContext context,
TenderApprovalsStateResponse tenderApprovalsStateResponse, TenderApprovalsStatsResponse tenderApprovalsStateResponse,
) { ) {
return Padding( return Padding(
padding: EdgeInsets.symmetric(horizontal: 24.0.w()), padding: EdgeInsets.symmetric(horizontal: 24.0.w()),
+2 -2
View File
@@ -3,7 +3,7 @@ import 'package:provider/provider.dart';
import 'package:tm_app/core/routes/app_routes.dart'; import 'package:tm_app/core/routes/app_routes.dart';
import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/theme/colors.dart';
import 'package:tm_app/core/utils/size_config.dart'; import 'package:tm_app/core/utils/size_config.dart';
import 'package:tm_app/data/services/model/tender_approvals_state_response/tender_approvals_state_response.dart'; import 'package:tm_app/data/services/model/tender_approvals_stats_response/tender_approvals_stats_response.dart';
import 'package:tm_app/view_models/home_view_model.dart'; import 'package:tm_app/view_models/home_view_model.dart';
import 'package:tm_app/views/shared/tablet_navigation_widget.dart'; import 'package:tm_app/views/shared/tablet_navigation_widget.dart';
@@ -110,7 +110,7 @@ class TabletHomePage extends StatelessWidget {
Widget _firstTenderCardsRow( Widget _firstTenderCardsRow(
BuildContext context, BuildContext context,
TenderApprovalsStateResponse tenderApprovalsStateResponse, TenderApprovalsStatsResponse tenderApprovalsStateResponse,
) { ) {
return Row( return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
@@ -150,7 +150,7 @@ class _LikedTendersDesktopPageState extends State<LikedTendersDesktopPage> {
children: [ children: [
const Spacer(), const Spacer(),
Text( Text(
'Page', LikedTendersStrings.page,
style: TextStyle( style: TextStyle(
fontSize: 13.0.sp(), fontSize: 13.0.sp(),
fontWeight: FontWeight.w300, fontWeight: FontWeight.w300,
@@ -165,7 +165,9 @@ class _LikedTendersDesktopPageState extends State<LikedTendersDesktopPage> {
context: context, context: context,
builder: (context) { builder: (context) {
return AlertDialog( return AlertDialog(
title: const Text('Select Page'), title: const Text(
LikedTendersStrings.selectPage,
),
content: SizedBox( content: SizedBox(
width: 200, width: 200,
height: 300, height: 300,
@@ -174,7 +176,9 @@ class _LikedTendersDesktopPageState extends State<LikedTendersDesktopPage> {
itemBuilder: (context, index) { itemBuilder: (context, index) {
final pageNumber = index + 1; final pageNumber = index + 1;
return ListTile( return ListTile(
title: Text('Page $pageNumber'), title: Text(
'${LikedTendersStrings.page} $pageNumber',
),
onTap: onTap:
() => Navigator.pop( () => Navigator.pop(
context, context,
@@ -223,7 +227,7 @@ class _LikedTendersDesktopPageState extends State<LikedTendersDesktopPage> {
SizedBox(width: 5.0.w()), SizedBox(width: 5.0.w()),
Text( Text(
'Of', LikedTendersStrings.of,
style: TextStyle( style: TextStyle(
fontSize: 14.0.sp(), fontSize: 14.0.sp(),
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
@@ -160,7 +160,7 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
children: [ children: [
const Spacer(), const Spacer(),
Text( Text(
'Page', LikedTendersStrings.page,
style: TextStyle( style: TextStyle(
fontSize: 13.0.sp(), fontSize: 13.0.sp(),
fontWeight: FontWeight.w300, fontWeight: FontWeight.w300,
@@ -175,7 +175,9 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
context: context, context: context,
builder: (context) { builder: (context) {
return AlertDialog( return AlertDialog(
title: const Text('Select Page'), title: const Text(
LikedTendersStrings.selectPage,
),
content: SizedBox( content: SizedBox(
width: 200, width: 200,
height: 300, height: 300,
@@ -184,7 +186,9 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
itemBuilder: (context, index) { itemBuilder: (context, index) {
final pageNumber = index + 1; final pageNumber = index + 1;
return ListTile( return ListTile(
title: Text('Page $pageNumber'), title: Text(
'${LikedTendersStrings.page} $pageNumber',
),
onTap: onTap:
() => Navigator.pop( () => Navigator.pop(
context, context,
@@ -233,7 +237,7 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
SizedBox(width: 5.0.w()), SizedBox(width: 5.0.w()),
Text( Text(
'Of', LikedTendersStrings.of,
style: TextStyle( style: TextStyle(
fontSize: 14.0.sp(), fontSize: 14.0.sp(),
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
@@ -12,5 +12,8 @@ class LikedTendersStrings {
static const startDate = 'YYYY/MM/DD'; static const startDate = 'YYYY/MM/DD';
static const endDate = 'YYYY/MM/DD'; static const endDate = 'YYYY/MM/DD';
static const approvedTenders = 'Approved tenders'; static const approvedTenders = 'Approved tenders';
static const noLikedTenders = 'You havent liked any tenders yet.'; static const noLikedTenders = 'You havent liked any tenders yet!';
static const page = 'Page';
static const selectPage = 'Select Page';
static const of = 'Of';
} }
@@ -10,6 +10,7 @@ import 'package:tm_app/data/services/model/tender_data/tender_data.dart';
import 'package:tm_app/view_models/liked_tenders_view_model.dart'; import 'package:tm_app/view_models/liked_tenders_view_model.dart';
import 'package:tm_app/views/home/strings/home_strings.dart'; import 'package:tm_app/views/home/strings/home_strings.dart';
import '../../../core/constants/tender_submision_mode.dart';
import '../../../data/services/model/tender_approvals_data/tender_approvals_data.dart'; import '../../../data/services/model/tender_approvals_data/tender_approvals_data.dart';
import '../../shared/select_submission_bottom_sheet.dart'; import '../../shared/select_submission_bottom_sheet.dart';
import '../../shared/select_submission_dialog.dart'; import '../../shared/select_submission_dialog.dart';
@@ -178,7 +179,7 @@ class LikedListItem extends StatelessWidget {
onTap: () { onTap: () {
viewModel.rejectTenderApproval( viewModel.rejectTenderApproval(
tenderId: tender.id!, tenderId: tender.id!,
submissionMode: 'self-apply', submissionMode: TenderSubmissionMode.selfApply.value,
); );
}, },
child: Container( child: Container(
@@ -211,7 +212,7 @@ class LikedListItem extends StatelessWidget {
if (viewModel.isTenderSubmitted(tender.id!)) { if (viewModel.isTenderSubmitted(tender.id!)) {
viewModel.submitTenderApproval( viewModel.submitTenderApproval(
tenderId: tender.id!, tenderId: tender.id!,
submissionMode: 'self-apply', submissionMode: TenderSubmissionMode.selfApply.value,
); );
} else { } else {
(kIsWeb && MediaQuery.sizeOf(context).width > 600) (kIsWeb && MediaQuery.sizeOf(context).width > 600)
@@ -1,11 +1,11 @@
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:go_router/go_router.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/theme/colors.dart';
import '../../../core/constants/assets.dart'; import '../../../core/constants/assets.dart';
import '../../../core/routes/app_routes.dart';
import '../../../core/utils/app_toast.dart'; import '../../../core/utils/app_toast.dart';
import '../../../core/utils/size_config.dart'; import '../../../core/utils/size_config.dart';
import '../../../view_models/auth_view_model.dart'; import '../../../view_models/auth_view_model.dart';
@@ -31,7 +31,7 @@ class _LoginDesktopPageState extends State<LoginDesktopPage> {
void _viewModelListener() { void _viewModelListener() {
if (viewModel.loggedInUser != null) { if (viewModel.loggedInUser != null) {
Router.neglect(context, () => context.go('/home')); Router.neglect(context, () => HomeRouteData().go(context));
} else if (viewModel.errorMessage != null) { } else if (viewModel.errorMessage != null) {
AppToast.error(context, viewModel.errorMessage!); AppToast.error(context, viewModel.errorMessage!);
} }
+2 -2
View File
@@ -1,10 +1,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:go_router/go_router.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/theme/colors.dart';
import '../../../core/constants/assets.dart'; import '../../../core/constants/assets.dart';
import '../../../core/routes/app_routes.dart';
import '../../../core/utils/app_toast.dart'; import '../../../core/utils/app_toast.dart';
import '../../../core/utils/size_config.dart'; import '../../../core/utils/size_config.dart';
import '../../../view_models/auth_view_model.dart'; import '../../../view_models/auth_view_model.dart';
@@ -29,7 +29,7 @@ class _LoginMobilePageState extends State<LoginMobilePage> {
void _viewModelListener() { void _viewModelListener() {
if (viewModel.loggedInUser != null) { if (viewModel.loggedInUser != null) {
Router.neglect(context, () => context.go('/home')); Router.neglect(context, () => HomeRouteData().go(context));
} }
if (viewModel.errorMessage != null) { if (viewModel.errorMessage != null) {
AppToast.error(context, viewModel.errorMessage!); AppToast.error(context, viewModel.errorMessage!);
+2 -2
View File
@@ -1,9 +1,9 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/theme/colors.dart';
import '../../../core/constants/assets.dart'; import '../../../core/constants/assets.dart';
import '../../../core/routes/app_routes.dart';
import '../../../core/utils/app_toast.dart'; import '../../../core/utils/app_toast.dart';
import '../../../core/utils/size_config.dart'; import '../../../core/utils/size_config.dart';
import '../../../view_models/auth_view_model.dart'; import '../../../view_models/auth_view_model.dart';
@@ -29,7 +29,7 @@ class _LoginTabletPageState extends State<LoginTabletPage> {
void _viewModelListener() { void _viewModelListener() {
if (viewModel.loggedInUser != null) { if (viewModel.loggedInUser != null) {
Router.neglect(context, () => context.go('/home')); Router.neglect(context, () => HomeRouteData().go(context));
} }
if (viewModel.errorMessage != null) { if (viewModel.errorMessage != null) {
AppToast.error(context, viewModel.errorMessage!); AppToast.error(context, viewModel.errorMessage!);
-98
View File
@@ -1,98 +0,0 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:tm_app/core/constants/assets.dart';
import '../../core/utils/size_config.dart';
class TenderBottomNavigation extends StatefulWidget {
const TenderBottomNavigation({super.key});
@override
State<TenderBottomNavigation> createState() => _TenderBottomNavigationState();
}
class _TenderBottomNavigationState extends State<TenderBottomNavigation> {
int activeTab = 0;
@override
Widget build(BuildContext context) {
return Container(
height: 72.0.h(),
decoration: BoxDecoration(
color: Color(0xFFE3E3E3),
border: Border.fromBorderSide(BorderSide(color: Color(0xFFE3E3E3))),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
_bottomNavigationItem(
text: 'Home',
isActive: activeTab == 0,
onTap: () {
setState(() {
activeTab = 0;
});
},
iconPath: 'assets/icons/home.svg',
activeIconPath: AssetsManager.homeActive,
),
_bottomNavigationItem(
text: 'Tenders',
isActive: activeTab == 1,
onTap: () {
setState(() {
activeTab = 1;
});
},
iconPath: 'assets/icons/task_square.svg',
activeIconPath: 'assets/icons/task-square_active.svg',
),
_bottomNavigationItem(
text: 'Profile',
isActive: activeTab == 2,
onTap: () {
setState(() {
activeTab = 2;
});
},
iconPath: 'assets/icons/profile-circle.svg',
activeIconPath: 'assets/icons/profile-circle_active.svg',
),
],
),
);
}
Widget _bottomNavigationItem({
required String text,
required bool isActive,
required VoidCallback onTap,
required String iconPath,
required String activeIconPath,
}) {
return InkWell(
onTap: onTap,
child: SizedBox(
width: 64.0.w(),
height: 72.0.h(),
child: Padding(
padding: EdgeInsets.only(top: 12.0.h(), bottom: 14.0.h()),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
SvgPicture.asset(isActive ? activeIconPath : iconPath),
Text(
text,
style: TextStyle(
fontSize: 12.0.sp(),
fontWeight: FontWeight.w400,
color: isActive ? Color(0xFF0164FF) : Color(0xFF777777),
),
),
],
),
),
),
);
}
}
@@ -2,6 +2,8 @@ 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/common_strings.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 +18,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) {
@@ -36,7 +38,7 @@ class _SelectSubmissionBottomSheetState
child: Column( child: Column(
children: [ children: [
Text( Text(
'Select Submission', CommonStrings.selectSubmission,
style: TextStyle( style: TextStyle(
fontSize: 20.0.sp(), fontSize: 20.0.sp(),
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
@@ -45,21 +47,21 @@ class _SelectSubmissionBottomSheetState
), ),
SizedBox(height: 8.0.h()), SizedBox(height: 8.0.h()),
_submissionType( _submissionType(
title: 'self-apply', title: CommonStrings.selfApply,
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: CommonStrings.partnership,
isSelected: type == 'partnership', isSelected: type == TenderSubmissionMode.partnership.value,
onTap: () { onTap: () {
selectedType = 1; selectedType = 1;
type = 'partnership'; type = TenderSubmissionMode.partnership.value;
setState(() {}); setState(() {});
}, },
), ),
@@ -78,7 +80,7 @@ class _SelectSubmissionBottomSheetState
), ),
alignment: Alignment.center, alignment: Alignment.center,
child: Text( child: Text(
'Confirm', CommonStrings.confirm,
style: TextStyle( style: TextStyle(
fontSize: 14.0.sp(), fontSize: 14.0.sp(),
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
+11 -9
View File
@@ -2,6 +2,8 @@ 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/common_strings.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 +16,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(
@@ -33,7 +35,7 @@ class _SelectSubmissionDialogState extends State<SelectSubmissionDialog> {
child: Column( child: Column(
children: [ children: [
Text( Text(
'Select Submission', CommonStrings.selectSubmission,
style: TextStyle( style: TextStyle(
fontSize: 20.0.sp(), fontSize: 20.0.sp(),
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
@@ -42,21 +44,21 @@ class _SelectSubmissionDialogState extends State<SelectSubmissionDialog> {
), ),
SizedBox(height: 8.0.h()), SizedBox(height: 8.0.h()),
_submissionType( _submissionType(
title: 'self-apply', title: CommonStrings.selfApply,
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: CommonStrings.partnership,
isSelected: type == 'partnership', isSelected: type == TenderSubmissionMode.partnership.value,
onTap: () { onTap: () {
selectedType = 1; selectedType = 1;
type = 'partnership'; type = TenderSubmissionMode.partnership.value;
setState(() {}); setState(() {});
}, },
), ),
@@ -77,7 +79,7 @@ class _SelectSubmissionDialogState extends State<SelectSubmissionDialog> {
), ),
alignment: Alignment.center, alignment: Alignment.center,
child: Text( child: Text(
'Confirm', CommonStrings.confirm,
style: TextStyle( style: TextStyle(
fontSize: 14.0.sp(), fontSize: 14.0.sp(),
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
@@ -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,
), ),
) )
@@ -24,7 +24,7 @@ class _YourTendersScreenState extends State<YourTendersScreen> {
viewModel = context.read<YourTendersViewModel>(); viewModel = context.read<YourTendersViewModel>();
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
final requestModel = GetTendersRequestModel(); final requestModel = GetTendersRequestModel();
viewModel.getTenders(requestModel: requestModel); viewModel.getTenders(requestModel: requestModel, reset: true);
}); });
} }
@@ -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) {
@@ -15,4 +15,7 @@ class YourTendersStrings {
static const approvedTenders = 'Approved tenders'; static const approvedTenders = 'Approved tenders';
static const noTenders = 'No data available'; static const noTenders = 'No data available';
static const selectPublicationRangeDate = 'Select publication date range'; static const selectPublicationRangeDate = 'Select publication date range';
static const noLikedTenders = 'You havent liked any tenders yet !';
static const noDislikedTenders = 'You havent disliked any tenders yet !';
static const noTendersSubmitted = 'You havent submitted any tenders yet !';
} }
@@ -4,8 +4,11 @@ import 'package:tm_app/core/theme/colors.dart';
import 'package:tm_app/core/utils/size_config.dart'; import 'package:tm_app/core/utils/size_config.dart';
import 'package:tm_app/data/services/model/liked_tenders_response/liked_tenders_response.dart'; import 'package:tm_app/data/services/model/liked_tenders_response/liked_tenders_response.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/widgets/tender_card.dart'; import 'package:tm_app/views/your_tenders/widgets/tender_card.dart';
import '../../../core/constants/tender_feedback.dart';
class LikedDislikedTendersList extends StatefulWidget { class LikedDislikedTendersList extends StatefulWidget {
final LikedTendersResponse data; final LikedTendersResponse data;
final String status; final String status;
@@ -54,7 +57,9 @@ class _LikedDislikedTendersListState extends State<LikedDislikedTendersList> {
if (data.data?.feedback == null || data.data!.feedback!.isEmpty) { if (data.data?.feedback == null || data.data!.feedback!.isEmpty) {
return Center( return Center(
child: Text( child: Text(
'No ${widget.status} found', widget.status == TenderFeedback.liked.value
? YourTendersStrings.noLikedTenders
: YourTendersStrings.noDislikedTenders,
style: TextStyle(fontSize: 16.0.sp(), color: AppColors.grey70), style: TextStyle(fontSize: 16.0.sp(), color: AppColors.grey70),
), ),
); );
@@ -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;