85 lines
2.6 KiB
Dart
85 lines
2.6 KiB
Dart
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,
|
|
);
|
|
}
|