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:
@@ -8,13 +8,13 @@ class AppConfig {
|
||||
|
||||
// این متد بر اساس محیط فعال، URL مناسب را برمیگرداند.
|
||||
static String get apiBaseUrl {
|
||||
// return 'http://10.0.2.2:8081';
|
||||
return 'http://10.0.2.2:8081';
|
||||
// return '192.168.1.103:8081';
|
||||
// if (isDevelopment) {
|
||||
// // Handle different platforms for local development
|
||||
// if (kIsWeb) {
|
||||
// For web, use localhost
|
||||
return 'https://app.opplens.com';
|
||||
// return 'https://app.opplens.com';
|
||||
// return 'http://localhost:8081';
|
||||
// } else {
|
||||
// For Android emulator, use 10.0.2.2 (special IP for host machine)
|
||||
|
||||
@@ -64,8 +64,10 @@ List<SingleChildWidget> get repositories {
|
||||
Provider(create: (context) => AuthRepository(authService: context.read())),
|
||||
Provider(
|
||||
create:
|
||||
(context) =>
|
||||
YourTendersRepository(yourTendersService: context.read()),
|
||||
(context) => YourTendersRepository(
|
||||
yourTendersService: context.read(),
|
||||
likedTendersService: context.read(),
|
||||
),
|
||||
),
|
||||
Provider(
|
||||
create:
|
||||
|
||||
@@ -3,11 +3,8 @@ class CommonStrings {
|
||||
|
||||
// Truly shared strings across multiple features
|
||||
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 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';
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
/// Barrel export for all status enums
|
||||
library;
|
||||
|
||||
export 'tender_approval_status.dart';
|
||||
export 'tender_approval_status_extension.dart';
|
||||
export 'tender_feedback.dart';
|
||||
export 'tender_feedback_extension.dart';
|
||||
@@ -0,0 +1,21 @@
|
||||
/// Enum for tender approval statuses
|
||||
enum TenderApprovalStatus {
|
||||
submitted,
|
||||
rejected,
|
||||
unsubmitted,
|
||||
unrejected;
|
||||
|
||||
/// Convert enum to string value for API
|
||||
String get value {
|
||||
switch (this) {
|
||||
case TenderApprovalStatus.submitted:
|
||||
return 'submitted';
|
||||
case TenderApprovalStatus.rejected:
|
||||
return 'rejected';
|
||||
case TenderApprovalStatus.unsubmitted:
|
||||
return 'unsubmitted';
|
||||
case TenderApprovalStatus.unrejected:
|
||||
return 'unrejected';
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
import 'tender_approval_status.dart';
|
||||
|
||||
/// Extension for parsing string to TenderApprovalStatus
|
||||
extension TenderApprovalStatusExtension on String {
|
||||
/// Parse string to TenderApprovalStatus
|
||||
TenderApprovalStatus? toTenderApprovalStatus() {
|
||||
switch (toLowerCase()) {
|
||||
case 'submitted':
|
||||
return TenderApprovalStatus.submitted;
|
||||
case 'rejected':
|
||||
return TenderApprovalStatus.rejected;
|
||||
case 'unsubmitted':
|
||||
return TenderApprovalStatus.unsubmitted;
|
||||
case 'unrejected':
|
||||
return TenderApprovalStatus.unrejected;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
/// Enum for tender feedback
|
||||
enum TenderFeedback {
|
||||
liked,
|
||||
disliked,
|
||||
unliked,
|
||||
undisliked;
|
||||
|
||||
/// Convert enum to string value for API
|
||||
String get value {
|
||||
switch (this) {
|
||||
case TenderFeedback.liked:
|
||||
return 'like';
|
||||
case TenderFeedback.disliked:
|
||||
return 'dislike';
|
||||
case TenderFeedback.unliked:
|
||||
return 'unlike';
|
||||
case TenderFeedback.undisliked:
|
||||
return 'undislike';
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
import 'tender_feedback.dart';
|
||||
|
||||
/// Extension for parsing string to TenderFeedback
|
||||
extension TenderFeedbackExtension on String {
|
||||
/// Parse string to TenderFeedback
|
||||
TenderFeedback? toTenderFeedback() {
|
||||
switch (this) {
|
||||
case 'like':
|
||||
return TenderFeedback.liked;
|
||||
case 'dislike':
|
||||
return TenderFeedback.disliked;
|
||||
case 'unlike':
|
||||
return TenderFeedback.unliked;
|
||||
case 'undislike':
|
||||
return TenderFeedback.undisliked;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
/// Enum for tender submission mode
|
||||
enum TenderSubmissionMode {
|
||||
selfApply,
|
||||
partnership;
|
||||
|
||||
/// Convert enum to string value for API
|
||||
String get value {
|
||||
switch (this) {
|
||||
case TenderSubmissionMode.selfApply:
|
||||
return 'self-apply';
|
||||
case TenderSubmissionMode.partnership:
|
||||
return 'partnership';
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
import 'tender_submision_mode.dart';
|
||||
|
||||
/// Extension for parsing string to TenderSubmissionMode
|
||||
extension TenderSubmissionModeExtension on String {
|
||||
/// Parse string to TenderSubmissionMode
|
||||
TenderSubmissionMode? toTenderSubmissionMode() {
|
||||
switch (this) {
|
||||
case 'self-apply':
|
||||
return TenderSubmissionMode.selfApply;
|
||||
case 'partnership':
|
||||
return TenderSubmissionMode.partnership;
|
||||
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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/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_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/request_models/get_tenders_request_model/get_tenders_request_model.dart';
|
||||
@@ -30,7 +30,7 @@ class HomeRepository {
|
||||
return _yourTendersService.getTenders(requestModel: requestModel);
|
||||
}
|
||||
|
||||
Future<Result<TenderApprovalsStateResponse>> getTendersApprovalsStats() {
|
||||
Future<Result<TenderApprovalsStatsResponse>> getTendersApprovalsStats() {
|
||||
return _homeService.getTendersApprovalsStats();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
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/request_models/tender_feedback_request_model/tender_feedback_request_model.dart';
|
||||
|
||||
class LikedTendersRepository {
|
||||
final LikedTendersService _likedTendersService;
|
||||
@@ -8,9 +9,8 @@ class LikedTendersRepository {
|
||||
: _likedTendersService = likedTendersService;
|
||||
|
||||
Future<Result<LikedTendersResponse>> getLikedTenders({
|
||||
int offset = 0,
|
||||
int limit = 20,
|
||||
required TenderFeedbackRequestModel requestModel,
|
||||
}) {
|
||||
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/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/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/your_tenders_service.dart';
|
||||
|
||||
import '../services/model/request_models/tender_feedback_request_model/tender_feedback_request_model.dart';
|
||||
|
||||
class YourTendersRepository {
|
||||
final YourTendersService _yourTendersService;
|
||||
YourTendersRepository({required YourTendersService yourTendersService})
|
||||
: _yourTendersService = yourTendersService;
|
||||
|
||||
Future<Result<TenderApprovalsResponse>> getApprovedTenders({
|
||||
required int limit,
|
||||
required int offset,
|
||||
required String createdFrom,
|
||||
required String createdTo,
|
||||
}) {
|
||||
return _yourTendersService.getApprovedTenders(
|
||||
limit: limit,
|
||||
offset: offset,
|
||||
createdFrom: createdFrom,
|
||||
createdTo: createdTo,
|
||||
);
|
||||
}
|
||||
final LikedTendersService _likedTendersService;
|
||||
YourTendersRepository({
|
||||
required YourTendersService yourTendersService,
|
||||
required LikedTendersService likedTendersService,
|
||||
}) : _yourTendersService = yourTendersService,
|
||||
_likedTendersService = likedTendersService;
|
||||
|
||||
Future<Result<TenderApprovalsResponse>> getTenders({
|
||||
required GetTendersRequestModel requestModel,
|
||||
@@ -30,18 +23,8 @@ class YourTendersRepository {
|
||||
}
|
||||
|
||||
Future<Result<LikedTendersResponse>> getTendersFeedback({
|
||||
required int limit,
|
||||
required int offset,
|
||||
required String feedbackType,
|
||||
required String dateFrom,
|
||||
required String dateTo,
|
||||
required TenderFeedbackRequestModel requestModel,
|
||||
}) {
|
||||
return _yourTendersService.getTendersFeedback(
|
||||
limit: limit,
|
||||
offset: offset,
|
||||
feedbackType: feedbackType,
|
||||
dateFrom: dateFrom,
|
||||
dateTo: dateTo,
|
||||
);
|
||||
return _likedTendersService.getLikedTenders(requestModel: requestModel);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,16 @@
|
||||
class LikedTendersApi {
|
||||
static const String likedTenders =
|
||||
'/api/v1/feedback?feedback_type=like';
|
||||
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';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +1,4 @@
|
||||
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 String getTenders({
|
||||
@@ -36,19 +20,4 @@ class YourTendersApi {
|
||||
|
||||
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';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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/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/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';
|
||||
|
||||
@@ -23,11 +23,11 @@ class HomeService {
|
||||
return result;
|
||||
}
|
||||
|
||||
Future<Result<TenderApprovalsStateResponse>>
|
||||
Future<Result<TenderApprovalsStatsResponse>>
|
||||
getTendersApprovalsStats() async {
|
||||
final result = await _networkManager.makeRequest(
|
||||
HomeApi.tenderApprovalStats,
|
||||
(json) => TenderApprovalsStateResponse.fromJson(json),
|
||||
(json) => TenderApprovalsStatsResponse.fromJson(json),
|
||||
method: 'GET',
|
||||
);
|
||||
return result;
|
||||
|
||||
@@ -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 '../../../core/network/network_manager.dart';
|
||||
import 'model/request_models/tender_feedback_request_model/tender_feedback_request_model.dart';
|
||||
|
||||
class LikedTendersService {
|
||||
LikedTendersService({required NetworkManager networkManager})
|
||||
@@ -11,10 +12,15 @@ class LikedTendersService {
|
||||
final NetworkManager _networkManager;
|
||||
|
||||
Future<Result<LikedTendersResponse>> getLikedTenders({
|
||||
int offset = 0,
|
||||
int limit = 20,
|
||||
required TenderFeedbackRequestModel requestModel,
|
||||
}) 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(
|
||||
uri,
|
||||
|
||||
+15
@@ -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,
|
||||
});
|
||||
}
|
||||
-22
@@ -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);
|
||||
}
|
||||
+7
-7
@@ -2,13 +2,13 @@
|
||||
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
part 'tender_approvals_state_data.freezed.dart';
|
||||
part 'tender_approvals_state_data.g.dart';
|
||||
part 'tender_approvals_stats_data.freezed.dart';
|
||||
part 'tender_approvals_stats_data.g.dart';
|
||||
|
||||
@freezed
|
||||
abstract class TenderApprovalsStateData with _$TenderApprovalsStateData {
|
||||
abstract class TenderApprovalsStatsData with _$TenderApprovalsStatsData {
|
||||
@JsonSerializable(explicitToJson: true)
|
||||
const factory TenderApprovalsStateData({
|
||||
const factory TenderApprovalsStatsData({
|
||||
@JsonKey(name: 'company_id') required String? companyId,
|
||||
@JsonKey(name: 'total_approvals') required int? totalApprovals,
|
||||
@JsonKey(name: 'submitted_tenders') required int? submittedTenders,
|
||||
@@ -20,10 +20,10 @@ abstract class TenderApprovalsStateData with _$TenderApprovalsStateData {
|
||||
@JsonKey(name: 'approvals_by_submission')
|
||||
required ApprovalsBySubmission? approvalsBySubmission,
|
||||
@JsonKey(name: 'last_updated') required int? lastUpdated,
|
||||
}) = _TenderApprovalsStateData;
|
||||
}) = _TenderApprovalsStatsData;
|
||||
|
||||
factory TenderApprovalsStateData.fromJson(Map<String, dynamic> json) =>
|
||||
_$TenderApprovalsStateDataFromJson(json);
|
||||
factory TenderApprovalsStatsData.fromJson(Map<String, dynamic> json) =>
|
||||
_$TenderApprovalsStatsDataFromJson(json);
|
||||
}
|
||||
|
||||
@freezed
|
||||
+47
-47
@@ -3,7 +3,7 @@
|
||||
// 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
|
||||
|
||||
part of 'tender_approvals_state_data.dart';
|
||||
part of 'tender_approvals_stats_data.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// FreezedGenerator
|
||||
@@ -13,22 +13,22 @@ part of 'tender_approvals_state_data.dart';
|
||||
T _$identity<T>(T value) => value;
|
||||
|
||||
/// @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;
|
||||
/// Create a copy of TenderApprovalsStateData
|
||||
/// Create a copy of TenderApprovalsStatsData
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@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();
|
||||
|
||||
|
||||
@override
|
||||
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)
|
||||
@@ -37,15 +37,15 @@ int get hashCode => Object.hash(runtimeType,companyId,totalApprovals,submittedTe
|
||||
|
||||
@override
|
||||
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
|
||||
abstract mixin class $TenderApprovalsStateDataCopyWith<$Res> {
|
||||
factory $TenderApprovalsStateDataCopyWith(TenderApprovalsStateData value, $Res Function(TenderApprovalsStateData) _then) = _$TenderApprovalsStateDataCopyWithImpl;
|
||||
abstract mixin class $TenderApprovalsStatsDataCopyWith<$Res> {
|
||||
factory $TenderApprovalsStatsDataCopyWith(TenderApprovalsStatsData value, $Res Function(TenderApprovalsStatsData) _then) = _$TenderApprovalsStatsDataCopyWithImpl;
|
||||
@useResult
|
||||
$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
|
||||
@@ -56,14 +56,14 @@ $ApprovalsByStatusCopyWith<$Res>? get approvalsByStatus;$ApprovalsBySubmissionCo
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class _$TenderApprovalsStateDataCopyWithImpl<$Res>
|
||||
implements $TenderApprovalsStateDataCopyWith<$Res> {
|
||||
_$TenderApprovalsStateDataCopyWithImpl(this._self, this._then);
|
||||
class _$TenderApprovalsStatsDataCopyWithImpl<$Res>
|
||||
implements $TenderApprovalsStatsDataCopyWith<$Res> {
|
||||
_$TenderApprovalsStatsDataCopyWithImpl(this._self, this._then);
|
||||
|
||||
final TenderApprovalsStateData _self;
|
||||
final $Res Function(TenderApprovalsStateData) _then;
|
||||
final TenderApprovalsStatsData _self;
|
||||
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.
|
||||
@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(
|
||||
@@ -79,7 +79,7 @@ as ApprovalsBySubmission?,lastUpdated: freezed == lastUpdated ? _self.lastUpdate
|
||||
as int?,
|
||||
));
|
||||
}
|
||||
/// Create a copy of TenderApprovalsStateData
|
||||
/// Create a copy of TenderApprovalsStatsData
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
@@ -91,7 +91,7 @@ $ApprovalsByStatusCopyWith<$Res>? get approvalsByStatus {
|
||||
return $ApprovalsByStatusCopyWith<$Res>(_self.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.
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
@@ -107,8 +107,8 @@ $ApprovalsBySubmissionCopyWith<$Res>? get approvalsBySubmission {
|
||||
}
|
||||
|
||||
|
||||
/// Adds pattern-matching-related methods to [TenderApprovalsStateData].
|
||||
extension TenderApprovalsStateDataPatterns on TenderApprovalsStateData {
|
||||
/// Adds pattern-matching-related methods to [TenderApprovalsStatsData].
|
||||
extension TenderApprovalsStatsDataPatterns on TenderApprovalsStatsData {
|
||||
/// A variant of `map` that fallback to returning `orElse`.
|
||||
///
|
||||
/// 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;
|
||||
switch (_that) {
|
||||
case _TenderApprovalsStateData() when $default != null:
|
||||
case _TenderApprovalsStatsData() when $default != null:
|
||||
return $default(_that);case _:
|
||||
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;
|
||||
switch (_that) {
|
||||
case _TenderApprovalsStateData():
|
||||
case _TenderApprovalsStatsData():
|
||||
return $default(_that);case _:
|
||||
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;
|
||||
switch (_that) {
|
||||
case _TenderApprovalsStateData() when $default != null:
|
||||
case _TenderApprovalsStatsData() when $default != null:
|
||||
return $default(_that);case _:
|
||||
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;
|
||||
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 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;
|
||||
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 _:
|
||||
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;
|
||||
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 null;
|
||||
|
||||
@@ -240,9 +240,9 @@ return $default(_that.companyId,_that.totalApprovals,_that.submittedTenders,_tha
|
||||
/// @nodoc
|
||||
|
||||
@JsonSerializable(explicitToJson: true)
|
||||
class _TenderApprovalsStateData implements TenderApprovalsStateData {
|
||||
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});
|
||||
factory _TenderApprovalsStateData.fromJson(Map<String, dynamic> json) => _$TenderApprovalsStateDataFromJson(json);
|
||||
class _TenderApprovalsStatsData implements TenderApprovalsStatsData {
|
||||
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 _TenderApprovalsStatsData.fromJson(Map<String, dynamic> json) => _$TenderApprovalsStatsDataFromJson(json);
|
||||
|
||||
@override@JsonKey(name: 'company_id') final String? companyId;
|
||||
@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: '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.
|
||||
@override @JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
_$TenderApprovalsStateDataCopyWith<_TenderApprovalsStateData> get copyWith => __$TenderApprovalsStateDataCopyWithImpl<_TenderApprovalsStateData>(this, _$identity);
|
||||
_$TenderApprovalsStatsDataCopyWith<_TenderApprovalsStatsData> get copyWith => __$TenderApprovalsStatsDataCopyWithImpl<_TenderApprovalsStatsData>(this, _$identity);
|
||||
|
||||
@override
|
||||
Map<String, dynamic> toJson() {
|
||||
return _$TenderApprovalsStateDataToJson(this, );
|
||||
return _$TenderApprovalsStatsDataToJson(this, );
|
||||
}
|
||||
|
||||
@override
|
||||
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)
|
||||
@@ -276,15 +276,15 @@ int get hashCode => Object.hash(runtimeType,companyId,totalApprovals,submittedTe
|
||||
|
||||
@override
|
||||
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
|
||||
abstract mixin class _$TenderApprovalsStateDataCopyWith<$Res> implements $TenderApprovalsStateDataCopyWith<$Res> {
|
||||
factory _$TenderApprovalsStateDataCopyWith(_TenderApprovalsStateData value, $Res Function(_TenderApprovalsStateData) _then) = __$TenderApprovalsStateDataCopyWithImpl;
|
||||
abstract mixin class _$TenderApprovalsStatsDataCopyWith<$Res> implements $TenderApprovalsStatsDataCopyWith<$Res> {
|
||||
factory _$TenderApprovalsStatsDataCopyWith(_TenderApprovalsStatsData value, $Res Function(_TenderApprovalsStatsData) _then) = __$TenderApprovalsStatsDataCopyWithImpl;
|
||||
@override @useResult
|
||||
$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
|
||||
@@ -295,17 +295,17 @@ $Res call({
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class __$TenderApprovalsStateDataCopyWithImpl<$Res>
|
||||
implements _$TenderApprovalsStateDataCopyWith<$Res> {
|
||||
__$TenderApprovalsStateDataCopyWithImpl(this._self, this._then);
|
||||
class __$TenderApprovalsStatsDataCopyWithImpl<$Res>
|
||||
implements _$TenderApprovalsStatsDataCopyWith<$Res> {
|
||||
__$TenderApprovalsStatsDataCopyWithImpl(this._self, this._then);
|
||||
|
||||
final _TenderApprovalsStateData _self;
|
||||
final $Res Function(_TenderApprovalsStateData) _then;
|
||||
final _TenderApprovalsStatsData _self;
|
||||
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.
|
||||
@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
|
||||
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
|
||||
@@ -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.
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
@@ -331,7 +331,7 @@ $ApprovalsByStatusCopyWith<$Res>? get approvalsByStatus {
|
||||
return $ApprovalsByStatusCopyWith<$Res>(_self.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.
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
+5
-5
@@ -1,14 +1,14 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'tender_approvals_state_data.dart';
|
||||
part of 'tender_approvals_stats_data.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
_TenderApprovalsStateData _$TenderApprovalsStateDataFromJson(
|
||||
_TenderApprovalsStatsData _$TenderApprovalsStatsDataFromJson(
|
||||
Map<String, dynamic> json,
|
||||
) => _TenderApprovalsStateData(
|
||||
) => _TenderApprovalsStatsData(
|
||||
companyId: json['company_id'] as String?,
|
||||
totalApprovals: (json['total_approvals'] as num?)?.toInt(),
|
||||
submittedTenders: (json['submitted_tenders'] as num?)?.toInt(),
|
||||
@@ -30,8 +30,8 @@ _TenderApprovalsStateData _$TenderApprovalsStateDataFromJson(
|
||||
lastUpdated: (json['last_updated'] as num?)?.toInt(),
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$TenderApprovalsStateDataToJson(
|
||||
_TenderApprovalsStateData instance,
|
||||
Map<String, dynamic> _$TenderApprovalsStatsDataToJson(
|
||||
_TenderApprovalsStatsData instance,
|
||||
) => <String, dynamic>{
|
||||
'company_id': instance.companyId,
|
||||
'total_approvals': instance.totalApprovals,
|
||||
+23
@@ -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);
|
||||
}
|
||||
+62
-62
@@ -3,7 +3,7 @@
|
||||
// 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
|
||||
|
||||
part of 'tender_approvals_state_response.dart';
|
||||
part of 'tender_approvals_stats_response.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// FreezedGenerator
|
||||
@@ -13,22 +13,22 @@ part of 'tender_approvals_state_response.dart';
|
||||
T _$identity<T>(T value) => value;
|
||||
|
||||
/// @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;
|
||||
/// Create a copy of TenderApprovalsStateResponse
|
||||
@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 TenderApprovalsStatsResponse
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@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();
|
||||
|
||||
|
||||
@override
|
||||
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)
|
||||
@@ -37,33 +37,33 @@ int get hashCode => Object.hash(runtimeType,success,message,error,data);
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'TenderApprovalsStateResponse(success: $success, message: $message, error: $error, data: $data)';
|
||||
return 'TenderApprovalsStatsResponse(success: $success, message: $message, error: $error, data: $data)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class $TenderApprovalsStateResponseCopyWith<$Res> {
|
||||
factory $TenderApprovalsStateResponseCopyWith(TenderApprovalsStateResponse value, $Res Function(TenderApprovalsStateResponse) _then) = _$TenderApprovalsStateResponseCopyWithImpl;
|
||||
abstract mixin class $TenderApprovalsStatsResponseCopyWith<$Res> {
|
||||
factory $TenderApprovalsStatsResponseCopyWith(TenderApprovalsStatsResponse value, $Res Function(TenderApprovalsStatsResponse) _then) = _$TenderApprovalsStatsResponseCopyWithImpl;
|
||||
@useResult
|
||||
$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
|
||||
class _$TenderApprovalsStateResponseCopyWithImpl<$Res>
|
||||
implements $TenderApprovalsStateResponseCopyWith<$Res> {
|
||||
_$TenderApprovalsStateResponseCopyWithImpl(this._self, this._then);
|
||||
class _$TenderApprovalsStatsResponseCopyWithImpl<$Res>
|
||||
implements $TenderApprovalsStatsResponseCopyWith<$Res> {
|
||||
_$TenderApprovalsStatsResponseCopyWithImpl(this._self, this._then);
|
||||
|
||||
final TenderApprovalsStateResponse _self;
|
||||
final $Res Function(TenderApprovalsStateResponse) _then;
|
||||
final TenderApprovalsStatsResponse _self;
|
||||
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.
|
||||
@pragma('vm:prefer-inline') @override $Res call({Object? success = freezed,Object? message = freezed,Object? error = freezed,Object? data = freezed,}) {
|
||||
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 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 TenderApprovalsStateData?,
|
||||
as TenderApprovalsStatsData?,
|
||||
));
|
||||
}
|
||||
/// Create a copy of TenderApprovalsStateResponse
|
||||
/// Create a copy of TenderApprovalsStatsResponse
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
@@ -86,24 +86,24 @@ $ErrorModelCopyWith<$Res>? get error {
|
||||
return $ErrorModelCopyWith<$Res>(_self.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.
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
$TenderApprovalsStateDataCopyWith<$Res>? get data {
|
||||
$TenderApprovalsStatsDataCopyWith<$Res>? get data {
|
||||
if (_self.data == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $TenderApprovalsStateDataCopyWith<$Res>(_self.data!, (value) {
|
||||
return $TenderApprovalsStatsDataCopyWith<$Res>(_self.data!, (value) {
|
||||
return _then(_self.copyWith(data: value));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// Adds pattern-matching-related methods to [TenderApprovalsStateResponse].
|
||||
extension TenderApprovalsStateResponsePatterns on TenderApprovalsStateResponse {
|
||||
/// Adds pattern-matching-related methods to [TenderApprovalsStatsResponse].
|
||||
extension TenderApprovalsStatsResponsePatterns on TenderApprovalsStatsResponse {
|
||||
/// A variant of `map` that fallback to returning `orElse`.
|
||||
///
|
||||
/// 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;
|
||||
switch (_that) {
|
||||
case _TenderApprovalsStateResponse() when $default != null:
|
||||
case _TenderApprovalsStatsResponse() when $default != null:
|
||||
return $default(_that);case _:
|
||||
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;
|
||||
switch (_that) {
|
||||
case _TenderApprovalsStateResponse():
|
||||
case _TenderApprovalsStatsResponse():
|
||||
return $default(_that);case _:
|
||||
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;
|
||||
switch (_that) {
|
||||
case _TenderApprovalsStateResponse() when $default != null:
|
||||
case _TenderApprovalsStatsResponse() when $default != null:
|
||||
return $default(_that);case _:
|
||||
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) {
|
||||
case _TenderApprovalsStateResponse() when $default != null:
|
||||
case _TenderApprovalsStatsResponse() when $default != null:
|
||||
return $default(_that.success,_that.message,_that.error,_that.data);case _:
|
||||
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) {
|
||||
case _TenderApprovalsStateResponse():
|
||||
case _TenderApprovalsStatsResponse():
|
||||
return $default(_that.success,_that.message,_that.error,_that.data);case _:
|
||||
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) {
|
||||
case _TenderApprovalsStateResponse() when $default != null:
|
||||
case _TenderApprovalsStatsResponse() when $default != null:
|
||||
return $default(_that.success,_that.message,_that.error,_that.data);case _:
|
||||
return null;
|
||||
|
||||
@@ -235,29 +235,29 @@ return $default(_that.success,_that.message,_that.error,_that.data);case _:
|
||||
/// @nodoc
|
||||
|
||||
@JsonSerializable(explicitToJson: true)
|
||||
class _TenderApprovalsStateResponse implements TenderApprovalsStateResponse {
|
||||
const _TenderApprovalsStateResponse({@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);
|
||||
class _TenderApprovalsStatsResponse implements TenderApprovalsStatsResponse {
|
||||
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 _TenderApprovalsStatsResponse.fromJson(Map<String, dynamic> json) => _$TenderApprovalsStatsResponseFromJson(json);
|
||||
|
||||
@override@JsonKey(name: 'success') final bool? success;
|
||||
@override@JsonKey(name: 'message') final String? message;
|
||||
@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.
|
||||
@override @JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
_$TenderApprovalsStateResponseCopyWith<_TenderApprovalsStateResponse> get copyWith => __$TenderApprovalsStateResponseCopyWithImpl<_TenderApprovalsStateResponse>(this, _$identity);
|
||||
_$TenderApprovalsStatsResponseCopyWith<_TenderApprovalsStatsResponse> get copyWith => __$TenderApprovalsStatsResponseCopyWithImpl<_TenderApprovalsStatsResponse>(this, _$identity);
|
||||
|
||||
@override
|
||||
Map<String, dynamic> toJson() {
|
||||
return _$TenderApprovalsStateResponseToJson(this, );
|
||||
return _$TenderApprovalsStatsResponseToJson(this, );
|
||||
}
|
||||
|
||||
@override
|
||||
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)
|
||||
@@ -266,45 +266,45 @@ int get hashCode => Object.hash(runtimeType,success,message,error,data);
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'TenderApprovalsStateResponse(success: $success, message: $message, error: $error, data: $data)';
|
||||
return 'TenderApprovalsStatsResponse(success: $success, message: $message, error: $error, data: $data)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class _$TenderApprovalsStateResponseCopyWith<$Res> implements $TenderApprovalsStateResponseCopyWith<$Res> {
|
||||
factory _$TenderApprovalsStateResponseCopyWith(_TenderApprovalsStateResponse value, $Res Function(_TenderApprovalsStateResponse) _then) = __$TenderApprovalsStateResponseCopyWithImpl;
|
||||
abstract mixin class _$TenderApprovalsStatsResponseCopyWith<$Res> implements $TenderApprovalsStatsResponseCopyWith<$Res> {
|
||||
factory _$TenderApprovalsStatsResponseCopyWith(_TenderApprovalsStatsResponse value, $Res Function(_TenderApprovalsStatsResponse) _then) = __$TenderApprovalsStatsResponseCopyWithImpl;
|
||||
@override @useResult
|
||||
$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
|
||||
class __$TenderApprovalsStateResponseCopyWithImpl<$Res>
|
||||
implements _$TenderApprovalsStateResponseCopyWith<$Res> {
|
||||
__$TenderApprovalsStateResponseCopyWithImpl(this._self, this._then);
|
||||
class __$TenderApprovalsStatsResponseCopyWithImpl<$Res>
|
||||
implements _$TenderApprovalsStatsResponseCopyWith<$Res> {
|
||||
__$TenderApprovalsStatsResponseCopyWithImpl(this._self, this._then);
|
||||
|
||||
final _TenderApprovalsStateResponse _self;
|
||||
final $Res Function(_TenderApprovalsStateResponse) _then;
|
||||
final _TenderApprovalsStatsResponse _self;
|
||||
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.
|
||||
@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
|
||||
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 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.
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
@@ -316,16 +316,16 @@ $ErrorModelCopyWith<$Res>? get error {
|
||||
return $ErrorModelCopyWith<$Res>(_self.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.
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
$TenderApprovalsStateDataCopyWith<$Res>? get data {
|
||||
$TenderApprovalsStatsDataCopyWith<$Res>? get data {
|
||||
if (_self.data == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $TenderApprovalsStateDataCopyWith<$Res>(_self.data!, (value) {
|
||||
return $TenderApprovalsStatsDataCopyWith<$Res>(_self.data!, (value) {
|
||||
return _then(_self.copyWith(data: value));
|
||||
});
|
||||
}
|
||||
+6
-6
@@ -1,14 +1,14 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'tender_approvals_state_response.dart';
|
||||
part of 'tender_approvals_stats_response.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
_TenderApprovalsStateResponse _$TenderApprovalsStateResponseFromJson(
|
||||
_TenderApprovalsStatsResponse _$TenderApprovalsStatsResponseFromJson(
|
||||
Map<String, dynamic> json,
|
||||
) => _TenderApprovalsStateResponse(
|
||||
) => _TenderApprovalsStatsResponse(
|
||||
success: json['success'] as bool?,
|
||||
message: json['message'] as String?,
|
||||
error:
|
||||
@@ -18,13 +18,13 @@ _TenderApprovalsStateResponse _$TenderApprovalsStateResponseFromJson(
|
||||
data:
|
||||
json['data'] == null
|
||||
? null
|
||||
: TenderApprovalsStateData.fromJson(
|
||||
: TenderApprovalsStatsData.fromJson(
|
||||
json['data'] as Map<String, dynamic>,
|
||||
),
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$TenderApprovalsStateResponseToJson(
|
||||
_TenderApprovalsStateResponse instance,
|
||||
Map<String, dynamic> _$TenderApprovalsStatsResponseToJson(
|
||||
_TenderApprovalsStatsResponse instance,
|
||||
) => <String, dynamic>{
|
||||
'success': instance.success,
|
||||
'message': instance.message,
|
||||
@@ -1,6 +1,5 @@
|
||||
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/model/liked_tenders_response/liked_tenders_response.dart';
|
||||
import 'package:tm_app/data/services/model/tender_approvals_response/tender_approvals_response.dart';
|
||||
|
||||
import '../../../core/network/network_manager.dart';
|
||||
@@ -12,26 +11,6 @@ class YourTendersService {
|
||||
|
||||
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({
|
||||
required GetTendersRequestModel requestModel,
|
||||
}) async {
|
||||
@@ -48,25 +27,4 @@ class YourTendersService {
|
||||
);
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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/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_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 '../data/repositories/home_repository.dart';
|
||||
@@ -29,7 +29,7 @@ class HomeViewModel with ChangeNotifier {
|
||||
HomeResponseModel? get homeResponse => _homeResponse;
|
||||
|
||||
RecommendedTendersResponse? _recommendedTendersResponse;
|
||||
TenderApprovalsStateResponse? tenderApprovalsStateResponse;
|
||||
TenderApprovalsStatsResponse? tenderApprovalsStateResponse;
|
||||
FeedbackStats? feedbackStats;
|
||||
final List<TenderData> _tenders = [];
|
||||
final int _pageSize = 10;
|
||||
@@ -161,10 +161,10 @@ class HomeViewModel with ChangeNotifier {
|
||||
final result = await _homeRepository.getTendersApprovalsStats();
|
||||
|
||||
switch (result) {
|
||||
case Ok<TenderApprovalsStateResponse>():
|
||||
case Ok<TenderApprovalsStatsResponse>():
|
||||
tenderApprovalsStateResponse = result.value;
|
||||
break;
|
||||
case Error<TenderApprovalsStateResponse>():
|
||||
case Error<TenderApprovalsStatsResponse>():
|
||||
_errorMessage = result.error.toString();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -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/view_models/home_view_model.dart';
|
||||
|
||||
import '../core/constants/tender_approval_status.dart';
|
||||
import '../data/services/model/feedback_response/feedback_response.dart';
|
||||
import '../data/services/model/request_models/tender_feedback_request_model/tender_feedback_request_model.dart';
|
||||
import '../data/services/model/tender_approvals_by_id_response/tender_approvals_by_id_response.dart';
|
||||
import '../data/services/model/tender_approvals_data/tender_approvals_data.dart';
|
||||
|
||||
@@ -83,9 +85,14 @@ class LikedTendersViewModel with ChangeNotifier {
|
||||
|
||||
errorMessage = null;
|
||||
|
||||
final result = await _likedTendersRepository.getLikedTenders(
|
||||
final requestModel = TenderFeedbackRequestModel(
|
||||
offset: _offset,
|
||||
limit: _limit,
|
||||
feedbackType: 'like',
|
||||
);
|
||||
|
||||
final result = await _likedTendersRepository.getLikedTenders(
|
||||
requestModel: requestModel,
|
||||
);
|
||||
|
||||
switch (result) {
|
||||
@@ -239,12 +246,14 @@ class LikedTendersViewModel with ChangeNotifier {
|
||||
|
||||
/// Check if tender is submitted
|
||||
bool isTenderSubmitted(String tenderId) {
|
||||
return getApprovalStatusForTenderId(tenderId) == 'submitted';
|
||||
return getApprovalStatusForTenderId(tenderId) ==
|
||||
TenderApprovalStatus.submitted.value;
|
||||
}
|
||||
|
||||
/// Check if tender is rejected
|
||||
bool isTenderRejected(String tenderId) {
|
||||
return getApprovalStatusForTenderId(tenderId) == 'rejected';
|
||||
return getApprovalStatusForTenderId(tenderId) ==
|
||||
TenderApprovalStatus.rejected.value;
|
||||
}
|
||||
|
||||
Future<void> submitTenderApproval({
|
||||
@@ -262,12 +271,15 @@ class LikedTendersViewModel with ChangeNotifier {
|
||||
final existingApproval = getApprovalStatusForTender(tenderId);
|
||||
|
||||
if (existingApproval != null) {
|
||||
if (existingApproval.status == 'submitted') {
|
||||
if (existingApproval.status == TenderApprovalStatus.submitted.value) {
|
||||
// Remove from list if already submitted
|
||||
tenderApprovals.removeWhere((a) => a.tenderId == tenderId);
|
||||
} else if (existingApproval.status == 'rejected') {
|
||||
} else if (existingApproval.status ==
|
||||
TenderApprovalStatus.rejected.value) {
|
||||
// Change rejected to submitted
|
||||
final updatedApproval = existingApproval.copyWith(status: 'submitted');
|
||||
final updatedApproval = existingApproval.copyWith(
|
||||
status: TenderApprovalStatus.submitted.value,
|
||||
);
|
||||
final index = tenderApprovals.indexWhere((a) => a.tenderId == tenderId);
|
||||
if (index != -1) {
|
||||
tenderApprovals[index] = updatedApproval;
|
||||
@@ -277,7 +289,7 @@ class LikedTendersViewModel with ChangeNotifier {
|
||||
// Add new approval with submitted status
|
||||
final newApproval = TenderApprovalsData(
|
||||
id: null,
|
||||
status: 'submitted',
|
||||
status: TenderApprovalStatus.submitted.value,
|
||||
tenderId: tenderId,
|
||||
companyId: null,
|
||||
submissionMode: submissionMode,
|
||||
@@ -292,7 +304,7 @@ class LikedTendersViewModel with ChangeNotifier {
|
||||
// Make server request
|
||||
final result = await _tendersRepository.toggleApprovals(
|
||||
tenderId: tenderId,
|
||||
status: 'submitted',
|
||||
status: TenderApprovalStatus.submitted.value,
|
||||
submissionMode: submissionMode,
|
||||
);
|
||||
|
||||
@@ -328,12 +340,15 @@ class LikedTendersViewModel with ChangeNotifier {
|
||||
final existingApproval = getApprovalStatusForTender(tenderId);
|
||||
|
||||
if (existingApproval != null) {
|
||||
if (existingApproval.status == 'rejected') {
|
||||
if (existingApproval.status == TenderApprovalStatus.rejected.value) {
|
||||
// Remove from list if already rejected
|
||||
tenderApprovals.removeWhere((a) => a.tenderId == tenderId);
|
||||
} else if (existingApproval.status == 'submitted') {
|
||||
} else if (existingApproval.status ==
|
||||
TenderApprovalStatus.submitted.value) {
|
||||
// Change submitted to rejected
|
||||
final updatedApproval = existingApproval.copyWith(status: 'rejected');
|
||||
final updatedApproval = existingApproval.copyWith(
|
||||
status: TenderApprovalStatus.rejected.value,
|
||||
);
|
||||
final index = tenderApprovals.indexWhere((a) => a.tenderId == tenderId);
|
||||
if (index != -1) {
|
||||
tenderApprovals[index] = updatedApproval;
|
||||
@@ -343,7 +358,7 @@ class LikedTendersViewModel with ChangeNotifier {
|
||||
// Add new approval with rejected status
|
||||
final newApproval = TenderApprovalsData(
|
||||
id: null,
|
||||
status: 'rejected',
|
||||
status: TenderApprovalStatus.rejected.value,
|
||||
tenderId: tenderId,
|
||||
companyId: null,
|
||||
submissionMode: submissionMode,
|
||||
@@ -358,7 +373,7 @@ class LikedTendersViewModel with ChangeNotifier {
|
||||
// Make server request
|
||||
final result = await _tendersRepository.toggleApprovals(
|
||||
tenderId: tenderId,
|
||||
status: 'rejected',
|
||||
status: TenderApprovalStatus.rejected.value,
|
||||
submissionMode: submissionMode,
|
||||
);
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import 'package:tm_app/data/repositories/tenders_repository.dart';
|
||||
import 'package:tm_app/data/services/model/tender_data/tender_data.dart';
|
||||
import 'package:tm_app/data/services/model/tender_detail_response/tender_detail_response_model.dart';
|
||||
|
||||
import '../core/constants/tender_approval_status.dart';
|
||||
import '../data/services/model/tender_approvals_by_id_response/tender_approvals_by_id_response.dart';
|
||||
import '../data/services/model/tender_approvals_data/tender_approvals_data.dart';
|
||||
import '../data/services/model/tender_approvals_toggle_response/tender_approvals_toggle_response.dart';
|
||||
@@ -73,7 +74,7 @@ class TenderDetailViewModel with ChangeNotifier {
|
||||
notifyListeners();
|
||||
final result = await _tendersRepository.toggleApprovals(
|
||||
tenderId: tenderId,
|
||||
status: 'submitted',
|
||||
status: TenderApprovalStatus.submitted.value,
|
||||
submissionMode: submissionMode,
|
||||
);
|
||||
switch (result) {
|
||||
@@ -102,7 +103,7 @@ class TenderDetailViewModel with ChangeNotifier {
|
||||
notifyListeners();
|
||||
final result = await _tendersRepository.toggleApprovals(
|
||||
tenderId: tenderId,
|
||||
status: 'rejected',
|
||||
status: TenderApprovalStatus.rejected.value,
|
||||
submissionMode: submissionMode,
|
||||
);
|
||||
switch (result) {
|
||||
|
||||
@@ -8,6 +8,7 @@ import 'package:tm_app/data/services/model/tender_approvals_toggle_data/tender_a
|
||||
import 'package:tm_app/data/services/model/tender_approvals_toggle_response/tender_approvals_toggle_response.dart';
|
||||
import 'package:tm_app/data/services/model/tenders/tenders_response/tenders_response.dart';
|
||||
|
||||
import '../core/constants/tender_submision_mode.dart';
|
||||
import '../core/utils/result.dart';
|
||||
import '../data/services/model/tender_approvals_by_id_response/tender_approvals_by_id_response.dart';
|
||||
import '../data/services/model/tender_approvals_data/tender_approvals_data.dart';
|
||||
@@ -420,7 +421,10 @@ class TendersViewModel with ChangeNotifier {
|
||||
status: _tenderApprovalToggleData!.status!,
|
||||
tenderId: _tenderApprovalToggleData!.tenderId,
|
||||
companyId: _tenderApprovalToggleData!.companyId,
|
||||
submissionMode: _tenderApprovalToggleData!.submissionMode,
|
||||
submissionMode:
|
||||
(_tenderApprovalToggleData!.submissionMode?.isNotEmpty == true)
|
||||
? _tenderApprovalToggleData!.submissionMode
|
||||
: TenderSubmissionMode.selfApply.value,
|
||||
createdAt: _tenderApprovalToggleData!.createdAt,
|
||||
tender: null, // Tender data is not included in toggle response
|
||||
);
|
||||
|
||||
@@ -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/views/your_tenders/strings/your_tenders_strings.dart';
|
||||
|
||||
import '../core/constants/tender_approval_status.dart';
|
||||
import '../core/constants/tender_feedback.dart';
|
||||
import '../data/services/model/request_models/get_tenders_request_model/get_tenders_request_model.dart';
|
||||
import '../data/services/model/request_models/tender_feedback_request_model/tender_feedback_request_model.dart';
|
||||
|
||||
class YourTendersViewModel with ChangeNotifier {
|
||||
final YourTendersRepository yourTendersRepository;
|
||||
@@ -132,14 +135,18 @@ class YourTendersViewModel with ChangeNotifier {
|
||||
}
|
||||
notifyListeners();
|
||||
|
||||
final result = await yourTendersRepository.getTendersFeedback(
|
||||
limit: _limit,
|
||||
final requestModel = TenderFeedbackRequestModel(
|
||||
offset: _offset,
|
||||
limit: _limit,
|
||||
feedbackType: _currentFeedbackType ?? feedbackType,
|
||||
dateFrom: startDateUnix,
|
||||
dateTo: endDateUnix,
|
||||
);
|
||||
|
||||
final result = await yourTendersRepository.getTendersFeedback(
|
||||
requestModel: requestModel,
|
||||
);
|
||||
|
||||
switch (result) {
|
||||
case Ok<LikedTendersResponse>():
|
||||
final incoming = result.value;
|
||||
@@ -196,7 +203,7 @@ class YourTendersViewModel with ChangeNotifier {
|
||||
await getTenders(requestModel: requestModel);
|
||||
} else if (selectedStatus == YourTendersStrings.tendersSubmitted) {
|
||||
final requestModel = GetTendersRequestModel(
|
||||
status: 'submitted',
|
||||
status: TenderApprovalStatus.submitted.value,
|
||||
createdFrom: startDateUnix,
|
||||
createdTo: endDateUnix,
|
||||
limit: _tendersLimit,
|
||||
@@ -267,7 +274,7 @@ class YourTendersViewModel with ChangeNotifier {
|
||||
await getTenders(requestModel: requestModel, reset: true);
|
||||
} else if (selectedStatus == YourTendersStrings.tendersSubmitted) {
|
||||
final requestModel = GetTendersRequestModel(
|
||||
status: 'submitted',
|
||||
status: TenderApprovalStatus.submitted.value,
|
||||
createdFrom: startDateUnix,
|
||||
createdTo: endDateUnix,
|
||||
limit: _tendersLimit,
|
||||
@@ -275,9 +282,15 @@ class YourTendersViewModel with ChangeNotifier {
|
||||
);
|
||||
await getTenders(requestModel: requestModel, reset: true);
|
||||
} else if (selectedStatus == YourTendersStrings.likeTenders) {
|
||||
await getTendersFeedback(feedbackType: 'like', reset: true);
|
||||
await getTendersFeedback(
|
||||
feedbackType: TenderFeedback.liked.value,
|
||||
reset: true,
|
||||
);
|
||||
} else if (selectedStatus == YourTendersStrings.dislikeTenders) {
|
||||
await getTendersFeedback(feedbackType: 'dislike', reset: true);
|
||||
await getTendersFeedback(
|
||||
feedbackType: TenderFeedback.disliked.value,
|
||||
reset: true,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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_header.dart';
|
||||
|
||||
import '../../../core/constants/tender_approval_status.dart';
|
||||
import '../../../core/utils/app_toast.dart';
|
||||
import '../../shared/desktop_navigation_widget.dart';
|
||||
import '../strings/tender_details_strings.dart';
|
||||
@@ -31,7 +32,7 @@ class _TenderDetailDesktopPageState extends State<TenderDetailDesktopPage> {
|
||||
|
||||
void _viewModelListener() {
|
||||
if (viewModel.status.isNotEmpty &&
|
||||
viewModel.status == 'submitted' &&
|
||||
viewModel.status == TenderApprovalStatus.submitted.value &&
|
||||
viewModel.approvalStatus == true) {
|
||||
AppToast.success(
|
||||
context,
|
||||
@@ -39,7 +40,7 @@ class _TenderDetailDesktopPageState extends State<TenderDetailDesktopPage> {
|
||||
);
|
||||
}
|
||||
if (viewModel.status.isNotEmpty &&
|
||||
viewModel.status == 'unsubmitted' &&
|
||||
viewModel.status == TenderApprovalStatus.unsubmitted.value &&
|
||||
viewModel.approvalStatus == true) {
|
||||
AppToast.success(
|
||||
context,
|
||||
@@ -47,7 +48,7 @@ class _TenderDetailDesktopPageState extends State<TenderDetailDesktopPage> {
|
||||
);
|
||||
}
|
||||
if (viewModel.status.isNotEmpty &&
|
||||
viewModel.status == 'rejected' &&
|
||||
viewModel.status == TenderApprovalStatus.rejected.value &&
|
||||
viewModel.approvalStatus == true) {
|
||||
AppToast.success(
|
||||
context,
|
||||
@@ -55,7 +56,7 @@ class _TenderDetailDesktopPageState extends State<TenderDetailDesktopPage> {
|
||||
);
|
||||
}
|
||||
if (viewModel.status.isNotEmpty &&
|
||||
viewModel.status == 'unrejected' &&
|
||||
viewModel.status == TenderApprovalStatus.unrejected.value &&
|
||||
viewModel.approvalStatus == true) {
|
||||
AppToast.success(
|
||||
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/shared/tender_app_bar.dart';
|
||||
|
||||
import '../../../core/constants/tender_approval_status.dart';
|
||||
import '../../../core/utils/app_toast.dart';
|
||||
|
||||
class TenderDetailMobilePage extends StatefulWidget {
|
||||
@@ -31,7 +32,7 @@ class _TenderDetailMobilePageState extends State<TenderDetailMobilePage> {
|
||||
|
||||
void _viewModelListener() {
|
||||
if (viewModel.status.isNotEmpty &&
|
||||
viewModel.status == 'submitted' &&
|
||||
viewModel.status == TenderApprovalStatus.submitted.value &&
|
||||
viewModel.approvalStatus == true) {
|
||||
AppToast.success(
|
||||
context,
|
||||
@@ -39,7 +40,7 @@ class _TenderDetailMobilePageState extends State<TenderDetailMobilePage> {
|
||||
);
|
||||
}
|
||||
if (viewModel.status.isNotEmpty &&
|
||||
viewModel.status == 'unsubmitted' &&
|
||||
viewModel.status == TenderApprovalStatus.unsubmitted.value &&
|
||||
viewModel.approvalStatus == true) {
|
||||
AppToast.success(
|
||||
context,
|
||||
@@ -47,7 +48,7 @@ class _TenderDetailMobilePageState extends State<TenderDetailMobilePage> {
|
||||
);
|
||||
}
|
||||
if (viewModel.status.isNotEmpty &&
|
||||
viewModel.status == 'rejected' &&
|
||||
viewModel.status == TenderApprovalStatus.rejected.value &&
|
||||
viewModel.approvalStatus == true) {
|
||||
AppToast.success(
|
||||
context,
|
||||
@@ -55,7 +56,7 @@ class _TenderDetailMobilePageState extends State<TenderDetailMobilePage> {
|
||||
);
|
||||
}
|
||||
if (viewModel.status.isNotEmpty &&
|
||||
viewModel.status == 'unrejected' &&
|
||||
viewModel.status == TenderApprovalStatus.unrejected.value &&
|
||||
viewModel.approvalStatus == true) {
|
||||
AppToast.success(
|
||||
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/shared/tablet_navigation_widget.dart';
|
||||
|
||||
import '../../../core/constants/tender_approval_status.dart';
|
||||
import '../../../core/utils/app_toast.dart';
|
||||
import '../../shared/tender_app_bar.dart';
|
||||
import '../strings/tender_details_strings.dart';
|
||||
@@ -32,7 +33,7 @@ class _TenderDetailTabletPageState extends State<TenderDetailTabletPage> {
|
||||
|
||||
void _viewModelListener() {
|
||||
if (viewModel.status.isNotEmpty &&
|
||||
viewModel.status == 'submitted' &&
|
||||
viewModel.status == TenderApprovalStatus.submitted.value &&
|
||||
viewModel.approvalStatus == true) {
|
||||
AppToast.success(
|
||||
context,
|
||||
@@ -40,7 +41,7 @@ class _TenderDetailTabletPageState extends State<TenderDetailTabletPage> {
|
||||
);
|
||||
}
|
||||
if (viewModel.status.isNotEmpty &&
|
||||
viewModel.status == 'unsubmitted' &&
|
||||
viewModel.status == TenderApprovalStatus.unsubmitted.value &&
|
||||
viewModel.approvalStatus == true) {
|
||||
AppToast.success(
|
||||
context,
|
||||
@@ -48,7 +49,7 @@ class _TenderDetailTabletPageState extends State<TenderDetailTabletPage> {
|
||||
);
|
||||
}
|
||||
if (viewModel.status.isNotEmpty &&
|
||||
viewModel.status == 'rejected' &&
|
||||
viewModel.status == TenderApprovalStatus.rejected.value &&
|
||||
viewModel.approvalStatus == true) {
|
||||
AppToast.success(
|
||||
context,
|
||||
@@ -56,7 +57,7 @@ class _TenderDetailTabletPageState extends State<TenderDetailTabletPage> {
|
||||
);
|
||||
}
|
||||
if (viewModel.status.isNotEmpty &&
|
||||
viewModel.status == 'unrejected' &&
|
||||
viewModel.status == TenderApprovalStatus.unrejected.value &&
|
||||
viewModel.approvalStatus == true) {
|
||||
AppToast.success(
|
||||
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/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 '../../shared/select_submission_dialog.dart';
|
||||
import '../strings/tender_details_strings.dart';
|
||||
@@ -47,10 +49,12 @@ class TenderDetailActions extends StatelessWidget {
|
||||
backgroundColor: AppColors.primary30,
|
||||
textColor: AppColors.mainBlue,
|
||||
onPressed: () {
|
||||
if (viewModel.status == 'submitted') {
|
||||
if (viewModel.status ==
|
||||
TenderApprovalStatus.submitted.value) {
|
||||
viewModel.submitTenderApproval(
|
||||
tenderId: detail.id!,
|
||||
submissionMode: 'self-apply',
|
||||
submissionMode:
|
||||
TenderSubmissionMode.selfApply.value,
|
||||
);
|
||||
} else {
|
||||
showModalBottomSheet(
|
||||
@@ -95,7 +99,7 @@ class TenderDetailActions extends StatelessWidget {
|
||||
onPressed: () {
|
||||
viewModel.rejectTenderApproval(
|
||||
tenderId: detail.id!,
|
||||
submissionMode: 'self-apply',
|
||||
submissionMode: TenderSubmissionMode.selfApply.value,
|
||||
);
|
||||
},
|
||||
);
|
||||
@@ -131,7 +135,7 @@ class TenderDetailActions extends StatelessWidget {
|
||||
onPressed: () {
|
||||
viewModel.rejectTenderApproval(
|
||||
tenderId: detail.id!,
|
||||
submissionMode: 'self-apply',
|
||||
submissionMode: TenderSubmissionMode.selfApply.value,
|
||||
);
|
||||
},
|
||||
width: 120.0.w(),
|
||||
@@ -156,10 +160,11 @@ class TenderDetailActions extends StatelessWidget {
|
||||
backgroundColor: AppColors.lightBlue,
|
||||
textColor: AppColors.mainBlue,
|
||||
onPressed: () {
|
||||
if (viewModel.status == 'submitted') {
|
||||
if (viewModel.status ==
|
||||
TenderApprovalStatus.submitted.value) {
|
||||
viewModel.submitTenderApproval(
|
||||
tenderId: detail.id!,
|
||||
submissionMode: 'self-apply',
|
||||
submissionMode: TenderSubmissionMode.selfApply.value,
|
||||
);
|
||||
} else {
|
||||
(MediaQuery.sizeOf(context).width > 600)
|
||||
|
||||
@@ -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/theme/colors.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/views/shared/tender_app_bar.dart';
|
||||
|
||||
@@ -90,7 +90,7 @@ class MobileHomePage extends StatelessWidget {
|
||||
|
||||
Widget _firstTenderCardsRow(
|
||||
BuildContext context,
|
||||
TenderApprovalsStateResponse tenderApprovalsStateResponse,
|
||||
TenderApprovalsStatsResponse tenderApprovalsStateResponse,
|
||||
) {
|
||||
return Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 24.0.w()),
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'package:provider/provider.dart';
|
||||
import 'package:tm_app/core/routes/app_routes.dart';
|
||||
import 'package:tm_app/core/theme/colors.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/views/shared/tablet_navigation_widget.dart';
|
||||
|
||||
@@ -110,7 +110,7 @@ class TabletHomePage extends StatelessWidget {
|
||||
|
||||
Widget _firstTenderCardsRow(
|
||||
BuildContext context,
|
||||
TenderApprovalsStateResponse tenderApprovalsStateResponse,
|
||||
TenderApprovalsStatsResponse tenderApprovalsStateResponse,
|
||||
) {
|
||||
return Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
|
||||
@@ -150,7 +150,7 @@ class _LikedTendersDesktopPageState extends State<LikedTendersDesktopPage> {
|
||||
children: [
|
||||
const Spacer(),
|
||||
Text(
|
||||
'Page',
|
||||
LikedTendersStrings.page,
|
||||
style: TextStyle(
|
||||
fontSize: 13.0.sp(),
|
||||
fontWeight: FontWeight.w300,
|
||||
@@ -165,7 +165,9 @@ class _LikedTendersDesktopPageState extends State<LikedTendersDesktopPage> {
|
||||
context: context,
|
||||
builder: (context) {
|
||||
return AlertDialog(
|
||||
title: const Text('Select Page'),
|
||||
title: const Text(
|
||||
LikedTendersStrings.selectPage,
|
||||
),
|
||||
content: SizedBox(
|
||||
width: 200,
|
||||
height: 300,
|
||||
@@ -174,7 +176,9 @@ class _LikedTendersDesktopPageState extends State<LikedTendersDesktopPage> {
|
||||
itemBuilder: (context, index) {
|
||||
final pageNumber = index + 1;
|
||||
return ListTile(
|
||||
title: Text('Page $pageNumber'),
|
||||
title: Text(
|
||||
'${LikedTendersStrings.page} $pageNumber',
|
||||
),
|
||||
onTap:
|
||||
() => Navigator.pop(
|
||||
context,
|
||||
@@ -223,7 +227,7 @@ class _LikedTendersDesktopPageState extends State<LikedTendersDesktopPage> {
|
||||
|
||||
SizedBox(width: 5.0.w()),
|
||||
Text(
|
||||
'Of',
|
||||
LikedTendersStrings.of,
|
||||
style: TextStyle(
|
||||
fontSize: 14.0.sp(),
|
||||
fontWeight: FontWeight.w400,
|
||||
|
||||
@@ -160,7 +160,7 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
|
||||
children: [
|
||||
const Spacer(),
|
||||
Text(
|
||||
'Page',
|
||||
LikedTendersStrings.page,
|
||||
style: TextStyle(
|
||||
fontSize: 13.0.sp(),
|
||||
fontWeight: FontWeight.w300,
|
||||
@@ -175,7 +175,9 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
|
||||
context: context,
|
||||
builder: (context) {
|
||||
return AlertDialog(
|
||||
title: const Text('Select Page'),
|
||||
title: const Text(
|
||||
LikedTendersStrings.selectPage,
|
||||
),
|
||||
content: SizedBox(
|
||||
width: 200,
|
||||
height: 300,
|
||||
@@ -184,7 +186,9 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
|
||||
itemBuilder: (context, index) {
|
||||
final pageNumber = index + 1;
|
||||
return ListTile(
|
||||
title: Text('Page $pageNumber'),
|
||||
title: Text(
|
||||
'${LikedTendersStrings.page} $pageNumber',
|
||||
),
|
||||
onTap:
|
||||
() => Navigator.pop(
|
||||
context,
|
||||
@@ -233,7 +237,7 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
|
||||
|
||||
SizedBox(width: 5.0.w()),
|
||||
Text(
|
||||
'Of',
|
||||
LikedTendersStrings.of,
|
||||
style: TextStyle(
|
||||
fontSize: 14.0.sp(),
|
||||
fontWeight: FontWeight.w400,
|
||||
|
||||
@@ -12,5 +12,8 @@ class LikedTendersStrings {
|
||||
static const startDate = 'YYYY/MM/DD';
|
||||
static const endDate = 'YYYY/MM/DD';
|
||||
static const approvedTenders = 'Approved tenders';
|
||||
static const noLikedTenders = 'You haven’t liked any tenders yet.';
|
||||
static const noLikedTenders = 'You haven’t 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/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 '../../shared/select_submission_bottom_sheet.dart';
|
||||
import '../../shared/select_submission_dialog.dart';
|
||||
@@ -178,7 +179,7 @@ class LikedListItem extends StatelessWidget {
|
||||
onTap: () {
|
||||
viewModel.rejectTenderApproval(
|
||||
tenderId: tender.id!,
|
||||
submissionMode: 'self-apply',
|
||||
submissionMode: TenderSubmissionMode.selfApply.value,
|
||||
);
|
||||
},
|
||||
child: Container(
|
||||
@@ -211,7 +212,7 @@ class LikedListItem extends StatelessWidget {
|
||||
if (viewModel.isTenderSubmitted(tender.id!)) {
|
||||
viewModel.submitTenderApproval(
|
||||
tenderId: tender.id!,
|
||||
submissionMode: 'self-apply',
|
||||
submissionMode: TenderSubmissionMode.selfApply.value,
|
||||
);
|
||||
} else {
|
||||
(kIsWeb && MediaQuery.sizeOf(context).width > 600)
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:tm_app/core/theme/colors.dart';
|
||||
|
||||
import '../../../core/constants/assets.dart';
|
||||
import '../../../core/routes/app_routes.dart';
|
||||
import '../../../core/utils/app_toast.dart';
|
||||
import '../../../core/utils/size_config.dart';
|
||||
import '../../../view_models/auth_view_model.dart';
|
||||
@@ -31,7 +31,7 @@ class _LoginDesktopPageState extends State<LoginDesktopPage> {
|
||||
|
||||
void _viewModelListener() {
|
||||
if (viewModel.loggedInUser != null) {
|
||||
Router.neglect(context, () => context.go('/home'));
|
||||
Router.neglect(context, () => HomeRouteData().go(context));
|
||||
} else if (viewModel.errorMessage != null) {
|
||||
AppToast.error(context, viewModel.errorMessage!);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:tm_app/core/theme/colors.dart';
|
||||
|
||||
import '../../../core/constants/assets.dart';
|
||||
import '../../../core/routes/app_routes.dart';
|
||||
import '../../../core/utils/app_toast.dart';
|
||||
import '../../../core/utils/size_config.dart';
|
||||
import '../../../view_models/auth_view_model.dart';
|
||||
@@ -29,7 +29,7 @@ class _LoginMobilePageState extends State<LoginMobilePage> {
|
||||
|
||||
void _viewModelListener() {
|
||||
if (viewModel.loggedInUser != null) {
|
||||
Router.neglect(context, () => context.go('/home'));
|
||||
Router.neglect(context, () => HomeRouteData().go(context));
|
||||
}
|
||||
if (viewModel.errorMessage != null) {
|
||||
AppToast.error(context, viewModel.errorMessage!);
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:tm_app/core/theme/colors.dart';
|
||||
|
||||
import '../../../core/constants/assets.dart';
|
||||
import '../../../core/routes/app_routes.dart';
|
||||
import '../../../core/utils/app_toast.dart';
|
||||
import '../../../core/utils/size_config.dart';
|
||||
import '../../../view_models/auth_view_model.dart';
|
||||
@@ -29,7 +29,7 @@ class _LoginTabletPageState extends State<LoginTabletPage> {
|
||||
|
||||
void _viewModelListener() {
|
||||
if (viewModel.loggedInUser != null) {
|
||||
Router.neglect(context, () => context.go('/home'));
|
||||
Router.neglect(context, () => HomeRouteData().go(context));
|
||||
}
|
||||
if (viewModel.errorMessage != null) {
|
||||
AppToast.error(context, viewModel.errorMessage!);
|
||||
|
||||
@@ -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: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';
|
||||
|
||||
class SelectSubmissionBottomSheet extends StatefulWidget {
|
||||
@@ -16,7 +18,7 @@ class SelectSubmissionBottomSheet extends StatefulWidget {
|
||||
class _SelectSubmissionBottomSheetState
|
||||
extends State<SelectSubmissionBottomSheet> {
|
||||
int selectedType = 0;
|
||||
String type = 'self-apply';
|
||||
String type = TenderSubmissionMode.selfApply.value;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -36,7 +38,7 @@ class _SelectSubmissionBottomSheetState
|
||||
child: Column(
|
||||
children: [
|
||||
Text(
|
||||
'Select Submission',
|
||||
CommonStrings.selectSubmission,
|
||||
style: TextStyle(
|
||||
fontSize: 20.0.sp(),
|
||||
fontWeight: FontWeight.w600,
|
||||
@@ -45,21 +47,21 @@ class _SelectSubmissionBottomSheetState
|
||||
),
|
||||
SizedBox(height: 8.0.h()),
|
||||
_submissionType(
|
||||
title: 'self-apply',
|
||||
isSelected: type == 'self-apply',
|
||||
title: CommonStrings.selfApply,
|
||||
isSelected: type == TenderSubmissionMode.selfApply.value,
|
||||
onTap: () {
|
||||
selectedType = 0;
|
||||
type = 'self-apply';
|
||||
type = TenderSubmissionMode.selfApply.value;
|
||||
setState(() {});
|
||||
},
|
||||
),
|
||||
SizedBox(height: 8.0.h()),
|
||||
_submissionType(
|
||||
title: 'Partnership',
|
||||
isSelected: type == 'partnership',
|
||||
title: CommonStrings.partnership,
|
||||
isSelected: type == TenderSubmissionMode.partnership.value,
|
||||
onTap: () {
|
||||
selectedType = 1;
|
||||
type = 'partnership';
|
||||
type = TenderSubmissionMode.partnership.value;
|
||||
setState(() {});
|
||||
},
|
||||
),
|
||||
@@ -78,7 +80,7 @@ class _SelectSubmissionBottomSheetState
|
||||
),
|
||||
alignment: Alignment.center,
|
||||
child: Text(
|
||||
'Confirm',
|
||||
CommonStrings.confirm,
|
||||
style: TextStyle(
|
||||
fontSize: 14.0.sp(),
|
||||
fontWeight: FontWeight.w500,
|
||||
|
||||
@@ -2,6 +2,8 @@ import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.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';
|
||||
|
||||
class SelectSubmissionDialog extends StatefulWidget {
|
||||
@@ -14,7 +16,7 @@ class SelectSubmissionDialog extends StatefulWidget {
|
||||
|
||||
class _SelectSubmissionDialogState extends State<SelectSubmissionDialog> {
|
||||
int selectedType = 0;
|
||||
String type = 'self-apply';
|
||||
String type = TenderSubmissionMode.selfApply.value;
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Dialog(
|
||||
@@ -33,7 +35,7 @@ class _SelectSubmissionDialogState extends State<SelectSubmissionDialog> {
|
||||
child: Column(
|
||||
children: [
|
||||
Text(
|
||||
'Select Submission',
|
||||
CommonStrings.selectSubmission,
|
||||
style: TextStyle(
|
||||
fontSize: 20.0.sp(),
|
||||
fontWeight: FontWeight.w600,
|
||||
@@ -42,21 +44,21 @@ class _SelectSubmissionDialogState extends State<SelectSubmissionDialog> {
|
||||
),
|
||||
SizedBox(height: 8.0.h()),
|
||||
_submissionType(
|
||||
title: 'self-apply',
|
||||
isSelected: type == 'self-apply',
|
||||
title: CommonStrings.selfApply,
|
||||
isSelected: type == TenderSubmissionMode.selfApply.value,
|
||||
onTap: () {
|
||||
selectedType = 0;
|
||||
type = 'self-apply';
|
||||
type = TenderSubmissionMode.selfApply.value;
|
||||
setState(() {});
|
||||
},
|
||||
),
|
||||
SizedBox(height: 8.0.h()),
|
||||
_submissionType(
|
||||
title: 'Partnership',
|
||||
isSelected: type == 'partnership',
|
||||
title: CommonStrings.partnership,
|
||||
isSelected: type == TenderSubmissionMode.partnership.value,
|
||||
onTap: () {
|
||||
selectedType = 1;
|
||||
type = 'partnership';
|
||||
type = TenderSubmissionMode.partnership.value;
|
||||
setState(() {});
|
||||
},
|
||||
),
|
||||
@@ -77,7 +79,7 @@ class _SelectSubmissionDialogState extends State<SelectSubmissionDialog> {
|
||||
),
|
||||
alignment: Alignment.center,
|
||||
child: Text(
|
||||
'Confirm',
|
||||
CommonStrings.confirm,
|
||||
style: TextStyle(
|
||||
fontSize: 14.0.sp(),
|
||||
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 '../../../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/utils/size_config.dart';
|
||||
import '../../shared/select_submission_bottom_sheet.dart';
|
||||
@@ -54,7 +57,7 @@ class TenderActionButtonsRow extends StatelessWidget {
|
||||
}
|
||||
|
||||
final approval = viewModel.getTenderApprovalForTender(tender.id!);
|
||||
final isRejected = approval?.status == 'rejected';
|
||||
final isRejected = approval?.status == TenderApprovalStatus.rejected.value;
|
||||
|
||||
return Tooltip(
|
||||
message: TendersStrings.reject,
|
||||
@@ -63,8 +66,8 @@ class TenderActionButtonsRow extends StatelessWidget {
|
||||
onTap: () {
|
||||
viewModel.toggleApprovals(
|
||||
tenderId: tender.id!,
|
||||
submissionMode: 'self-apply',
|
||||
status: 'rejected',
|
||||
submissionMode: TenderSubmissionMode.selfApply.value,
|
||||
status: TenderApprovalStatus.rejected.value,
|
||||
);
|
||||
},
|
||||
child: Column(
|
||||
@@ -109,7 +112,7 @@ class TenderActionButtonsRow extends StatelessWidget {
|
||||
}
|
||||
|
||||
final approval = viewModel.getTenderApprovalForTender(tender.id!);
|
||||
final isApproved = approval?.status == 'submitted';
|
||||
final isApproved = approval?.status == TenderApprovalStatus.submitted.value;
|
||||
|
||||
return Tooltip(
|
||||
message: TendersStrings.submit,
|
||||
@@ -119,8 +122,11 @@ class TenderActionButtonsRow extends StatelessWidget {
|
||||
if (isApproved) {
|
||||
viewModel.toggleApprovals(
|
||||
tenderId: tender.id!,
|
||||
submissionMode: approval?.submissionMode ?? 'self-apply',
|
||||
status: 'submitted',
|
||||
submissionMode:
|
||||
(approval?.submissionMode?.isNotEmpty == true)
|
||||
? approval!.submissionMode!
|
||||
: TenderSubmissionMode.selfApply.value,
|
||||
status: TenderApprovalStatus.submitted.value,
|
||||
);
|
||||
} else {
|
||||
final isMobile = MediaQuery.sizeOf(context).width < 600;
|
||||
@@ -134,7 +140,7 @@ class TenderActionButtonsRow extends StatelessWidget {
|
||||
viewModel.toggleApprovals(
|
||||
tenderId: tender.id!,
|
||||
submissionMode: value,
|
||||
status: 'submitted',
|
||||
status: TenderApprovalStatus.submitted.value,
|
||||
);
|
||||
},
|
||||
);
|
||||
@@ -149,7 +155,7 @@ class TenderActionButtonsRow extends StatelessWidget {
|
||||
viewModel.toggleApprovals(
|
||||
tenderId: tender.id!,
|
||||
submissionMode: value,
|
||||
status: 'submitted',
|
||||
status: TenderApprovalStatus.submitted.value,
|
||||
);
|
||||
},
|
||||
);
|
||||
@@ -200,7 +206,7 @@ class TenderActionButtonsRow extends StatelessWidget {
|
||||
}
|
||||
|
||||
final feedback = viewModel.getFeedbackForTender(tender.id!);
|
||||
final isDisliked = feedback?.feedbackType == 'dislike';
|
||||
final isDisliked = feedback?.feedbackType == TenderFeedback.disliked.value;
|
||||
|
||||
return Tooltip(
|
||||
message: TendersStrings.dislike,
|
||||
@@ -209,7 +215,7 @@ class TenderActionButtonsRow extends StatelessWidget {
|
||||
onTap: () {
|
||||
viewModel.toogleFeedback(
|
||||
tenderId: tender.id!,
|
||||
feedbackType: 'dislike',
|
||||
feedbackType: TenderFeedback.disliked.value,
|
||||
);
|
||||
},
|
||||
child: Column(
|
||||
@@ -247,14 +253,17 @@ class TenderActionButtonsRow extends StatelessWidget {
|
||||
}
|
||||
|
||||
final feedback = viewModel.getFeedbackForTender(tender.id!);
|
||||
final isLiked = feedback?.feedbackType == 'like';
|
||||
final isLiked = feedback?.feedbackType == TenderFeedback.liked.value;
|
||||
|
||||
return Tooltip(
|
||||
message: TendersStrings.like,
|
||||
child: InkWell(
|
||||
splashColor: Colors.transparent,
|
||||
onTap: () {
|
||||
viewModel.toogleFeedback(tenderId: tender.id!, feedbackType: 'like');
|
||||
viewModel.toogleFeedback(
|
||||
tenderId: tender.id!,
|
||||
feedbackType: TenderFeedback.liked.value,
|
||||
);
|
||||
},
|
||||
child: Column(
|
||||
children: [
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'package:flutter/material.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/view_models/your_tenders_view_model.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) {
|
||||
return LikedDislikedTendersList(
|
||||
data: viewModel.likedTendersData!,
|
||||
status: 'liked',
|
||||
status: TenderFeedback.liked.value,
|
||||
isDesctop: true,
|
||||
);
|
||||
} else if (viewModel.selectedStatus ==
|
||||
@@ -81,7 +82,7 @@ class _YourTendersDesktopPageState extends State<YourTendersDesktopPage>
|
||||
viewModel.likedTendersData != null) {
|
||||
return LikedDislikedTendersList(
|
||||
data: viewModel.likedTendersData!,
|
||||
status: 'disliked',
|
||||
status: TenderFeedback.disliked.value,
|
||||
isDesctop: true,
|
||||
);
|
||||
} 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/tenders_submitted.dart';
|
||||
|
||||
import '../../../core/constants/tender_feedback.dart';
|
||||
|
||||
class YourTendersMobilePage extends StatefulWidget {
|
||||
const YourTendersMobilePage({super.key});
|
||||
|
||||
@@ -65,7 +67,7 @@ class _YourTendersMobilePageState extends State<YourTendersMobilePage> {
|
||||
Expanded(
|
||||
child: LikedDislikedTendersList(
|
||||
data: viewModel.likedTendersData!,
|
||||
status: 'liked tenders',
|
||||
status: TenderFeedback.liked.value,
|
||||
isDesctop: false,
|
||||
),
|
||||
)
|
||||
@@ -75,7 +77,7 @@ class _YourTendersMobilePageState extends State<YourTendersMobilePage> {
|
||||
Expanded(
|
||||
child: LikedDislikedTendersList(
|
||||
data: viewModel.likedTendersData!,
|
||||
status: 'disliked',
|
||||
status: TenderFeedback.disliked.value,
|
||||
isDesctop: false,
|
||||
),
|
||||
)
|
||||
|
||||
@@ -24,7 +24,7 @@ class _YourTendersScreenState extends State<YourTendersScreen> {
|
||||
viewModel = context.read<YourTendersViewModel>();
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
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/tenders_submitted.dart';
|
||||
|
||||
import '../../../core/constants/tender_feedback.dart';
|
||||
import '../../shared/tablet_navigation_widget.dart';
|
||||
import '../../shared/tender_app_bar.dart';
|
||||
import '../strings/your_tenders_strings.dart';
|
||||
@@ -85,7 +86,7 @@ class _YourTendersTabletPageState extends State<YourTendersTabletPage>
|
||||
viewModel.likedTendersData != null) {
|
||||
return LikedDislikedTendersList(
|
||||
data: viewModel.likedTendersData!,
|
||||
status: 'liked',
|
||||
status: TenderFeedback.liked.value,
|
||||
isDesctop: false,
|
||||
);
|
||||
} else if (viewModel.selectedStatus ==
|
||||
@@ -93,7 +94,7 @@ class _YourTendersTabletPageState extends State<YourTendersTabletPage>
|
||||
viewModel.likedTendersData != null) {
|
||||
return LikedDislikedTendersList(
|
||||
data: viewModel.likedTendersData!,
|
||||
status: 'disliked',
|
||||
status: TenderFeedback.disliked.value,
|
||||
isDesctop: false,
|
||||
);
|
||||
} else if (viewModel.data != null) {
|
||||
|
||||
@@ -15,4 +15,7 @@ class YourTendersStrings {
|
||||
static const approvedTenders = 'Approved tenders';
|
||||
static const noTenders = 'No data available';
|
||||
static const selectPublicationRangeDate = 'Select publication date range';
|
||||
static const noLikedTenders = 'You haven’t liked any tenders yet !';
|
||||
static const noDislikedTenders = 'You haven’t disliked any tenders yet !';
|
||||
static const noTendersSubmitted = 'You haven’t 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/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/views/your_tenders/strings/your_tenders_strings.dart';
|
||||
import 'package:tm_app/views/your_tenders/widgets/tender_card.dart';
|
||||
|
||||
import '../../../core/constants/tender_feedback.dart';
|
||||
|
||||
class LikedDislikedTendersList extends StatefulWidget {
|
||||
final LikedTendersResponse data;
|
||||
final String status;
|
||||
@@ -54,7 +57,9 @@ class _LikedDislikedTendersListState extends State<LikedDislikedTendersList> {
|
||||
if (data.data?.feedback == null || data.data!.feedback!.isEmpty) {
|
||||
return Center(
|
||||
child: Text(
|
||||
'No ${widget.status} found',
|
||||
widget.status == TenderFeedback.liked.value
|
||||
? YourTendersStrings.noLikedTenders
|
||||
: YourTendersStrings.noDislikedTenders,
|
||||
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 '../../../core/constants/assets.dart';
|
||||
import '../../../core/constants/tender_approval_status.dart';
|
||||
import '../../../core/theme/colors.dart';
|
||||
import '../../../core/utils/size_config.dart';
|
||||
|
||||
@@ -29,7 +30,7 @@ class TenderCard extends StatelessWidget {
|
||||
statusIcon = AssetsManager.tickCircle;
|
||||
statusCardColor = AppColors.green20;
|
||||
statusTextColor = AppColors.green30;
|
||||
} else if (tender.status == 'submitted') {
|
||||
} else if (tender.status == TenderApprovalStatus.submitted.value) {
|
||||
backgroundColor = AppColors.grey0;
|
||||
borderColor = AppColors.grey30;
|
||||
statusIcon = null;
|
||||
|
||||
Reference in New Issue
Block a user