- Task #6: WebSocket /ws/dashboard + Kafka events (5 topics) * Backend: KafkaEventProducer, KafkaEventConsumer * Mobile: WebSocketService (reconnection, heartbeat, typed events) * DashboardBloc: Auto-refresh depuis WebSocket events - Finance Workflow: approbations + budgets (backend + mobile) * Backend: entities, services, resources, migrations Flyway V6 * Mobile: features finance_workflow complète avec BLoC - Corrections DI: interfaces IRepository partout * IProfileRepository, IOrganizationRepository, IMembreRepository * GetIt configuré avec @injectable - Spec-Kit: constitution + templates mis à jour * .specify/memory/constitution.md enrichie * Templates agent, plan, spec, tasks, checklist - Nettoyage: fichiers temporaires supprimés Signed-off-by: lions dev Team
44 lines
1.4 KiB
Dart
44 lines
1.4 KiB
Dart
/// 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,
|
|
);
|
|
}
|
|
}
|