181 lines
4.0 KiB
Dart
181 lines
4.0 KiB
Dart
/// États pour le BLoC des membres
|
|
library membres_state;
|
|
|
|
import 'package:equatable/equatable.dart';
|
|
import '../data/models/membre_complete_model.dart';
|
|
|
|
/// Classe de base pour tous les états des membres
|
|
abstract class MembresState extends Equatable {
|
|
const MembresState();
|
|
|
|
@override
|
|
List<Object?> get props => [];
|
|
}
|
|
|
|
/// État initial
|
|
class MembresInitial extends MembresState {
|
|
const MembresInitial();
|
|
}
|
|
|
|
/// État de chargement
|
|
class MembresLoading extends MembresState {
|
|
const MembresLoading();
|
|
}
|
|
|
|
/// État de chargement avec données existantes (pour refresh)
|
|
class MembresRefreshing extends MembresState {
|
|
final List<MembreCompletModel> currentMembres;
|
|
|
|
const MembresRefreshing(this.currentMembres);
|
|
|
|
@override
|
|
List<Object?> get props => [currentMembres];
|
|
}
|
|
|
|
/// État de succès avec liste de membres
|
|
class MembresLoaded extends MembresState {
|
|
final List<MembreCompletModel> membres;
|
|
final int totalElements;
|
|
final int currentPage;
|
|
final int pageSize;
|
|
final int totalPages;
|
|
final bool hasMore;
|
|
|
|
const MembresLoaded({
|
|
required this.membres,
|
|
required this.totalElements,
|
|
this.currentPage = 0,
|
|
this.pageSize = 20,
|
|
required this.totalPages,
|
|
}) : hasMore = currentPage < totalPages - 1;
|
|
|
|
@override
|
|
List<Object?> get props => [membres, totalElements, currentPage, pageSize, totalPages, hasMore];
|
|
|
|
MembresLoaded copyWith({
|
|
List<MembreCompletModel>? membres,
|
|
int? totalElements,
|
|
int? currentPage,
|
|
int? pageSize,
|
|
int? totalPages,
|
|
}) {
|
|
return MembresLoaded(
|
|
membres: membres ?? this.membres,
|
|
totalElements: totalElements ?? this.totalElements,
|
|
currentPage: currentPage ?? this.currentPage,
|
|
pageSize: pageSize ?? this.pageSize,
|
|
totalPages: totalPages ?? this.totalPages,
|
|
);
|
|
}
|
|
}
|
|
|
|
/// État de succès avec un seul membre
|
|
class MembreDetailLoaded extends MembresState {
|
|
final MembreCompletModel membre;
|
|
|
|
const MembreDetailLoaded(this.membre);
|
|
|
|
@override
|
|
List<Object?> get props => [membre];
|
|
}
|
|
|
|
/// État de succès après création
|
|
class MembreCreated extends MembresState {
|
|
final MembreCompletModel membre;
|
|
|
|
const MembreCreated(this.membre);
|
|
|
|
@override
|
|
List<Object?> get props => [membre];
|
|
}
|
|
|
|
/// État de succès après mise à jour
|
|
class MembreUpdated extends MembresState {
|
|
final MembreCompletModel membre;
|
|
|
|
const MembreUpdated(this.membre);
|
|
|
|
@override
|
|
List<Object?> get props => [membre];
|
|
}
|
|
|
|
/// État de succès après suppression
|
|
class MembreDeleted extends MembresState {
|
|
final String id;
|
|
|
|
const MembreDeleted(this.id);
|
|
|
|
@override
|
|
List<Object?> get props => [id];
|
|
}
|
|
|
|
/// État de succès après activation
|
|
class MembreActivated extends MembresState {
|
|
final MembreCompletModel membre;
|
|
|
|
const MembreActivated(this.membre);
|
|
|
|
@override
|
|
List<Object?> get props => [membre];
|
|
}
|
|
|
|
/// État de succès après désactivation
|
|
class MembreDeactivated extends MembresState {
|
|
final MembreCompletModel membre;
|
|
|
|
const MembreDeactivated(this.membre);
|
|
|
|
@override
|
|
List<Object?> get props => [membre];
|
|
}
|
|
|
|
/// État avec statistiques
|
|
class MembresStatsLoaded extends MembresState {
|
|
final Map<String, dynamic> stats;
|
|
|
|
const MembresStatsLoaded(this.stats);
|
|
|
|
@override
|
|
List<Object?> get props => [stats];
|
|
}
|
|
|
|
/// État d'erreur
|
|
class MembresError extends MembresState {
|
|
final String message;
|
|
final String? code;
|
|
final dynamic error;
|
|
|
|
const MembresError({
|
|
required this.message,
|
|
this.code,
|
|
this.error,
|
|
});
|
|
|
|
@override
|
|
List<Object?> get props => [message, code, error];
|
|
}
|
|
|
|
/// État d'erreur réseau
|
|
class MembresNetworkError extends MembresError {
|
|
const MembresNetworkError({
|
|
required super.message,
|
|
super.code,
|
|
super.error,
|
|
});
|
|
}
|
|
|
|
/// État d'erreur de validation
|
|
class MembresValidationError extends MembresError {
|
|
final Map<String, String> validationErrors;
|
|
|
|
const MembresValidationError({
|
|
required super.message,
|
|
required this.validationErrors,
|
|
super.code,
|
|
});
|
|
|
|
@override
|
|
List<Object?> get props => [message, code, validationErrors];
|
|
}
|
|
|