filters in your tenders fixed

This commit is contained in:
amirrezaghabeli
2025-09-03 13:25:40 +03:30
parent 70181848aa
commit 1e3bd9d9a8
12 changed files with 363 additions and 252 deletions
@@ -1,4 +1,5 @@
import 'package:tm_app/core/utils/result.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/your_tenders_service.dart';
@@ -7,8 +8,18 @@ class YourTendersRepository {
YourTendersRepository({required YourTendersService yourTendersService})
: _yourTendersService = yourTendersService;
Future<Result<TenderApprovalsResponse>> getApprovedTenders() {
return _yourTendersService.getApprovedTenders();
Future<Result<TenderApprovalsResponse>> getApprovedTenders({
required int limit,
required int offset,
required String createdFrom,
required String createdTo,
}) {
return _yourTendersService.getApprovedTenders(
limit: limit,
offset: offset,
createdFrom: createdFrom,
createdTo: createdTo,
);
}
Future<Result<TenderApprovalsResponse>> getTenders({
@@ -24,4 +35,20 @@ class YourTendersRepository {
createdTo: createdTo,
);
}
Future<Result<LikedTendersResponse>> getTendersFeedback({
required int limit,
required int offset,
required String feedbackType,
required String dateFrom,
required String dateTo,
}) {
return _yourTendersService.getTendersFeedback(
limit: limit,
offset: offset,
feedbackType: feedbackType,
dateFrom: dateFrom,
dateTo: dateTo,
);
}
}
@@ -2,6 +2,19 @@ class YourTendersApi {
static const String tenderApprovalsStatus =
'/api/v1/tender-approvals?status=submitted';
static String getTenderApprovalsStatus({
required int limit,
required int offset,
required String createdFrom,
required String createdTo,
}) {
if (createdFrom.isNotEmpty && createdTo.isNotEmpty) {
return '$tenderApprovalsStatus&created_from=$createdFrom&created_to=$createdTo';
}
return tenderApprovalsStatus;
}
// return '$tenderApprovalsStatus?limit=$limit&offset=$offset';
static const String tenderApproval = '/api/v1/tender-approvals';
static String getTenders({
@@ -15,4 +28,19 @@ class YourTendersApi {
}
return '$tenderApproval?limit=$limit&offset=$offset';
}
static const String tendersFeedback = '/api/v1/feedback';
static String getTendersFeedback({
required int limit,
required int offset,
required String feedbackType,
required String dateFrom,
required String dateTo,
}) {
if (dateFrom.isNotEmpty && dateTo.isNotEmpty) {
return '$tendersFeedback?feedback_type=$feedbackType&limit=$limit&offset=$offset&date_from=$dateFrom&date_to=$dateTo';
}
return '$tendersFeedback?feedback_type=$feedbackType&limit=$limit&offset=$offset';
}
}
@@ -1,51 +0,0 @@
const String homeMockData = '''
{
"data": {
"partnership": "0.75",
"self_apply": "12",
"contracting": "36",
"tender_submitted": "12",
"approved_tenders": "03",
"tender_value": "\$250,000",
"thunder_status": "23",
"your_tenders": [
{
"created_time": "2025-01-01",
"tender_id": "1234567890",
"status": "Completed",
"title": "Lorem ipsum dolor sit amet consectetur. Sed mi tortor eu purus senectus.",
"description": "Lorem ipsum dolor sit amet consectetur. Sed mi tortor eu purus senectus.Lorem ipsum dolor sit amet consectetur",
"location": "Sweden",
"type": "Self Apply"
},
{
"created_time": "2025-01-01",
"tender_id": "1234567890",
"status": "Completed",
"title": "Lorem ipsum dolor sit amet consectetur. Sed mi tortor eu purus senectus.",
"description": "Lorem ipsum dolor sit amet consectetur. Sed mi tortor eu purus senectus.Lorem ipsum dolor sit amet consectetur",
"location": "Sweden",
"type": "Partner Ship"
},
{
"created_time": "2025-01-01",
"tender_id": "1234567890",
"status": "Completed",
"title": "Lorem ipsum dolor sit amet consectetur. Sed mi tortor eu purus senectus.",
"description": "Lorem ipsum dolor sit amet consectetur. Sed mi tortor eu purus senectus.Lorem ipsum dolor sit amet consectetur",
"location": "Sweden",
"type": "Self Apply"
},
{
"created_time": "2025-01-01",
"tender_id": "1234567890",
"status": "Completed",
"title": "Lorem ipsum dolor sit amet consectetur. Sed mi tortor eu purus senectus.",
"description": "Lorem ipsum dolor sit amet consectetur. Sed mi tortor eu purus senectus.Lorem ipsum dolor sit amet consectetur",
"location": "Sweden",
"type": "Partner Ship"
}
]
}
}
''';
@@ -1,62 +0,0 @@
const String mockYourTendersData = '''
{
"approvedTenders": [
{
"date": "2025-05-21",
"title": "Lorem ipsum dolor sit amet consectetur. Sed mi tortor eu purus senectus.",
"description": "Lorem ipsum dolor sit amet consectetur. Volutpat velit tincidunt amet diam. Placerat congue ut Sed facilisis faucibus porttitor. Proin suspendisse eu euismod sit lorem quis. Suscipit ...",
"location": "Sweden",
"countryFlag": "assets/icons/SE.png",
"status": "Completed",
"projectStatus": "Self Apply"
},
{
"date": "2025-05-21",
"title": "Lorem ipsum dolor sit amet consectetur. Sed mi tortor eu purus senectus.",
"description": "Lorem ipsum dolor sit amet consectetur. Volutpat velit tincidunt amet diam. Placerat congue ut Sed facilisis faucibus porttitor.",
"location": "Thailand",
"countryFlag": "assets/icons/SE.png",
"status": "Completed",
"projectStatus": "Partner Ship"
},
{
"date": "2025-05-21",
"title": "Lorem ipsum dolor sit amet consectetur.",
"description": "Lorem ipsum dolor sit amet consectetur. Volutpat facilisis faucibus porttitor. Proin suspendisse eu euismod sit lorem quis.",
"location": "Italy",
"countryFlag": "assets/icons/SE.png",
"status": "Completed",
"projectStatus": "Self Apply"
}
],
"tendersSubmitted": [
{
"date": "2025-05-21",
"title": "Lorem ipsum dolor sit amet consectetur. Sed mi tortor eu purus senectus.",
"description": "Lorem ipsum dolor sit amet consectetur. Volutpat velit tincidunt amet diam. Placerat congue ut Sed facilisis faucibus porttitor. Proin suspendisse eu euismod sit lorem quis.",
"location": "Sweden",
"countryFlag": "assets/icons/SE.png",
"status": "Won",
"projectStatus": "Self Apply"
},
{
"date": "2025-05-21",
"title": "Lorem ipsum dolor sit amet consectetur. Sed mi tortor eu purus senectus.",
"description": "Lorem ipsum dolor sit amet consectetur. Volutpat velit tincidunt amet diam. Placerat congue ut Sed facilisis faucibus porttitor.",
"location": "Thailand",
"countryFlag": "assets/icons/SE.png",
"status": "Reject",
"projectStatus": "Partner Ship"
},
{
"date": "2025-05-21",
"title": "Lorem ipsum dolor sit amet consectetur.",
"description": "Lorem ipsum dolor sit amet consectetur. Volutpat facilisis faucibus porttitor. Proin suspendisse eu euismod sit lorem quis.",
"location": "Italy",
"countryFlag": "assets/icons/SE.png",
"status": "Won",
"projectStatus": "Self Apply"
}
]
}
''';
@@ -1,24 +0,0 @@
const tenderDetailMockData = '''
{
"data": {
"date": "2025-05-21",
"status": "Open",
"title": "Operation, support and further development of open e-platform Operation, support and further development of open e-platform",
"id": "JNDFKMDV-100JF",
"approvalDate": "2025-05-21",
"submissionDate": "2025-05-21",
"client": "Procurement Notice Procurement NoticeProcurement Notice",
"deliveryLocation": "Norrbotten County",
"referenceNumber": "KLF 2025/120",
"country": "UK",
"flagAsset": "assets/icons/SE.png",
"locationTitle": "Lorem ipsum is amet",
"locationDescription": "Luleå Municipality is procuring on behalf of Norrbottens e-board (all municipalities in Norrbotten). The procurement includes operation, support, and further development of the existing open e-platform. No additional information, amendments, or answers to questions will be provided after June 16.",
"documentName": "PDF, Document",
"documentUrl": "https://www.tenders.com",
"profileMatch": 0.75,
"incompleteResume": true,
"incompleteResumeReason": "No experience in e-platform development"
}
}
''';
@@ -1,76 +0,0 @@
final String tendersMockData = '''
{
"tenders": [
{
"tender_id": "KLF 2025/120",
"title": "Tender 1",
"description": "Description 1",
"created_time": "2021-01-01",
"deadline": "2025-06-15",
"location": "Sweden",
"type": "Self Apply",
"profile_match": 75,
"liked": false,
"disliked": false,
"rejected": false,
"submitted": false
},
{
"tender_id": "KLF 2025/121",
"title": "Tender 2",
"description": "Description 2",
"created_time": "2021-02-01",
"deadline": "2025-07-20",
"location": "Norway",
"type": "Invitation",
"profile_match": 85,
"liked": false,
"disliked": false,
"rejected": false,
"submitted": false
},
{
"tender_id": "KLF 2025/122",
"title": "Tender 3",
"description": "Description 3",
"created_time": "2021-03-01",
"deadline": "2025-08-10",
"location": "Finland",
"type": "Self Apply",
"profile_match": 65,
"liked": false,
"disliked": false,
"rejected": false,
"submitted": false
},
{
"tender_id": "KLF 2025/123",
"title": "Tender 4",
"description": "Description 4",
"created_time": "2021-04-01",
"deadline": "2025-09-05",
"location": "Denmark",
"type": "Invitation",
"profile_match": 90,
"liked": false,
"disliked": false,
"rejected": false,
"submitted": false
},
{
"tender_id": "KLF 2025/124",
"title": "Tender 5",
"description": "Description 5",
"created_time": "2021-05-01",
"deadline": "2025-10-12",
"location": "Iceland",
"type": "Self Apply",
"profile_match": 70,
"liked": false,
"disliked": false,
"rejected": false,
"submitted": false
}
]
}
''';
+34 -2
View File
@@ -1,5 +1,6 @@
import 'package:tm_app/core/utils/result.dart';
import 'package:tm_app/data/services/api/your_tenders_api.dart';
import 'package:tm_app/data/services/model/liked_tenders_response/liked_tenders_response.dart';
import 'package:tm_app/data/services/model/tender_approvals_response/tender_approvals_response.dart';
import '../../../core/network/network_manager.dart';
@@ -10,9 +11,19 @@ class YourTendersService {
final NetworkManager _networkManager;
Future<Result<TenderApprovalsResponse>> getApprovedTenders() async {
Future<Result<TenderApprovalsResponse>> getApprovedTenders({
required int limit,
required int offset,
required String createdFrom,
required String createdTo,
}) async {
final result = await _networkManager.makeRequest(
YourTendersApi.tenderApprovalsStatus,
YourTendersApi.getTenderApprovalsStatus(
limit: limit,
offset: offset,
createdFrom: createdFrom,
createdTo: createdTo,
),
(json) => TenderApprovalsResponse.fromJson(json),
method: 'GET',
);
@@ -38,4 +49,25 @@ class YourTendersService {
);
return result;
}
Future<Result<LikedTendersResponse>> getTendersFeedback({
required int limit,
required int offset,
required String feedbackType,
required String dateFrom,
required String dateTo,
}) async {
final result = await _networkManager.makeRequest(
YourTendersApi.getTendersFeedback(
limit: limit,
offset: offset,
feedbackType: feedbackType,
dateFrom: dateFrom,
dateTo: dateTo,
),
(json) => LikedTendersResponse.fromJson(json),
method: 'GET',
);
return result;
}
}