Files
tm_app/lib/data/services/tenders_service.dart
T
2025-08-12 14:44:18 +03:30

137 lines
5.0 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/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 '../../core/network/network_manager.dart';
class TendersService {
TendersService({required NetworkManager networkManager})
: _networkManager = networkManager;
final NetworkManager _networkManager;
Future<Result<TendersResponse>> 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<Result<TenderLikeResponse>> 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<Result<TenderDislikeResponse>> 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<Result<TenderSubmitResponse>> 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<Result<TenderRejectResponse>> 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));
}
}
}