72 lines
2.5 KiB
Dart
72 lines
2.5 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:dio/dio.dart';
|
|
import 'package:tm_app/core/utils/logger.dart';
|
|
import 'package:tm_app/core/utils/result.dart';
|
|
import 'package:tm_app/data/services/mock_data/home_mock_data.dart';
|
|
import 'package:tm_app/data/services/model/home/home_request/home_request_model.dart';
|
|
import 'package:tm_app/data/services/model/home/home_response/home_response_model.dart';
|
|
import 'package:tm_app/data/services/model/recommended_tenders_response/recommended_tenders_response.dart';
|
|
import 'package:tm_app/data/services/model/tender_approvals_response/tender_approvals_response.dart';
|
|
|
|
import '../../core/network/network_manager.dart';
|
|
|
|
class HomeService {
|
|
HomeService({required NetworkManager networkManager})
|
|
: _networkManager = networkManager;
|
|
final NetworkManager _networkManager;
|
|
|
|
Future<Result<HomeResponseModel>> getHome({
|
|
HomeRequestModel? homeRequestModel,
|
|
}) async {
|
|
try {
|
|
// final result = await _networkManager.makeRequest(
|
|
// '/api/v1/home',
|
|
// (json) => HomeResponseModel.fromJson(json),
|
|
// method: 'GET',
|
|
// );
|
|
await Future.delayed(Duration(seconds: 2));
|
|
appLogger.info('get home success');
|
|
// TODO: will change when api is ready
|
|
return Result.ok(
|
|
HomeResponseModel.fromJson(jsonDecode(homeMockData)['data']),
|
|
);
|
|
} on DioException catch (e) {
|
|
appLogger.error('get home failed: $e');
|
|
return Result.error(e);
|
|
} on Exception catch (e, stackTrace) {
|
|
appLogger.error('get home failed: $e', stackTrace: stackTrace);
|
|
return Result.error(Exception(e));
|
|
}
|
|
}
|
|
|
|
Future<Result<RecommendedTendersResponse>> getRecommendedTenders({
|
|
required int limit,
|
|
required int offset,
|
|
}) async {
|
|
final result = await _networkManager.makeRequest(
|
|
'/api/v1/tenders/recommend?limit=$limit&offset=$offset',
|
|
method: 'GET',
|
|
(json) => RecommendedTendersResponse.fromJson(json),
|
|
);
|
|
return result;
|
|
}
|
|
Future<Result<TenderApprovalsResponse>> getYourTenders() async {
|
|
try {
|
|
final result = await _networkManager.makeRequest(
|
|
'/api/v1/tender-approvals',
|
|
(json) => TenderApprovalsResponse.fromJson(json),
|
|
method: 'GET',
|
|
);
|
|
|
|
return result;
|
|
} on DioException catch (e) {
|
|
appLogger.error('get approved tenders failed: $e');
|
|
return Result.error(e);
|
|
} on Exception catch (e, stackTrace) {
|
|
appLogger.error('get approved tenders failed: $e', stackTrace: stackTrace);
|
|
return Result.error(Exception(e));
|
|
}
|
|
}
|
|
}
|