get like tenders refactor services

This commit is contained in:
amirrezaghabeli
2025-09-08 10:48:05 +03:30
parent 3b6d049681
commit daba428d67
11 changed files with 72 additions and 66 deletions
+2 -2
View File
@@ -8,13 +8,13 @@ class AppConfig {
// این متد بر اساس محیط فعال، URL مناسب را برمی‌گرداند.
static String get apiBaseUrl {
// return 'http://10.0.2.2:8081';
return 'http://10.0.2.2:8081';
// return '192.168.1.103:8081';
// if (isDevelopment) {
// // Handle different platforms for local development
// if (kIsWeb) {
// For web, use localhost
return 'https://app.opplens.com';
// return 'https://app.opplens.com';
// return 'http://localhost:8081';
// } else {
// For Android emulator, use 10.0.2.2 (special IP for host machine)
+4 -2
View File
@@ -64,8 +64,10 @@ List<SingleChildWidget> get repositories {
Provider(create: (context) => AuthRepository(authService: context.read())),
Provider(
create:
(context) =>
YourTendersRepository(yourTendersService: context.read()),
(context) => YourTendersRepository(
yourTendersService: context.read(),
likedTendersService: context.read(),
),
),
Provider(
create:
@@ -1,6 +1,7 @@
import 'package:tm_app/core/utils/result.dart';
import 'package:tm_app/data/services/liked_tenders_service.dart';
import 'package:tm_app/data/services/model/liked_tenders_response/liked_tenders_response.dart';
import 'package:tm_app/data/services/model/request_models/tender_feedback_request_model/tender_feedback_request_model.dart';
class LikedTendersRepository {
final LikedTendersService _likedTendersService;
@@ -8,9 +9,8 @@ class LikedTendersRepository {
: _likedTendersService = likedTendersService;
Future<Result<LikedTendersResponse>> getLikedTenders({
int offset = 0,
int limit = 20,
required TenderFeedbackRequestModel requestModel,
}) {
return _likedTendersService.getLikedTenders(offset: offset, limit: limit);
return _likedTendersService.getLikedTenders(requestModel: requestModel);
}
}
@@ -1,13 +1,20 @@
import 'package:tm_app/core/utils/result.dart';
import 'package:tm_app/data/services/liked_tenders_service.dart';
import 'package:tm_app/data/services/model/liked_tenders_response/liked_tenders_response.dart';
import 'package:tm_app/data/services/model/request_models/get_tenders_request_model/get_tenders_request_model.dart';
import 'package:tm_app/data/services/model/tender_approvals_response/tender_approvals_response.dart';
import 'package:tm_app/data/services/your_tenders_service.dart';
import '../services/model/request_models/tender_feedback_request_model/tender_feedback_request_model.dart';
class YourTendersRepository {
final YourTendersService _yourTendersService;
YourTendersRepository({required YourTendersService yourTendersService})
: _yourTendersService = yourTendersService;
final LikedTendersService _likedTendersService;
YourTendersRepository({
required YourTendersService yourTendersService,
required LikedTendersService likedTendersService,
}) : _yourTendersService = yourTendersService,
_likedTendersService = likedTendersService;
Future<Result<TenderApprovalsResponse>> getApprovedTenders({
required int limit,
@@ -30,18 +37,8 @@ class YourTendersRepository {
}
Future<Result<LikedTendersResponse>> getTendersFeedback({
required int limit,
required int offset,
required String feedbackType,
required String dateFrom,
required String dateTo,
required TenderFeedbackRequestModel requestModel,
}) {
return _yourTendersService.getTendersFeedback(
limit: limit,
offset: offset,
feedbackType: feedbackType,
dateFrom: dateFrom,
dateTo: dateTo,
);
return _likedTendersService.getLikedTenders(requestModel: requestModel);
}
}
+14 -2
View File
@@ -1,4 +1,16 @@
class LikedTendersApi {
static const String likedTenders =
'/api/v1/feedback?feedback_type=like';
static const String tendersFeedback = '/api/v1/feedback';
static String getTendersFeedback({
required int limit,
required int offset,
required String feedbackType,
required String dateFrom,
required String dateTo,
}) {
if (dateFrom.isNotEmpty && dateTo.isNotEmpty) {
return '$tendersFeedback?feedback_type=$feedbackType&limit=$limit&offset=$offset&date_from=$dateFrom&date_to=$dateTo';
}
return '$tendersFeedback?feedback_type=$feedbackType&limit=$limit&offset=$offset';
}
}
@@ -36,19 +36,4 @@ class YourTendersApi {
return url;
}
static const String tendersFeedback = '/api/v1/feedback';
static String getTendersFeedback({
required int limit,
required int offset,
required String feedbackType,
required String dateFrom,
required String dateTo,
}) {
if (dateFrom.isNotEmpty && dateTo.isNotEmpty) {
return '$tendersFeedback?feedback_type=$feedbackType&limit=$limit&offset=$offset&date_from=$dateFrom&date_to=$dateTo';
}
return '$tendersFeedback?feedback_type=$feedbackType&limit=$limit&offset=$offset';
}
}
+9 -3
View File
@@ -3,6 +3,7 @@ import 'package:tm_app/data/services/api/liked_tenders_api.dart';
import 'package:tm_app/data/services/model/liked_tenders_response/liked_tenders_response.dart';
import '../../../core/network/network_manager.dart';
import 'model/request_models/tender_feedback_request_model/tender_feedback_request_model.dart';
class LikedTendersService {
LikedTendersService({required NetworkManager networkManager})
@@ -11,10 +12,15 @@ class LikedTendersService {
final NetworkManager _networkManager;
Future<Result<LikedTendersResponse>> getLikedTenders({
int offset = 0,
int limit = 20,
required TenderFeedbackRequestModel requestModel,
}) async {
final uri = '${LikedTendersApi.likedTenders}&limit=$limit&offset=$offset';
final uri = LikedTendersApi.getTendersFeedback(
limit: requestModel.limit,
offset: requestModel.offset,
feedbackType: requestModel.feedbackType,
dateFrom: requestModel.dateFrom,
dateTo: requestModel.dateTo,
);
final result = await _networkManager.makeRequest(
uri,
@@ -0,0 +1,15 @@
class TenderFeedbackRequestModel {
final String feedbackType;
final String dateFrom;
final String dateTo;
final int limit;
final int offset;
TenderFeedbackRequestModel({
required this.feedbackType,
this.dateFrom = '',
this.dateTo = '',
this.limit = 10,
this.offset = 0,
});
}
@@ -1,6 +1,5 @@
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/liked_tenders_response/liked_tenders_response.dart';
import 'package:tm_app/data/services/model/tender_approvals_response/tender_approvals_response.dart';
import '../../../core/network/network_manager.dart';
@@ -48,25 +47,4 @@ class YourTendersService {
);
return result;
}
Future<Result<LikedTendersResponse>> getTendersFeedback({
required int limit,
required int offset,
required String feedbackType,
required String dateFrom,
required String dateTo,
}) async {
final result = await _networkManager.makeRequest(
YourTendersApi.getTendersFeedback(
limit: limit,
offset: offset,
feedbackType: feedbackType,
dateFrom: dateFrom,
dateTo: dateTo,
),
(json) => LikedTendersResponse.fromJson(json),
method: 'GET',
);
return result;
}
}
@@ -8,6 +8,7 @@ import 'package:tm_app/data/services/model/tender_approvals_toggle_response/tend
import 'package:tm_app/view_models/home_view_model.dart';
import '../data/services/model/feedback_response/feedback_response.dart';
import '../data/services/model/request_models/tender_feedback_request_model/tender_feedback_request_model.dart';
import '../data/services/model/tender_approvals_by_id_response/tender_approvals_by_id_response.dart';
import '../data/services/model/tender_approvals_data/tender_approvals_data.dart';
@@ -83,9 +84,14 @@ class LikedTendersViewModel with ChangeNotifier {
errorMessage = null;
final result = await _likedTendersRepository.getLikedTenders(
final requestModel = TenderFeedbackRequestModel(
offset: _offset,
limit: _limit,
feedbackType: 'like',
);
final result = await _likedTendersRepository.getLikedTenders(
requestModel: requestModel,
);
switch (result) {
+7 -2
View File
@@ -7,6 +7,7 @@ import 'package:tm_app/data/services/model/tender_approvals_response/tender_appr
import 'package:tm_app/views/your_tenders/strings/your_tenders_strings.dart';
import '../data/services/model/request_models/get_tenders_request_model/get_tenders_request_model.dart';
import '../data/services/model/request_models/tender_feedback_request_model/tender_feedback_request_model.dart';
class YourTendersViewModel with ChangeNotifier {
final YourTendersRepository yourTendersRepository;
@@ -132,14 +133,18 @@ class YourTendersViewModel with ChangeNotifier {
}
notifyListeners();
final result = await yourTendersRepository.getTendersFeedback(
limit: _limit,
final requestModel = TenderFeedbackRequestModel(
offset: _offset,
limit: _limit,
feedbackType: _currentFeedbackType ?? feedbackType,
dateFrom: startDateUnix,
dateTo: endDateUnix,
);
final result = await yourTendersRepository.getTendersFeedback(
requestModel: requestModel,
);
switch (result) {
case Ok<LikedTendersResponse>():
final incoming = result.value;