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