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/tenders_mock_data.dart'; import 'package:tm_app/data/services/model/tenders/tender_dislike_response/tender_dislike_response.dart'; import 'package:tm_app/data/services/model/tenders/tender_like_response/tender_like_response.dart'; import 'package:tm_app/data/services/model/tenders/tender_reject_response/tender_reject_response.dart'; import 'package:tm_app/data/services/model/tenders/tender_submit_response/tender_submit_response.dart'; import 'package:tm_app/data/services/model/tenders/tenders_request/tenders_request.dart'; import 'package:tm_app/data/services/model/tenders/tenders_response/tenders_response.dart'; import 'package:tm_app/data/services/network_manager.dart'; class TendersService { TendersService({required NetworkManager networkManager}) : _networkManager = networkManager; final NetworkManager _networkManager; Future> getTenders({ TendersRequest? tendersRequestModel, }) async { try { // final result = await _networkManager.makeRequest( // '/api/v1/tenders', // (json) => TendersResponse.fromJson(json), // method: 'GET', // ); await Future.delayed(Duration(seconds: 2)); appLogger.info('get tenders success'); // TODO: will change when api is ready return Result.ok(TendersResponse.fromJson(jsonDecode(tendersMockData))); } on DioException catch (e) { appLogger.error('get tenders failed: $e'); return Result.error(e); } on Exception catch (e, stackTrace) { appLogger.error('get tenders failed: $e', stackTrace: stackTrace); return Result.error(Exception(e)); } } Future> likeTender() async { try { // final result = await _networkManager.makeRequest( // '/api/v1/tenders', // (json) => TenderLikeResponse.fromJson(json), // method: 'POST', // ); // await Future.delayed(Duration(seconds: 2)); appLogger.info('like tender success'); // TODO: will change when api is ready return Result.ok( TenderLikeResponse.fromJson({'message': 'Tender liked successfully'}), ); } on DioException catch (e) { appLogger.error('like tender failed: $e'); return Result.error(e); } on Exception catch (e, stackTrace) { appLogger.error('like tender failed: $e', stackTrace: stackTrace); return Result.error(Exception(e)); } } Future> dislikeTender() async { try { // final result = await _networkManager.makeRequest( // '/api/v1/tenders', // (json) => TenderDislikeResponse.fromJson(json), // method: 'POST', // ); // await Future.delayed(Duration(seconds: 2)); appLogger.info('dislike tender success'); // TODO: will change when api is ready return Result.ok( TenderDislikeResponse.fromJson({ 'message': 'Tender disliked successfully', }), ); } on DioException catch (e) { appLogger.error('dislike tender failed: $e'); return Result.error(e); } on Exception catch (e, stackTrace) { appLogger.error('dislike tender failed: $e', stackTrace: stackTrace); return Result.error(Exception(e)); } } Future> submitTender() async { try { // final result = await _networkManager.makeRequest( // '/api/v1/tenders', // (json) => TenderSubmitResponse.fromJson(json), // method: 'POST', // ); // await Future.delayed(Duration(seconds: 2)); appLogger.info('submit tender success'); // TODO: will change when api is ready return Result.ok( TenderSubmitResponse.fromJson({ 'message': 'Tender submitted successfully', }), ); } on DioException catch (e) { appLogger.error('submit tender failed: $e'); return Result.error(e); } on Exception catch (e, stackTrace) { appLogger.error('submit tender failed: $e', stackTrace: stackTrace); return Result.error(Exception(e)); } } Future> rejectTender() async { try { // final result = await _networkManager.makeRequest( // '/api/v1/tenders', // (json) => TenderRejectResponse.fromJson(json), // method: 'POST', // ); // await Future.delayed(Duration(seconds: 2)); appLogger.info('reject tender success'); // TODO: will change when api is ready return Result.ok( TenderRejectResponse.fromJson({ 'message': 'Tender rejected successfully', }), ); } on DioException catch (e) { appLogger.error('reject tender failed: $e'); return Result.error(e); } on Exception catch (e, stackTrace) { appLogger.error('reject tender failed: $e', stackTrace: stackTrace); return Result.error(Exception(e)); } } }