43 lines
1.5 KiB
Dart
43 lines
1.5 KiB
Dart
import 'package:tm_app/core/utils/result.dart';
|
|
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 '../../../core/network/network_manager.dart';
|
|
import 'model/request_models/tender_feedback_request_model/tender_feedback_request_model.dart';
|
|
|
|
class LikedTendersService {
|
|
LikedTendersService({required NetworkManager networkManager})
|
|
: _networkManager = networkManager;
|
|
|
|
final NetworkManager _networkManager;
|
|
|
|
Future<Result<LikedTendersResponse>> getLikedTenders({
|
|
required TenderFeedbackRequestModel requestModel,
|
|
}) async {
|
|
final uri = LikedTendersApi.getTendersFeedback(
|
|
limit: requestModel.limit,
|
|
offset: requestModel.offset,
|
|
feedbackType: requestModel.feedbackType,
|
|
dateFrom: requestModel.dateFrom,
|
|
dateTo: requestModel.dateTo,
|
|
);
|
|
|
|
final result = await _networkManager.makeRequest(uri, (json) {
|
|
// Feedback pagination is returned at the envelope root, while the
|
|
// legacy app model stores it beside data.feedback.
|
|
final normalized = Map<String, dynamic>.from(json);
|
|
final data = normalized['data'];
|
|
final meta = normalized['meta'];
|
|
if (data is Map && meta is Map) {
|
|
normalized['data'] = {
|
|
...Map<String, dynamic>.from(data),
|
|
'meta': Map<String, dynamic>.from(meta),
|
|
};
|
|
}
|
|
return LikedTendersResponse.fromJson(normalized);
|
|
}, method: 'GET');
|
|
|
|
return result;
|
|
}
|
|
}
|