Initial commit: unionflow-mobile-apps
Application Flutter complète (sans build artifacts). Signed-off-by: lions dev Team
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
/// Use case: Créer une nouvelle contribution
|
||||
library create_contribution;
|
||||
|
||||
import 'package:injectable/injectable.dart';
|
||||
import '../../data/models/contribution_model.dart';
|
||||
import '../repositories/contribution_repository.dart';
|
||||
|
||||
/// Use case pour créer une nouvelle cotisation
|
||||
@injectable
|
||||
class CreateContribution {
|
||||
final IContributionRepository _repository;
|
||||
|
||||
CreateContribution(this._repository);
|
||||
|
||||
/// Exécute le use case
|
||||
///
|
||||
/// [contribution] - Modèle de la cotisation à créer
|
||||
///
|
||||
/// Retourne la contribution créée avec son ID généré
|
||||
/// Lève une exception en cas d'erreur de validation ou de création
|
||||
Future<ContributionModel> call(ContributionModel contribution) async {
|
||||
return _repository.createCotisation(contribution);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
/// Use case: Supprimer une contribution
|
||||
library delete_contribution;
|
||||
|
||||
import 'package:injectable/injectable.dart';
|
||||
import '../repositories/contribution_repository.dart';
|
||||
|
||||
/// Use case pour supprimer une cotisation
|
||||
@injectable
|
||||
class DeleteContribution {
|
||||
final IContributionRepository _repository;
|
||||
|
||||
DeleteContribution(this._repository);
|
||||
|
||||
/// Exécute le use case
|
||||
///
|
||||
/// [id] - UUID de la cotisation à supprimer
|
||||
///
|
||||
/// Supprime la contribution de manière définitive
|
||||
/// Lève une exception si la contribution n'existe pas ou ne peut être supprimée
|
||||
Future<void> call(String id) async {
|
||||
return _repository.deleteCotisation(id);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
/// Use case: Récupérer une contribution par son ID
|
||||
library get_contribution_by_id;
|
||||
|
||||
import 'package:injectable/injectable.dart';
|
||||
import '../../data/models/contribution_model.dart';
|
||||
import '../repositories/contribution_repository.dart';
|
||||
|
||||
/// Use case pour récupérer le détail d'une contribution
|
||||
@injectable
|
||||
class GetContributionById {
|
||||
final IContributionRepository _repository;
|
||||
|
||||
GetContributionById(this._repository);
|
||||
|
||||
/// Exécute le use case
|
||||
///
|
||||
/// [id] - UUID de la cotisation
|
||||
///
|
||||
/// Retourne le détail complet de la contribution
|
||||
/// Lève une exception si la contribution n'existe pas
|
||||
Future<ContributionModel> call(String id) async {
|
||||
return _repository.getCotisationById(id);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
/// 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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
/// Use case: Récupérer les statistiques personnelles des contributions
|
||||
library get_contribution_stats;
|
||||
|
||||
import 'package:injectable/injectable.dart';
|
||||
import '../repositories/contribution_repository.dart';
|
||||
|
||||
/// Use case pour récupérer les statistiques de cotisations du membre
|
||||
@injectable
|
||||
class GetContributionStats {
|
||||
final IContributionRepository _repository;
|
||||
|
||||
GetContributionStats(this._repository);
|
||||
|
||||
/// Exécute le use case
|
||||
///
|
||||
/// Retourne un Map contenant les statistiques personnelles:
|
||||
/// - montantDu: Montant total dû pour l'année en cours
|
||||
/// - totalPayeAnnee: Montant total payé pour l'année
|
||||
/// - cotisationsEnAttente: Nombre de cotisations en attente
|
||||
/// - prochaineEcheance: Date de la prochaine échéance
|
||||
/// - tauxPaiement: Taux de paiement en pourcentage
|
||||
///
|
||||
/// Retourne null si aucune donnée n'est disponible
|
||||
Future<Map<String, dynamic>?> call() async {
|
||||
return _repository.getMesCotisationsSynthese();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
/// Use case: Récupérer toutes les contributions du membre connecté
|
||||
library get_contributions;
|
||||
|
||||
import 'package:injectable/injectable.dart';
|
||||
import '../../data/repositories/contribution_repository.dart' show ContributionPageResult;
|
||||
import '../repositories/contribution_repository.dart';
|
||||
|
||||
/// Use case pour récupérer la liste des contributions du membre connecté
|
||||
@injectable
|
||||
class GetContributions {
|
||||
final IContributionRepository _repository;
|
||||
|
||||
GetContributions(this._repository);
|
||||
|
||||
/// Exécute le use case
|
||||
///
|
||||
/// Retourne la liste paginée des cotisations du membre connecté
|
||||
/// via l'endpoint GET /api/cotisations/mes-cotisations
|
||||
Future<ContributionPageResult> call({int page = 0, int size = 50}) async {
|
||||
return _repository.getMesCotisations(page: page, size: size);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
/// Use case: Enregistrer un paiement pour une contribution
|
||||
library pay_contribution;
|
||||
|
||||
import 'package:injectable/injectable.dart';
|
||||
import '../../data/models/contribution_model.dart';
|
||||
import '../repositories/contribution_repository.dart';
|
||||
|
||||
/// Use case pour enregistrer un paiement de cotisation
|
||||
@injectable
|
||||
class PayContribution {
|
||||
final IContributionRepository _repository;
|
||||
|
||||
PayContribution(this._repository);
|
||||
|
||||
/// Exécute le use case
|
||||
///
|
||||
/// [cotisationId] - UUID de la cotisation à payer
|
||||
/// [montant] - Montant du paiement
|
||||
/// [datePaiement] - Date du paiement
|
||||
/// [methodePaiement] - Méthode de paiement (WAVE, ESPECES, VIREMENT, etc.)
|
||||
/// [numeroPaiement] - Numéro de transaction (optionnel)
|
||||
/// [referencePaiement] - Référence du paiement (optionnel)
|
||||
///
|
||||
/// Retourne la contribution mise à jour avec le paiement enregistré
|
||||
/// Lève une exception en cas d'erreur de validation ou d'enregistrement
|
||||
Future<ContributionModel> call({
|
||||
required String cotisationId,
|
||||
required double montant,
|
||||
required DateTime datePaiement,
|
||||
required String methodePaiement,
|
||||
String? numeroPaiement,
|
||||
String? referencePaiement,
|
||||
}) async {
|
||||
return _repository.enregistrerPaiement(
|
||||
cotisationId,
|
||||
montant: montant,
|
||||
datePaiement: datePaiement,
|
||||
methodePaiement: methodePaiement,
|
||||
numeroPaiement: numeroPaiement,
|
||||
referencePaiement: referencePaiement,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
/// Use case: Mettre à jour une contribution existante
|
||||
library update_contribution;
|
||||
|
||||
import 'package:injectable/injectable.dart';
|
||||
import '../../data/models/contribution_model.dart';
|
||||
import '../repositories/contribution_repository.dart';
|
||||
|
||||
/// Use case pour modifier une cotisation
|
||||
@injectable
|
||||
class UpdateContribution {
|
||||
final IContributionRepository _repository;
|
||||
|
||||
UpdateContribution(this._repository);
|
||||
|
||||
/// Exécute le use case
|
||||
///
|
||||
/// [id] - UUID de la cotisation à modifier
|
||||
/// [contribution] - Données mises à jour
|
||||
///
|
||||
/// Retourne la contribution modifiée
|
||||
/// Lève une exception si la contribution n'existe pas ou erreur de validation
|
||||
Future<ContributionModel> call(String id, ContributionModel contribution) async {
|
||||
return _repository.updateCotisation(id, contribution);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user