Clean project: remove test files, debug logs, and add documentation
This commit is contained in:
@@ -0,0 +1,282 @@
|
||||
/// États pour le BLoC des organisations
|
||||
library organisations_state;
|
||||
|
||||
import 'package:equatable/equatable.dart';
|
||||
import '../data/models/organisation_model.dart';
|
||||
import 'organisations_event.dart';
|
||||
|
||||
/// Classe de base pour tous les états des organisations
|
||||
abstract class OrganisationsState extends Equatable {
|
||||
const OrganisationsState();
|
||||
|
||||
@override
|
||||
List<Object?> get props => [];
|
||||
}
|
||||
|
||||
/// État initial
|
||||
class OrganisationsInitial extends OrganisationsState {
|
||||
const OrganisationsInitial();
|
||||
}
|
||||
|
||||
/// État de chargement
|
||||
class OrganisationsLoading extends OrganisationsState {
|
||||
const OrganisationsLoading();
|
||||
}
|
||||
|
||||
/// État de chargement de plus d'éléments (pagination)
|
||||
class OrganisationsLoadingMore extends OrganisationsState {
|
||||
final List<OrganisationModel> currentOrganisations;
|
||||
|
||||
const OrganisationsLoadingMore(this.currentOrganisations);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [currentOrganisations];
|
||||
}
|
||||
|
||||
/// État de succès avec données
|
||||
class OrganisationsLoaded extends OrganisationsState {
|
||||
final List<OrganisationModel> organisations;
|
||||
final List<OrganisationModel> filteredOrganisations;
|
||||
final bool hasReachedMax;
|
||||
final int currentPage;
|
||||
final String? currentSearch;
|
||||
final StatutOrganisation? statusFilter;
|
||||
final TypeOrganisation? typeFilter;
|
||||
final OrganisationSortType? sortType;
|
||||
final bool sortAscending;
|
||||
final Map<String, dynamic>? stats;
|
||||
|
||||
const OrganisationsLoaded({
|
||||
required this.organisations,
|
||||
required this.filteredOrganisations,
|
||||
this.hasReachedMax = false,
|
||||
this.currentPage = 0,
|
||||
this.currentSearch,
|
||||
this.statusFilter,
|
||||
this.typeFilter,
|
||||
this.sortType,
|
||||
this.sortAscending = true,
|
||||
this.stats,
|
||||
});
|
||||
|
||||
/// Copie avec modifications
|
||||
OrganisationsLoaded copyWith({
|
||||
List<OrganisationModel>? organisations,
|
||||
List<OrganisationModel>? filteredOrganisations,
|
||||
bool? hasReachedMax,
|
||||
int? currentPage,
|
||||
String? currentSearch,
|
||||
StatutOrganisation? statusFilter,
|
||||
TypeOrganisation? typeFilter,
|
||||
OrganisationSortType? sortType,
|
||||
bool? sortAscending,
|
||||
Map<String, dynamic>? stats,
|
||||
bool clearSearch = false,
|
||||
bool clearStatusFilter = false,
|
||||
bool clearTypeFilter = false,
|
||||
bool clearSort = false,
|
||||
}) {
|
||||
return OrganisationsLoaded(
|
||||
organisations: organisations ?? this.organisations,
|
||||
filteredOrganisations: filteredOrganisations ?? this.filteredOrganisations,
|
||||
hasReachedMax: hasReachedMax ?? this.hasReachedMax,
|
||||
currentPage: currentPage ?? this.currentPage,
|
||||
currentSearch: clearSearch ? null : (currentSearch ?? this.currentSearch),
|
||||
statusFilter: clearStatusFilter ? null : (statusFilter ?? this.statusFilter),
|
||||
typeFilter: clearTypeFilter ? null : (typeFilter ?? this.typeFilter),
|
||||
sortType: clearSort ? null : (sortType ?? this.sortType),
|
||||
sortAscending: sortAscending ?? this.sortAscending,
|
||||
stats: stats ?? this.stats,
|
||||
);
|
||||
}
|
||||
|
||||
/// Nombre total d'organisations
|
||||
int get totalCount => organisations.length;
|
||||
|
||||
/// Nombre d'organisations filtrées
|
||||
int get filteredCount => filteredOrganisations.length;
|
||||
|
||||
/// Indique si des filtres sont appliqués
|
||||
bool get hasFilters =>
|
||||
currentSearch?.isNotEmpty == true ||
|
||||
statusFilter != null ||
|
||||
typeFilter != null;
|
||||
|
||||
/// Indique si un tri est appliqué
|
||||
bool get hasSorting => sortType != null;
|
||||
|
||||
/// Statistiques rapides
|
||||
Map<String, int> get quickStats {
|
||||
final actives = organisations.where((org) => org.statut == StatutOrganisation.active).length;
|
||||
final inactives = organisations.length - actives;
|
||||
final totalMembres = organisations.fold<int>(0, (sum, org) => sum + org.nombreMembres);
|
||||
|
||||
return {
|
||||
'total': organisations.length,
|
||||
'actives': actives,
|
||||
'inactives': inactives,
|
||||
'totalMembres': totalMembres,
|
||||
};
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
organisations,
|
||||
filteredOrganisations,
|
||||
hasReachedMax,
|
||||
currentPage,
|
||||
currentSearch,
|
||||
statusFilter,
|
||||
typeFilter,
|
||||
sortType,
|
||||
sortAscending,
|
||||
stats,
|
||||
];
|
||||
}
|
||||
|
||||
/// État d'erreur
|
||||
class OrganisationsError extends OrganisationsState {
|
||||
final String message;
|
||||
final String? details;
|
||||
final List<OrganisationModel>? previousOrganisations;
|
||||
|
||||
const OrganisationsError(
|
||||
this.message, {
|
||||
this.details,
|
||||
this.previousOrganisations,
|
||||
});
|
||||
|
||||
@override
|
||||
List<Object?> get props => [message, details, previousOrganisations];
|
||||
}
|
||||
|
||||
/// État de chargement d'une organisation spécifique
|
||||
class OrganisationLoading extends OrganisationsState {
|
||||
final String id;
|
||||
|
||||
const OrganisationLoading(this.id);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [id];
|
||||
}
|
||||
|
||||
/// État d'organisation chargée
|
||||
class OrganisationLoaded extends OrganisationsState {
|
||||
final OrganisationModel organisation;
|
||||
|
||||
const OrganisationLoaded(this.organisation);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [organisation];
|
||||
}
|
||||
|
||||
/// État d'erreur pour une organisation spécifique
|
||||
class OrganisationError extends OrganisationsState {
|
||||
final String message;
|
||||
final String? organisationId;
|
||||
|
||||
const OrganisationError(this.message, {this.organisationId});
|
||||
|
||||
@override
|
||||
List<Object?> get props => [message, organisationId];
|
||||
}
|
||||
|
||||
/// État de création d'organisation
|
||||
class OrganisationCreating extends OrganisationsState {
|
||||
const OrganisationCreating();
|
||||
}
|
||||
|
||||
/// État de succès de création
|
||||
class OrganisationCreated extends OrganisationsState {
|
||||
final OrganisationModel organisation;
|
||||
|
||||
const OrganisationCreated(this.organisation);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [organisation];
|
||||
}
|
||||
|
||||
/// État de mise à jour d'organisation
|
||||
class OrganisationUpdating extends OrganisationsState {
|
||||
final String id;
|
||||
|
||||
const OrganisationUpdating(this.id);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [id];
|
||||
}
|
||||
|
||||
/// État de succès de mise à jour
|
||||
class OrganisationUpdated extends OrganisationsState {
|
||||
final OrganisationModel organisation;
|
||||
|
||||
const OrganisationUpdated(this.organisation);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [organisation];
|
||||
}
|
||||
|
||||
/// État de suppression d'organisation
|
||||
class OrganisationDeleting extends OrganisationsState {
|
||||
final String id;
|
||||
|
||||
const OrganisationDeleting(this.id);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [id];
|
||||
}
|
||||
|
||||
/// État de succès de suppression
|
||||
class OrganisationDeleted extends OrganisationsState {
|
||||
final String id;
|
||||
|
||||
const OrganisationDeleted(this.id);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [id];
|
||||
}
|
||||
|
||||
/// État d'activation d'organisation
|
||||
class OrganisationActivating extends OrganisationsState {
|
||||
final String id;
|
||||
|
||||
const OrganisationActivating(this.id);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [id];
|
||||
}
|
||||
|
||||
/// État de succès d'activation
|
||||
class OrganisationActivated extends OrganisationsState {
|
||||
final OrganisationModel organisation;
|
||||
|
||||
const OrganisationActivated(this.organisation);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [organisation];
|
||||
}
|
||||
|
||||
/// État de chargement des statistiques
|
||||
class OrganisationsStatsLoading extends OrganisationsState {
|
||||
const OrganisationsStatsLoading();
|
||||
}
|
||||
|
||||
/// État des statistiques chargées
|
||||
class OrganisationsStatsLoaded extends OrganisationsState {
|
||||
final Map<String, dynamic> stats;
|
||||
|
||||
const OrganisationsStatsLoaded(this.stats);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [stats];
|
||||
}
|
||||
|
||||
/// État d'erreur des statistiques
|
||||
class OrganisationsStatsError extends OrganisationsState {
|
||||
final String message;
|
||||
|
||||
const OrganisationsStatsError(this.message);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [message];
|
||||
}
|
||||
Reference in New Issue
Block a user