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 مناسب را برمی‌گرداند. // این متد بر اساس محیط فعال، URL مناسب را برمی‌گرداند.
static String get apiBaseUrl { static String get apiBaseUrl {
// return 'http://10.0.2.2:8081'; return 'http://10.0.2.2:8081';
// return '192.168.1.103:8081'; // return '192.168.1.103:8081';
// if (isDevelopment) { // if (isDevelopment) {
// // Handle different platforms for local development // // Handle different platforms for local development
// if (kIsWeb) { // if (kIsWeb) {
// For web, use localhost // For web, use localhost
return 'https://app.opplens.com'; // return 'https://app.opplens.com';
// return 'http://localhost:8081'; // return 'http://localhost:8081';
// } else { // } else {
// For Android emulator, use 10.0.2.2 (special IP for host machine) // 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) => AuthRepository(authService: context.read())),
Provider( Provider(
create: create:
(context) => (context) => YourTendersRepository(
YourTendersRepository(yourTendersService: context.read()), yourTendersService: context.read(),
likedTendersService: context.read(),
),
), ),
Provider( Provider(
create: create:
@@ -1,6 +1,7 @@
import 'package:tm_app/core/utils/result.dart'; import 'package:tm_app/core/utils/result.dart';
import 'package:tm_app/data/services/liked_tenders_service.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/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 { class LikedTendersRepository {
final LikedTendersService _likedTendersService; final LikedTendersService _likedTendersService;
@@ -8,9 +9,8 @@ class LikedTendersRepository {
: _likedTendersService = likedTendersService; : _likedTendersService = likedTendersService;
Future<Result<LikedTendersResponse>> getLikedTenders({ Future<Result<LikedTendersResponse>> getLikedTenders({
int offset = 0, required TenderFeedbackRequestModel requestModel,
int limit = 20,
}) { }) {
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/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/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/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/model/tender_approvals_response/tender_approvals_response.dart';
import 'package:tm_app/data/services/your_tenders_service.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 { class YourTendersRepository {
final YourTendersService _yourTendersService; final YourTendersService _yourTendersService;
YourTendersRepository({required YourTendersService yourTendersService}) final LikedTendersService _likedTendersService;
: _yourTendersService = yourTendersService; YourTendersRepository({
required YourTendersService yourTendersService,
required LikedTendersService likedTendersService,
}) : _yourTendersService = yourTendersService,
_likedTendersService = likedTendersService;
Future<Result<TenderApprovalsResponse>> getApprovedTenders({ Future<Result<TenderApprovalsResponse>> getApprovedTenders({
required int limit, required int limit,
@@ -30,18 +37,8 @@ class YourTendersRepository {
} }
Future<Result<LikedTendersResponse>> getTendersFeedback({ Future<Result<LikedTendersResponse>> getTendersFeedback({
required int limit, required TenderFeedbackRequestModel requestModel,
required int offset,
required String feedbackType,
required String dateFrom,
required String dateTo,
}) { }) {
return _yourTendersService.getTendersFeedback( return _likedTendersService.getLikedTenders(requestModel: requestModel);
limit: limit,
offset: offset,
feedbackType: feedbackType,
dateFrom: dateFrom,
dateTo: dateTo,
);
} }
} }
+14 -2
View File
@@ -1,4 +1,16 @@
class LikedTendersApi { class LikedTendersApi {
static const String likedTenders = static const String tendersFeedback = '/api/v1/feedback';
'/api/v1/feedback?feedback_type=like';
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; 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 'package:tm_app/data/services/model/liked_tenders_response/liked_tenders_response.dart';
import '../../../core/network/network_manager.dart'; import '../../../core/network/network_manager.dart';
import 'model/request_models/tender_feedback_request_model/tender_feedback_request_model.dart';
class LikedTendersService { class LikedTendersService {
LikedTendersService({required NetworkManager networkManager}) LikedTendersService({required NetworkManager networkManager})
@@ -11,10 +12,15 @@ class LikedTendersService {
final NetworkManager _networkManager; final NetworkManager _networkManager;
Future<Result<LikedTendersResponse>> getLikedTenders({ Future<Result<LikedTendersResponse>> getLikedTenders({
int offset = 0, required TenderFeedbackRequestModel requestModel,
int limit = 20,
}) async { }) 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( final result = await _networkManager.makeRequest(
uri, 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/core/utils/result.dart';
import 'package:tm_app/data/services/api/your_tenders_api.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 'package:tm_app/data/services/model/tender_approvals_response/tender_approvals_response.dart';
import '../../../core/network/network_manager.dart'; import '../../../core/network/network_manager.dart';
@@ -48,25 +47,4 @@ class YourTendersService {
); );
return result; 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 'package:tm_app/view_models/home_view_model.dart';
import '../data/services/model/feedback_response/feedback_response.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_by_id_response/tender_approvals_by_id_response.dart';
import '../data/services/model/tender_approvals_data/tender_approvals_data.dart'; import '../data/services/model/tender_approvals_data/tender_approvals_data.dart';
@@ -83,9 +84,14 @@ class LikedTendersViewModel with ChangeNotifier {
errorMessage = null; errorMessage = null;
final result = await _likedTendersRepository.getLikedTenders( final requestModel = TenderFeedbackRequestModel(
offset: _offset, offset: _offset,
limit: _limit, limit: _limit,
feedbackType: 'like',
);
final result = await _likedTendersRepository.getLikedTenders(
requestModel: requestModel,
); );
switch (result) { 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 '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/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 { class YourTendersViewModel with ChangeNotifier {
final YourTendersRepository yourTendersRepository; final YourTendersRepository yourTendersRepository;
@@ -132,14 +133,18 @@ class YourTendersViewModel with ChangeNotifier {
} }
notifyListeners(); notifyListeners();
final result = await yourTendersRepository.getTendersFeedback( final requestModel = TenderFeedbackRequestModel(
limit: _limit,
offset: _offset, offset: _offset,
limit: _limit,
feedbackType: _currentFeedbackType ?? feedbackType, feedbackType: _currentFeedbackType ?? feedbackType,
dateFrom: startDateUnix, dateFrom: startDateUnix,
dateTo: endDateUnix, dateTo: endDateUnix,
); );
final result = await yourTendersRepository.getTendersFeedback(
requestModel: requestModel,
);
switch (result) { switch (result) {
case Ok<LikedTendersResponse>(): case Ok<LikedTendersResponse>():
final incoming = result.value; final incoming = result.value;