Implement tender workflows and dashboard integration
continuous-integration/drone/push Build encountered an error

This commit is contained in:
AmirReza Jamali
2026-07-14 11:12:09 +03:30
parent ce170f9bc8
commit 72881df210
29 changed files with 1820 additions and 159 deletions
@@ -0,0 +1,84 @@
import 'package:tm_app/core/network/network_manager.dart';
import 'package:tm_app/core/utils/result.dart';
import 'package:tm_app/data/services/api/tender_submissions_api.dart';
import 'package:tm_app/data/services/model/tender_submission/tender_submission.dart';
class TenderSubmissionsService {
TenderSubmissionsService({required NetworkManager networkManager})
: _networkManager = networkManager;
final NetworkManager _networkManager;
Future<Result<TenderSubmissionsResponse>> getSubmissions({
List<String>? statuses,
List<String>? stages,
int? createdFrom,
int? createdTo,
int limit = 20,
int offset = 0,
String sortBy = 'updated_at',
String sortOrder = 'desc',
}) {
return _networkManager.makeRequest(
TenderSubmissionsApi.list,
TenderSubmissionsResponse.fromJson,
queryParameters: {
if (statuses?.isNotEmpty == true) 'status': statuses,
if (stages?.isNotEmpty == true) 'stage': stages,
if (createdFrom != null) 'created_from': createdFrom,
if (createdTo != null) 'created_to': createdTo,
'limit': limit,
'offset': offset,
'sort_by': sortBy,
'sort_order': sortOrder,
},
);
}
Future<Result<TenderSubmissionResponse>> getById(String id) =>
_networkManager.makeRequest(
TenderSubmissionsApi.byId(id),
TenderSubmissionResponse.fromJson,
);
Future<Result<TenderSubmissionResponse>> getByTender(String tenderId) =>
_networkManager.makeRequest(
TenderSubmissionsApi.byTender(tenderId),
TenderSubmissionResponse.fromJson,
);
Future<Result<TenderSubmissionResponse>> ensure(
String tenderId, {
String? companyId,
}) => _networkManager.makeRequest(
TenderSubmissionsApi.ensure(tenderId),
TenderSubmissionResponse.fromJson,
method: 'POST',
queryParameters: {
if (companyId?.isNotEmpty == true) 'company_id': companyId,
},
);
Future<Result<TenderSubmissionResponse>> updateStatus({
required String id,
required String status,
String? reason,
String? description,
}) => _networkManager.makeRequest(
TenderSubmissionsApi.status(id),
TenderSubmissionResponse.fromJson,
method: 'PATCH',
data: {
'status': status,
if (reason?.trim().isNotEmpty == true) 'reason': reason!.trim(),
if (description?.trim().isNotEmpty == true)
'description': description!.trim(),
},
);
Future<Result<TenderSubmissionStatsResponse>> getStats() =>
_networkManager.makeRequest(
TenderSubmissionsApi.stats,
TenderSubmissionStatsResponse.fromJson,
);
}