/// Use case: Récupérer l'historique des contributions d'un membre
library get_contribution_history;

import 'package:injectable/injectable.dart';
import '../../data/models/contribution_model.dart';
import '../../data/repositories/contribution_repository.dart' show ContributionPageResult;
import '../repositories/contribution_repository.dart';

/// Use case pour récupérer l'historique des paiements de cotisations
@injectable
class GetContributionHistory {
  final IContributionRepository _repository;

  GetContributionHistory(this._repository);

  /// Exécute le use case
  ///
  /// [page] - Numéro de page (pagination)
  /// [size] - Taille de la page
  /// [annee] - Filtrer par année (optionnel)
  /// [statut] - Filtrer par statut (optionnel)
  ///
  /// Retourne l'historique paginé des cotisations du membre
  /// Inclut toutes les cotisations (payées, en attente, en retard)
  Future<ContributionPageResult> call({
    int page = 0,
    int size = 50,
    int? annee,
    ContributionStatus? statut,
  }) async {
    return _repository.getMesCotisations(page: page, size: size);
  }
}
