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> getSubmissions({ List? statuses, List? 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> getById(String id) => _networkManager.makeRequest( TenderSubmissionsApi.byId(id), TenderSubmissionResponse.fromJson, ); Future> getByTender(String tenderId) => _networkManager.makeRequest( TenderSubmissionsApi.byTender(tenderId), TenderSubmissionResponse.fromJson, ); Future> ensure( String tenderId, { String? companyId, }) => _networkManager.makeRequest( TenderSubmissionsApi.ensure(tenderId), TenderSubmissionResponse.fromJson, method: 'POST', queryParameters: { if (companyId?.isNotEmpty == true) 'company_id': companyId, }, ); Future> 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> getStats() => _networkManager.makeRequest( TenderSubmissionsApi.stats, TenderSubmissionStatsResponse.fromJson, ); }