Refactoring
This commit is contained in:
@@ -0,0 +1,251 @@
|
||||
import 'package:dartz/dartz.dart';
|
||||
import '../../../../core/error/failures.dart';
|
||||
import '../entities/demande_aide.dart';
|
||||
import '../entities/proposition_aide.dart';
|
||||
import '../entities/evaluation_aide.dart';
|
||||
|
||||
/// Repository abstrait pour la gestion de la solidarité
|
||||
///
|
||||
/// Ce repository définit les contrats pour toutes les opérations
|
||||
/// liées au système de solidarité : demandes, propositions, évaluations.
|
||||
abstract class SolidariteRepository {
|
||||
|
||||
// === GESTION DES DEMANDES D'AIDE ===
|
||||
|
||||
/// Crée une nouvelle demande d'aide
|
||||
///
|
||||
/// [demande] La demande d'aide à créer
|
||||
/// Retourne [Right(DemandeAide)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, DemandeAide>> creerDemandeAide(DemandeAide demande);
|
||||
|
||||
/// Met à jour une demande d'aide existante
|
||||
///
|
||||
/// [demande] La demande d'aide à mettre à jour
|
||||
/// Retourne [Right(DemandeAide)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, DemandeAide>> mettreAJourDemandeAide(DemandeAide demande);
|
||||
|
||||
/// Obtient une demande d'aide par son ID
|
||||
///
|
||||
/// [id] Identifiant de la demande
|
||||
/// Retourne [Right(DemandeAide)] si trouvée
|
||||
/// Retourne [Left(Failure)] si non trouvée ou erreur
|
||||
Future<Either<Failure, DemandeAide>> obtenirDemandeAide(String id);
|
||||
|
||||
/// Soumet une demande d'aide pour évaluation
|
||||
///
|
||||
/// [demandeId] Identifiant de la demande
|
||||
/// Retourne [Right(DemandeAide)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, DemandeAide>> soumettreDemande(String demandeId);
|
||||
|
||||
/// Évalue une demande d'aide
|
||||
///
|
||||
/// [demandeId] Identifiant de la demande
|
||||
/// [evaluateurId] Identifiant de l'évaluateur
|
||||
/// [decision] Décision d'évaluation
|
||||
/// [commentaire] Commentaire de l'évaluateur
|
||||
/// [montantApprouve] Montant approuvé (optionnel)
|
||||
/// Retourne [Right(DemandeAide)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, DemandeAide>> evaluerDemande({
|
||||
required String demandeId,
|
||||
required String evaluateurId,
|
||||
required StatutAide decision,
|
||||
String? commentaire,
|
||||
double? montantApprouve,
|
||||
});
|
||||
|
||||
/// Recherche des demandes d'aide avec filtres
|
||||
///
|
||||
/// [filtres] Critères de recherche
|
||||
/// Retourne [Right(List<DemandeAide>)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, List<DemandeAide>>> rechercherDemandes({
|
||||
String? organisationId,
|
||||
TypeAide? typeAide,
|
||||
StatutAide? statut,
|
||||
String? demandeurId,
|
||||
bool? urgente,
|
||||
int page = 0,
|
||||
int taille = 20,
|
||||
});
|
||||
|
||||
/// Obtient les demandes urgentes
|
||||
///
|
||||
/// [organisationId] Identifiant de l'organisation
|
||||
/// Retourne [Right(List<DemandeAide>)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, List<DemandeAide>>> obtenirDemandesUrgentes(String organisationId);
|
||||
|
||||
/// Obtient les demandes de l'utilisateur connecté
|
||||
///
|
||||
/// [utilisateurId] Identifiant de l'utilisateur
|
||||
/// Retourne [Right(List<DemandeAide>)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, List<DemandeAide>>> obtenirMesdemandes(String utilisateurId);
|
||||
|
||||
// === GESTION DES PROPOSITIONS D'AIDE ===
|
||||
|
||||
/// Crée une nouvelle proposition d'aide
|
||||
///
|
||||
/// [proposition] La proposition d'aide à créer
|
||||
/// Retourne [Right(PropositionAide)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, PropositionAide>> creerPropositionAide(PropositionAide proposition);
|
||||
|
||||
/// Met à jour une proposition d'aide existante
|
||||
///
|
||||
/// [proposition] La proposition d'aide à mettre à jour
|
||||
/// Retourne [Right(PropositionAide)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, PropositionAide>> mettreAJourPropositionAide(PropositionAide proposition);
|
||||
|
||||
/// Obtient une proposition d'aide par son ID
|
||||
///
|
||||
/// [id] Identifiant de la proposition
|
||||
/// Retourne [Right(PropositionAide)] si trouvée
|
||||
/// Retourne [Left(Failure)] si non trouvée ou erreur
|
||||
Future<Either<Failure, PropositionAide>> obtenirPropositionAide(String id);
|
||||
|
||||
/// Active ou désactive une proposition d'aide
|
||||
///
|
||||
/// [propositionId] Identifiant de la proposition
|
||||
/// [activer] true pour activer, false pour désactiver
|
||||
/// Retourne [Right(PropositionAide)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, PropositionAide>> changerStatutProposition({
|
||||
required String propositionId,
|
||||
required bool activer,
|
||||
});
|
||||
|
||||
/// Recherche des propositions d'aide avec filtres
|
||||
///
|
||||
/// [filtres] Critères de recherche
|
||||
/// Retourne [Right(List<PropositionAide>)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, List<PropositionAide>>> rechercherPropositions({
|
||||
String? organisationId,
|
||||
TypeAide? typeAide,
|
||||
String? proposantId,
|
||||
bool? actives,
|
||||
int page = 0,
|
||||
int taille = 20,
|
||||
});
|
||||
|
||||
/// Obtient les propositions actives pour un type d'aide
|
||||
///
|
||||
/// [typeAide] Type d'aide recherché
|
||||
/// Retourne [Right(List<PropositionAide>)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, List<PropositionAide>>> obtenirPropositionsActives(TypeAide typeAide);
|
||||
|
||||
/// Obtient les meilleures propositions (top performers)
|
||||
///
|
||||
/// [limite] Nombre maximum de propositions à retourner
|
||||
/// Retourne [Right(List<PropositionAide>)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, List<PropositionAide>>> obtenirMeilleuresPropositions(int limite);
|
||||
|
||||
/// Obtient les propositions de l'utilisateur connecté
|
||||
///
|
||||
/// [utilisateurId] Identifiant de l'utilisateur
|
||||
/// Retourne [Right(List<PropositionAide>)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, List<PropositionAide>>> obtenirMesPropositions(String utilisateurId);
|
||||
|
||||
// === MATCHING ET COMPATIBILITÉ ===
|
||||
|
||||
/// Trouve les propositions compatibles avec une demande
|
||||
///
|
||||
/// [demandeId] Identifiant de la demande
|
||||
/// Retourne [Right(List<PropositionAide>)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, List<PropositionAide>>> trouverPropositionsCompatibles(String demandeId);
|
||||
|
||||
/// Trouve les demandes compatibles avec une proposition
|
||||
///
|
||||
/// [propositionId] Identifiant de la proposition
|
||||
/// Retourne [Right(List<DemandeAide>)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, List<DemandeAide>>> trouverDemandesCompatibles(String propositionId);
|
||||
|
||||
/// Recherche des proposants financiers pour une demande approuvée
|
||||
///
|
||||
/// [demandeId] Identifiant de la demande
|
||||
/// Retourne [Right(List<PropositionAide>)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, List<PropositionAide>>> rechercherProposantsFinanciers(String demandeId);
|
||||
|
||||
// === GESTION DES ÉVALUATIONS ===
|
||||
|
||||
/// Crée une nouvelle évaluation
|
||||
///
|
||||
/// [evaluation] L'évaluation à créer
|
||||
/// Retourne [Right(EvaluationAide)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, EvaluationAide>> creerEvaluation(EvaluationAide evaluation);
|
||||
|
||||
/// Met à jour une évaluation existante
|
||||
///
|
||||
/// [evaluation] L'évaluation à mettre à jour
|
||||
/// Retourne [Right(EvaluationAide)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, EvaluationAide>> mettreAJourEvaluation(EvaluationAide evaluation);
|
||||
|
||||
/// Obtient une évaluation par son ID
|
||||
///
|
||||
/// [id] Identifiant de l'évaluation
|
||||
/// Retourne [Right(EvaluationAide)] si trouvée
|
||||
/// Retourne [Left(Failure)] si non trouvée ou erreur
|
||||
Future<Either<Failure, EvaluationAide>> obtenirEvaluation(String id);
|
||||
|
||||
/// Obtient les évaluations d'une demande d'aide
|
||||
///
|
||||
/// [demandeId] Identifiant de la demande
|
||||
/// Retourne [Right(List<EvaluationAide>)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, List<EvaluationAide>>> obtenirEvaluationsDemande(String demandeId);
|
||||
|
||||
/// Obtient les évaluations d'une proposition d'aide
|
||||
///
|
||||
/// [propositionId] Identifiant de la proposition
|
||||
/// Retourne [Right(List<EvaluationAide>)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, List<EvaluationAide>>> obtenirEvaluationsProposition(String propositionId);
|
||||
|
||||
/// Signale une évaluation comme inappropriée
|
||||
///
|
||||
/// [evaluationId] Identifiant de l'évaluation
|
||||
/// [motif] Motif du signalement
|
||||
/// Retourne [Right(EvaluationAide)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, EvaluationAide>> signalerEvaluation({
|
||||
required String evaluationId,
|
||||
required String motif,
|
||||
});
|
||||
|
||||
// === STATISTIQUES ET ANALYTICS ===
|
||||
|
||||
/// Obtient les statistiques de solidarité pour une organisation
|
||||
///
|
||||
/// [organisationId] Identifiant de l'organisation
|
||||
/// Retourne [Right(Map<String, dynamic>)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, Map<String, dynamic>>> obtenirStatistiquesSolidarite(String organisationId);
|
||||
|
||||
/// Calcule la note moyenne d'une demande d'aide
|
||||
///
|
||||
/// [demandeId] Identifiant de la demande
|
||||
/// Retourne [Right(StatistiquesEvaluation)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, StatistiquesEvaluation>> calculerMoyenneDemande(String demandeId);
|
||||
|
||||
/// Calcule la note moyenne d'une proposition d'aide
|
||||
///
|
||||
/// [propositionId] Identifiant de la proposition
|
||||
/// Retourne [Right(StatistiquesEvaluation)] en cas de succès
|
||||
/// Retourne [Left(Failure)] en cas d'erreur
|
||||
Future<Either<Failure, StatistiquesEvaluation>> calculerMoyenneProposition(String propositionId);
|
||||
}
|
||||
Reference in New Issue
Block a user