fixed services

This commit is contained in:
amirrezaghabeli
2025-08-27 13:03:09 +03:30
parent 8a972784d6
commit bcd499843b
20 changed files with 112 additions and 108 deletions
+1 -1
View File
@@ -1,8 +1,8 @@
import 'package:tm_app/data/services/model/login_response/login_response_model.dart';
import 'package:tm_app/data/services/model/logout_response/logout_response.dart';
import '../../core/utils/result.dart';
import '../services/auth_service.dart';
import '../services/model/logout_response/logout_response.dart';
class AuthRepository {
final AuthService _authService;
@@ -1,7 +1,5 @@
import 'package:tm_app/core/utils/result.dart';
import 'package:tm_app/data/services/home_service.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';
@@ -13,12 +11,6 @@ class HomeRepository {
: _homeService = homeService;
final HomeService _homeService;
Future<Result<HomeResponseModel>> getHome({
HomeRequestModel? homeRequestModel,
}) async {
return _homeService.getHome(homeRequestModel: homeRequestModel);
}
Future<Result<RecommendedTendersResponse>> getHomeRecommendedTenders({
required int limit,
required int offset,
@@ -28,7 +28,7 @@ class TendersRepository {
required String tenderId,
required String feedbackType,
}) async {
return _tendersService.feedback(
return _tendersService.toggleFeedback(
tenderId: tenderId,
feedbackType: feedbackType,
);
+4
View File
@@ -0,0 +1,4 @@
class AuthApi {
static const String login = '/api/v1/profile/login';
static const String logout = '/api/v1/profile/logout';
}
+13
View File
@@ -0,0 +1,13 @@
class HomeApi {
static const String recommendedTenders = '/api/v1/tenders/recommend';
static String getRecommendedTenders({
required int limit,
required int offset,
}) {
return '$recommendedTenders?limit=$limit&offset=$offset';
}
static const String tenderApprovals = '/api/v1/tender-approvals';
static const String tenderApprovalStats = '/api/v1/tender-approvals/stats';
static const String statsCompany = '/api/v1/feedback/stats/company';
}
+4
View File
@@ -0,0 +1,4 @@
class ProfileApi {
static const String profile = '/api/v1/profile';
static const String companyProfile = '/api/v1/companies';
}
@@ -0,0 +1,6 @@
class TenderDetailApi {
static const String tenderDetails = '/api/v1/tenders/details';
static String getTenderDetails({required String tenderId}) {
return '$tenderDetails/$tenderId';
}
}
+20
View File
@@ -0,0 +1,20 @@
class TendersApi {
static const String tenders = '/api/v1/tenders';
static String getTenders({required int limit, required int offset}) {
return '$tenders?limit=$limit&offset=$offset';
}
static const String feedbackTender = '/api/v1/feedback/tender';
static String getFeedbackForTender({required String tenderId}) {
return '$feedbackTender/$tenderId';
}
static const String feedback = '/api/v1/feedback';
static const String tenderApprovals = '/api/v1/tender-approvals';
static const String tenderApprovalsTender = '/api/v1/tender-approvals/tender';
static String getTenderApprovalById({required String tenderId}) {
return '$tenderApprovalsTender/$tenderId';
}
}
@@ -0,0 +1,4 @@
class YourTendersApi {
static const String tenderApprovalsStatus =
'/api/v1/tender-approvals?status=submitted';
}
+5 -2
View File
@@ -3,6 +3,8 @@
import 'dart:convert';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:tm_app/core/utils/logger.dart';
import 'package:tm_app/data/services/api/auth_api.dart';
import 'package:tm_app/data/services/model/login_response/login_response_model.dart';
import 'package:tm_app/data/services/model/logout_response/logout_response.dart';
@@ -22,7 +24,7 @@ class AuthService {
var data = jsonEncode({"password": password, "username": username});
final result = await _networkManager.makeRequest(
'/api/v1/profile/login',
AuthApi.login,
method: 'POST',
(json) => LoginResponseModel.fromJson(json),
data: data,
@@ -41,7 +43,7 @@ class AuthService {
Future<Result<LogoutResponse>> logout() async {
final result = await _networkManager.makeRequest(
'/api/v1/profile/logout',
AuthApi.logout,
method: 'DELETE',
(json) => LogoutResponse.fromJson(json),
);
@@ -52,5 +54,6 @@ class AuthService {
final prefs = await SharedPreferences.getInstance();
await prefs.remove('bearer');
await prefs.remove('refresh_token');
appLogger.info('tokens cleared!');
}
}
+5 -35
View File
@@ -1,12 +1,6 @@
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/api/home_api.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';
@@ -18,36 +12,12 @@ class HomeService {
: _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',
HomeApi.getRecommendedTenders(limit: limit, offset: offset),
method: 'GET',
(json) => RecommendedTendersResponse.fromJson(json),
);
@@ -56,7 +26,7 @@ class HomeService {
Future<Result<TenderApprovalsResponse>> getYourTenders() async {
final result = await _networkManager.makeRequest(
'/api/v1/tender-approvals',
HomeApi.tenderApprovals,
(json) => TenderApprovalsResponse.fromJson(json),
method: 'GET',
);
@@ -67,7 +37,7 @@ class HomeService {
Future<Result<TenderApprovalsStateResponse>>
getTendersApprovalsState() async {
final result = await _networkManager.makeRequest(
'/api/v1/tender-approvals/stats',
HomeApi.tenderApprovalStats,
(json) => TenderApprovalsStateResponse.fromJson(json),
method: 'GET',
);
@@ -77,7 +47,7 @@ class HomeService {
Future<Result<FeedbackStatResponse>> getFeedbackStats() async {
final result = await _networkManager.makeRequest(
'/api/v1/feedback/stats/company',
HomeApi.statsCompany,
(json) => FeedbackStatResponse.fromJson(json),
method: 'GET',
);
+3 -2
View File
@@ -1,3 +1,4 @@
import 'package:tm_app/data/services/api/profile_api.dart';
import 'package:tm_app/data/services/model/company_profile_response/company_profile_response.dart';
import 'package:tm_app/data/services/model/profile_response/profile_response.dart';
@@ -12,7 +13,7 @@ class ProfileService {
Future<Result<ProfileResponse>> getProfile() async {
final result = await _networkManager.makeRequest(
'/api/v1/profile',
ProfileApi.profile,
method: 'GET',
(json) => ProfileResponse.fromJson(json),
);
@@ -21,7 +22,7 @@ class ProfileService {
Future<Result<CompanyProfileResponse>> getCompanyProfile() async {
final result = await _networkManager.makeRequest(
'/api/v1/companies',
ProfileApi.companyProfile,
method: 'GET',
(json) => CompanyProfileResponse.fromJson(json),
);
+2 -1
View File
@@ -1,4 +1,5 @@
import 'package:tm_app/core/utils/result.dart';
import 'package:tm_app/data/services/api/tender_detail_api.dart';
import 'package:tm_app/data/services/model/tender_detail_response/tender_detail_response_model.dart';
import '../../core/network/network_manager.dart';
@@ -13,7 +14,7 @@ class TenderDetailService {
required String tenderId,
}) async {
final result = await _networkManager.makeRequest(
'/api/v1/tenders/details/$tenderId',
TenderDetailApi.getTenderDetails(tenderId: tenderId),
method: 'GET',
(json) => TenderDetailResponseModel.fromJson(json),
);
+7 -6
View File
@@ -1,6 +1,7 @@
import 'dart:convert';
import 'package:tm_app/core/utils/result.dart';
import 'package:tm_app/data/services/api/tenders_api.dart';
import 'package:tm_app/data/services/model/feedback_response/feedback_response.dart';
import 'package:tm_app/data/services/model/tender_approvals_by_id_response/tender_approvals_by_id_response.dart';
import 'package:tm_app/data/services/model/tender_approvals_toggle_response/tender_approvals_toggle_response.dart';
@@ -18,7 +19,7 @@ class TendersService {
required int offset,
}) async {
final result = await _networkManager.makeRequest(
'/api/v1/tenders?limit=$limit&offset=$offset',
TendersApi.getTenders(limit: limit, offset: offset),
method: 'GET',
(json) => TendersResponse.fromJson(json),
);
@@ -29,14 +30,14 @@ class TendersService {
required String tenderId,
}) async {
final result = await _networkManager.makeRequest(
'/api/v1/feedback/tender/$tenderId',
TendersApi.getFeedbackForTender(tenderId: tenderId),
method: 'GET',
(json) => FeedbackResponse.fromJson(json),
);
return result;
}
Future<Result<FeedbackResponse>> feedback({
Future<Result<FeedbackResponse>> toggleFeedback({
required String tenderId,
required String feedbackType,
}) async {
@@ -45,7 +46,7 @@ class TendersService {
'tender_id': tenderId,
});
final result = await _networkManager.makeRequest(
'/api/v1/feedback',
TendersApi.feedback,
method: 'POST',
(json) => FeedbackResponse.fromJson(json),
data: data,
@@ -64,7 +65,7 @@ class TendersService {
'status': status,
});
final result = await _networkManager.makeRequest(
'/api/v1/tender-approvals',
TendersApi.tenderApprovals,
method: 'POST',
(json) => TenderApprovalsToggleResponse.fromJson(json),
data: data,
@@ -76,7 +77,7 @@ class TendersService {
required String tenderId,
}) async {
final result = await _networkManager.makeRequest(
'/api/v1/tender-approvals/tender/$tenderId',
TendersApi.getTenderApprovalById(tenderId: tenderId),
method: 'GET',
(json) => TenderApprovalsByIdResponse.fromJson(json),
);
+7 -19
View File
@@ -1,6 +1,5 @@
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/api/your_tenders_api.dart';
import 'package:tm_app/data/services/model/tender_approvals_response/tender_approvals_response.dart';
import '../../../core/network/network_manager.dart';
@@ -12,23 +11,12 @@ class YourTendersService {
final NetworkManager _networkManager;
Future<Result<TenderApprovalsResponse>> getApprovedTenders() async {
try {
final result = await _networkManager.makeRequest(
'/api/v1/tender-approvals?status=submitted',
(json) => TenderApprovalsResponse.fromJson(json),
method: 'GET',
);
final result = await _networkManager.makeRequest(
YourTendersApi.tenderApprovalsStatus,
(json) => TenderApprovalsResponse.fromJson(json),
method: 'GET',
);
return result;
} on DioException catch (e) {
appLogger.error('get submitted tenders failed: $e');
return Result.error(e);
} on Exception catch (e, stackTrace) {
appLogger.error(
'get submitted tenders failed: $e',
stackTrace: stackTrace,
);
return Result.error(Exception(e));
}
return result;
}
}