35af3e94ea
- Integrated LikedTendersService into HomeRepository to fetch the count of user-liked tenders. - Updated HomeViewModel to load and manage the userLikedTendersCount. - Adjusted UI components across home pages to display the liked tenders count. - Refactored date handling in date_utils.dart to improve timestamp parsing and validation. - Enhanced unit tests for date utilities to cover new edge cases.
63 lines
2.4 KiB
Dart
63 lines
2.4 KiB
Dart
import 'package:tm_app/core/utils/result.dart';
|
|
import 'package:tm_app/data/services/home_service.dart';
|
|
import 'package:tm_app/data/services/liked_tenders_service.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_stats_response/tender_approvals_stats_response.dart';
|
|
|
|
import '../services/model/request_models/get_tenders_request_model/get_tenders_request_model.dart';
|
|
import '../services/model/request_models/tender_feedback_request_model/tender_feedback_request_model.dart';
|
|
import '../services/your_tenders_service.dart';
|
|
|
|
class HomeRepository {
|
|
HomeRepository({
|
|
required HomeService homeService,
|
|
required YourTendersService yourTendersService,
|
|
required LikedTendersService likedTendersService,
|
|
}) : _homeService = homeService,
|
|
_yourTendersService = yourTendersService,
|
|
_likedTendersService = likedTendersService;
|
|
final HomeService _homeService;
|
|
final YourTendersService _yourTendersService;
|
|
final LikedTendersService _likedTendersService;
|
|
|
|
Future<Result<RecommendedTendersResponse>> getHomeRecommendedTenders({
|
|
required int limit,
|
|
required int offset,
|
|
}) async {
|
|
return _homeService.getRecommendedTenders(limit: limit, offset: offset);
|
|
}
|
|
|
|
Future<Result<TenderApprovalsResponse>> getYourTenders({
|
|
required GetTendersRequestModel requestModel,
|
|
}) {
|
|
return _yourTendersService.getTenders(requestModel: requestModel);
|
|
}
|
|
|
|
Future<Result<TenderApprovalsStatsResponse>> getTendersApprovalsStats() {
|
|
return _homeService.getTendersApprovalsStats();
|
|
}
|
|
|
|
/// Returns how many tenders the current user has liked (not company-wide).
|
|
Future<Result<int>> getUserLikedTendersCount() async {
|
|
final result = await _likedTendersService.getLikedTenders(
|
|
requestModel: TenderFeedbackRequestModel(
|
|
feedbackType: 'like',
|
|
limit: 1,
|
|
offset: 0,
|
|
),
|
|
);
|
|
|
|
switch (result) {
|
|
case Ok(value: final response):
|
|
return Result.ok(response.data?.meta?.total ?? 0);
|
|
case Error(error: final error):
|
|
return Result.error(error);
|
|
}
|
|
}
|
|
|
|
Future<Result<Map<String, dynamic>>> checkUnreadNotifications() async {
|
|
return _homeService.checkUnreadNotifications();
|
|
}
|
|
}
|