Files
AmirReza Jamali 35af3e94ea Add liked tenders functionality to HomeRepository and ViewModel
- 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.
2026-05-24 18:23:37 +03:30

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();
}
}