177 lines
4.2 KiB
Dart
177 lines
4.2 KiB
Dart
/// Événements pour le BLoC des organisations
|
|
library organizations_event;
|
|
|
|
import 'package:equatable/equatable.dart';
|
|
import '../data/models/organization_model.dart';
|
|
|
|
/// Classe de base pour tous les événements des organisations
|
|
abstract class OrganizationsEvent extends Equatable {
|
|
const OrganizationsEvent();
|
|
|
|
@override
|
|
List<Object?> get props => [];
|
|
}
|
|
|
|
/// Événement pour charger la liste des organisations
|
|
class LoadOrganizations extends OrganizationsEvent {
|
|
final int page;
|
|
final int size;
|
|
final String? recherche;
|
|
final bool refresh;
|
|
|
|
const LoadOrganizations({
|
|
this.page = 0,
|
|
this.size = 20,
|
|
this.recherche,
|
|
this.refresh = false,
|
|
});
|
|
|
|
@override
|
|
List<Object?> get props => [page, size, recherche, refresh];
|
|
}
|
|
|
|
/// Événement pour charger plus d'organisations (pagination)
|
|
class LoadMoreOrganizations extends OrganizationsEvent {
|
|
const LoadMoreOrganizations();
|
|
}
|
|
|
|
/// Événement pour rechercher des organisations
|
|
class SearchOrganizations extends OrganizationsEvent {
|
|
final String query;
|
|
|
|
const SearchOrganizations(this.query);
|
|
|
|
@override
|
|
List<Object?> get props => [query];
|
|
}
|
|
|
|
/// Événement pour recherche avancée
|
|
class AdvancedSearchOrganizations extends OrganizationsEvent {
|
|
final String? nom;
|
|
final TypeOrganization? type;
|
|
final StatutOrganization? statut;
|
|
final String? ville;
|
|
final String? region;
|
|
final String? pays;
|
|
final int page;
|
|
final int size;
|
|
|
|
const AdvancedSearchOrganizations({
|
|
this.nom,
|
|
this.type,
|
|
this.statut,
|
|
this.ville,
|
|
this.region,
|
|
this.pays,
|
|
this.page = 0,
|
|
this.size = 20,
|
|
});
|
|
|
|
@override
|
|
List<Object?> get props => [nom, type, statut, ville, region, pays, page, size];
|
|
}
|
|
|
|
/// Événement pour charger une organisation spécifique
|
|
class LoadOrganizationById extends OrganizationsEvent {
|
|
final String id;
|
|
|
|
const LoadOrganizationById(this.id);
|
|
|
|
@override
|
|
List<Object?> get props => [id];
|
|
}
|
|
|
|
/// Événement pour créer une nouvelle organisation
|
|
class CreateOrganization extends OrganizationsEvent {
|
|
final OrganizationModel organization;
|
|
|
|
const CreateOrganization(this.organization);
|
|
|
|
@override
|
|
List<Object?> get props => [organization];
|
|
}
|
|
|
|
/// Événement pour mettre à jour une organisation
|
|
class UpdateOrganization extends OrganizationsEvent {
|
|
final String id;
|
|
final OrganizationModel organization;
|
|
|
|
const UpdateOrganization(this.id, this.organization);
|
|
|
|
@override
|
|
List<Object?> get props => [id, organization];
|
|
}
|
|
|
|
/// Événement pour supprimer une organisation
|
|
class DeleteOrganization extends OrganizationsEvent {
|
|
final String id;
|
|
|
|
const DeleteOrganization(this.id);
|
|
|
|
@override
|
|
List<Object?> get props => [id];
|
|
}
|
|
|
|
/// Événement pour activer une organisation
|
|
class ActivateOrganization extends OrganizationsEvent {
|
|
final String id;
|
|
|
|
const ActivateOrganization(this.id);
|
|
|
|
@override
|
|
List<Object?> get props => [id];
|
|
}
|
|
|
|
/// Événement pour filtrer les organisations par statut
|
|
class FilterOrganizationsByStatus extends OrganizationsEvent {
|
|
final StatutOrganization? statut;
|
|
|
|
const FilterOrganizationsByStatus(this.statut);
|
|
|
|
@override
|
|
List<Object?> get props => [statut];
|
|
}
|
|
|
|
/// Événement pour filtrer les organisations par type
|
|
class FilterOrganizationsByType extends OrganizationsEvent {
|
|
final TypeOrganization? type;
|
|
|
|
const FilterOrganizationsByType(this.type);
|
|
|
|
@override
|
|
List<Object?> get props => [type];
|
|
}
|
|
|
|
/// Événement pour trier les organisations
|
|
class SortOrganizations extends OrganizationsEvent {
|
|
final OrganizationSortType sortType;
|
|
final bool ascending;
|
|
|
|
const SortOrganizations(this.sortType, {this.ascending = true});
|
|
|
|
@override
|
|
List<Object?> get props => [sortType, ascending];
|
|
}
|
|
|
|
/// Événement pour charger les statistiques des organisations
|
|
class LoadOrganizationsStats extends OrganizationsEvent {
|
|
const LoadOrganizationsStats();
|
|
}
|
|
|
|
/// Événement pour effacer les filtres
|
|
class ClearOrganizationsFilters extends OrganizationsEvent {
|
|
const ClearOrganizationsFilters();
|
|
}
|
|
|
|
/// Événement pour rafraîchir les données
|
|
class RefreshOrganizations extends OrganizationsEvent {
|
|
const RefreshOrganizations();
|
|
}
|
|
|
|
/// Événement pour réinitialiser l'état
|
|
class ResetOrganizationsState extends OrganizationsEvent {
|
|
const ResetOrganizationsState();
|
|
}
|
|
|
|
|