63 lines
1.8 KiB
Dart
63 lines
1.8 KiB
Dart
/// Use Case: Get Member Card
|
|
///
|
|
/// Retrieves the current user's member card information.
|
|
/// This use case encapsulates the business logic for fetching member card data.
|
|
///
|
|
/// Follows the Single Responsibility Principle - one use case, one operation.
|
|
library;
|
|
|
|
import 'package:worker/features/home/domain/entities/member_card.dart';
|
|
import 'package:worker/features/home/domain/repositories/home_repository.dart';
|
|
|
|
/// Get Member Card Use Case
|
|
///
|
|
/// Fetches the current authenticated user's member card.
|
|
///
|
|
/// Usage:
|
|
/// ```dart
|
|
/// final memberCard = await getMemberCard();
|
|
/// ```
|
|
///
|
|
/// This use case:
|
|
/// - Retrieves member card from repository (which handles caching)
|
|
/// - Can add business logic if needed (e.g., validation, transformation)
|
|
/// - Returns MemberCard entity
|
|
class GetMemberCard {
|
|
/// Home repository instance
|
|
final HomeRepository repository;
|
|
|
|
/// Constructor
|
|
const GetMemberCard(this.repository);
|
|
|
|
/// Execute the use case
|
|
///
|
|
/// Returns [MemberCard] with user's membership information.
|
|
///
|
|
/// Throws:
|
|
/// - [UnauthorizedException] if user not authenticated
|
|
/// - [NetworkException] if network error occurs
|
|
/// - [CacheException] if local data corrupted
|
|
Future<MemberCard> call() async {
|
|
// TODO: Add business logic here if needed
|
|
// For example:
|
|
// - Validate user authentication
|
|
// - Check if card is expired and handle accordingly
|
|
// - Transform data if needed
|
|
// - Log analytics events
|
|
|
|
return await repository.getMemberCard();
|
|
}
|
|
|
|
/// Execute with force refresh
|
|
///
|
|
/// Forces a refresh from the server instead of using cached data.
|
|
///
|
|
/// Use this when:
|
|
/// - User explicitly pulls to refresh
|
|
/// - Cached data is known to be stale
|
|
/// - After points redemption or other updates
|
|
Future<MemberCard> refresh() async {
|
|
return await repository.refreshMemberCard();
|
|
}
|
|
}
|