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/feedback_stats_response/feedback_stat_response.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 'package:tm_app/data/services/model/tender_approvals_state_response/tender_approvals_state_response.dart'; import '../../core/network/network_manager.dart'; class HomeService { HomeService({required NetworkManager networkManager}) : _networkManager = networkManager; final NetworkManager _networkManager; Future> 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> 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> getYourTenders() async { final result = await _networkManager.makeRequest( '/api/v1/tender-approvals', (json) => TenderApprovalsResponse.fromJson(json), method: 'GET', ); return result; } Future> getTendersApprovalsState() async { final result = await _networkManager.makeRequest( '/api/v1/tender-approvals/stats', (json) => TenderApprovalsStateResponse.fromJson(json), method: 'GET', ); return result; } Future> getFeedbackStats() async { final result = await _networkManager.makeRequest( '/api/v1/feedback/stats/company', (json) => FeedbackStatResponse.fromJson(json), method: 'GET', ); return result; } }