feat(features): refontes onboarding/organizations/profile/reports/settings/solidarity
- onboarding : datasource souscription, models formule/status, bloc complet - organizations : bloc orgs + switcher + types bloc, models, pages edit/create - profile : bloc complet avec change password, delete account, preferences - reports : bloc avec DashboardReports + ScheduleReports + GenerateReport - settings : language, privacy, feedback pages - solidarity : bloc complet demandes d'aide (CRUD, approuver, rejeter)
This commit is contained in:
@@ -38,6 +38,20 @@ class SystemSettingsBloc extends Bloc<SystemSettingsEvent, SystemSettingsState>
|
||||
on<TestDatabaseConnection>(_onTestDatabaseConnection);
|
||||
on<TestEmailConfiguration>(_onTestEmailConfiguration);
|
||||
on<ResetSystemConfig>(_onResetSystemConfig);
|
||||
on<OptimizeDatabase>(_onOptimizeDatabase);
|
||||
on<ForceGlobalLogout>(_onForceGlobalLogout);
|
||||
on<CleanupSessions>(_onCleanupSessions);
|
||||
on<CleanOldLogs>(_onCleanOldLogs);
|
||||
on<PurgeExpiredData>(_onPurgeExpiredData);
|
||||
on<AnalyzePerformance>(_onAnalyzePerformance);
|
||||
on<CreateBackup>(_onCreateBackup);
|
||||
on<ScheduleMaintenance>(_onScheduleMaintenance);
|
||||
on<EmergencyMaintenance>(_onEmergencyMaintenance);
|
||||
on<CheckUpdates>(_onCheckUpdates);
|
||||
on<ExportLogs>(_onExportLogs);
|
||||
on<GenerateUsageReport>(_onGenerateUsageReport);
|
||||
on<GenerateAuditReport>(_onGenerateAuditReport);
|
||||
on<ExportGDPRData>(_onExportGDPRData);
|
||||
}
|
||||
|
||||
Future<void> _onLoadSystemConfig(
|
||||
@@ -165,4 +179,159 @@ class SystemSettingsBloc extends Bloc<SystemSettingsEvent, SystemSettingsState>
|
||||
emit(SystemSettingsError('Erreur de réinitialisation: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onOptimizeDatabase(OptimizeDatabase event, Emitter<SystemSettingsState> emit) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final result = await _repository.optimizeDatabase();
|
||||
emit(SystemSettingsSuccess(result['message'] as String? ?? 'Base de données optimisée'));
|
||||
} catch (e) {
|
||||
if (e is DioException && e.type == DioExceptionType.cancel) return;
|
||||
emit(SystemSettingsError('Erreur: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onForceGlobalLogout(ForceGlobalLogout event, Emitter<SystemSettingsState> emit) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final result = await _repository.forceGlobalLogout();
|
||||
emit(SystemSettingsSuccess(result['message'] as String? ?? 'Déconnexion globale déclenchée'));
|
||||
} catch (e) {
|
||||
if (e is DioException && e.type == DioExceptionType.cancel) return;
|
||||
emit(SystemSettingsError('Erreur: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onCleanupSessions(CleanupSessions event, Emitter<SystemSettingsState> emit) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final result = await _repository.cleanupSessions();
|
||||
emit(SystemSettingsSuccess(result['message'] as String? ?? 'Sessions nettoyées'));
|
||||
} catch (e) {
|
||||
if (e is DioException && e.type == DioExceptionType.cancel) return;
|
||||
emit(SystemSettingsError('Erreur: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onCleanOldLogs(CleanOldLogs event, Emitter<SystemSettingsState> emit) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final result = await _repository.cleanOldLogs();
|
||||
emit(SystemSettingsSuccess(result['message'] as String? ?? 'Logs nettoyés'));
|
||||
} catch (e) {
|
||||
if (e is DioException && e.type == DioExceptionType.cancel) return;
|
||||
emit(SystemSettingsError('Erreur: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onPurgeExpiredData(PurgeExpiredData event, Emitter<SystemSettingsState> emit) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final result = await _repository.purgeExpiredData();
|
||||
emit(SystemSettingsSuccess(result['message'] as String? ?? 'Données purgées'));
|
||||
} catch (e) {
|
||||
if (e is DioException && e.type == DioExceptionType.cancel) return;
|
||||
emit(SystemSettingsError('Erreur: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onAnalyzePerformance(AnalyzePerformance event, Emitter<SystemSettingsState> emit) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final result = await _repository.analyzePerformance();
|
||||
emit(SystemSettingsSuccess(result['message'] as String? ?? 'Analyse terminée'));
|
||||
} catch (e) {
|
||||
if (e is DioException && e.type == DioExceptionType.cancel) return;
|
||||
emit(SystemSettingsError('Erreur: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onCreateBackup(CreateBackup event, Emitter<SystemSettingsState> emit) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final result = await _repository.createBackup();
|
||||
emit(SystemSettingsSuccess(result['message'] as String? ?? 'Sauvegarde créée'));
|
||||
} catch (e) {
|
||||
if (e is DioException && e.type == DioExceptionType.cancel) return;
|
||||
emit(SystemSettingsError('Erreur: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onScheduleMaintenance(ScheduleMaintenance event, Emitter<SystemSettingsState> emit) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final result = await _repository.scheduleMaintenance(scheduledAt: event.scheduledAt, reason: event.reason);
|
||||
emit(SystemSettingsSuccess(result['message'] as String? ?? 'Maintenance planifiée'));
|
||||
} catch (e) {
|
||||
if (e is DioException && e.type == DioExceptionType.cancel) return;
|
||||
emit(SystemSettingsError('Erreur: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onEmergencyMaintenance(EmergencyMaintenance event, Emitter<SystemSettingsState> emit) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final result = await _repository.emergencyMaintenance();
|
||||
emit(SystemSettingsSuccess(result['message'] as String? ?? 'Maintenance d\'urgence activée'));
|
||||
} catch (e) {
|
||||
if (e is DioException && e.type == DioExceptionType.cancel) return;
|
||||
emit(SystemSettingsError('Erreur: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onCheckUpdates(CheckUpdates event, Emitter<SystemSettingsState> emit) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final result = await _repository.checkUpdates();
|
||||
emit(SystemSettingsSuccess(result['message'] as String? ?? 'Vérification terminée'));
|
||||
} catch (e) {
|
||||
if (e is DioException && e.type == DioExceptionType.cancel) return;
|
||||
emit(SystemSettingsError('Erreur: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onExportLogs(ExportLogs event, Emitter<SystemSettingsState> emit) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final result = await _repository.exportLogs();
|
||||
final count = result['count'] as int? ?? 0;
|
||||
emit(SystemSettingsSuccess('$count log(s) exporté(s)'));
|
||||
} catch (e) {
|
||||
if (e is DioException && e.type == DioExceptionType.cancel) return;
|
||||
emit(SystemSettingsError('Erreur: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onGenerateUsageReport(GenerateUsageReport event, Emitter<SystemSettingsState> emit) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final result = await _repository.generateUsageReport();
|
||||
emit(SystemSettingsSuccess(result['message'] as String? ?? 'Rapport généré'));
|
||||
} catch (e) {
|
||||
if (e is DioException && e.type == DioExceptionType.cancel) return;
|
||||
emit(SystemSettingsError('Erreur: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onGenerateAuditReport(GenerateAuditReport event, Emitter<SystemSettingsState> emit) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final result = await _repository.generateAuditReport();
|
||||
emit(SystemSettingsSuccess(result['message'] as String? ?? 'Rapport d\'audit généré'));
|
||||
} catch (e) {
|
||||
if (e is DioException && e.type == DioExceptionType.cancel) return;
|
||||
emit(SystemSettingsError('Erreur: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onExportGDPRData(ExportGDPRData event, Emitter<SystemSettingsState> emit) async {
|
||||
emit(SystemSettingsLoading());
|
||||
try {
|
||||
final result = await _repository.exportGDPRData();
|
||||
emit(SystemSettingsSuccess(result['message'] as String? ?? 'Export RGPD initié'));
|
||||
} catch (e) {
|
||||
if (e is DioException && e.type == DioExceptionType.cancel) return;
|
||||
emit(SystemSettingsError('Erreur: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,25 +10,63 @@ abstract class SystemSettingsEvent extends Equatable {
|
||||
List<Object?> get props => [];
|
||||
}
|
||||
|
||||
// ── Chargement ─────────────────────────────────────────────────────────────
|
||||
class LoadSystemConfig extends SystemSettingsEvent {}
|
||||
class LoadCacheStats extends SystemSettingsEvent {}
|
||||
class LoadSystemMetrics extends SystemSettingsEvent {}
|
||||
|
||||
// ── Configuration ──────────────────────────────────────────────────────────
|
||||
class UpdateSystemConfig extends SystemSettingsEvent {
|
||||
final Map<String, dynamic> config;
|
||||
|
||||
const UpdateSystemConfig(this.config);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [config];
|
||||
}
|
||||
|
||||
class LoadCacheStats extends SystemSettingsEvent {}
|
||||
|
||||
class LoadSystemMetrics extends SystemSettingsEvent {}
|
||||
|
||||
class ClearCache extends SystemSettingsEvent {}
|
||||
class ResetSystemConfig extends SystemSettingsEvent {}
|
||||
|
||||
// ── Tests ───────────────────────────────────────────────────────────────────
|
||||
class TestDatabaseConnection extends SystemSettingsEvent {}
|
||||
|
||||
class TestEmailConfiguration extends SystemSettingsEvent {}
|
||||
|
||||
class ResetSystemConfig extends SystemSettingsEvent {}
|
||||
// ── Cache ────────────────────────────────────────────────────────────────────
|
||||
class ClearCache extends SystemSettingsEvent {}
|
||||
|
||||
// ── Base de données ──────────────────────────────────────────────────────────
|
||||
class OptimizeDatabase extends SystemSettingsEvent {}
|
||||
|
||||
// ── Sécurité ─────────────────────────────────────────────────────────────────
|
||||
class ForceGlobalLogout extends SystemSettingsEvent {}
|
||||
class CleanupSessions extends SystemSettingsEvent {}
|
||||
class ExportGDPRData extends SystemSettingsEvent {}
|
||||
|
||||
// ── Logs ─────────────────────────────────────────────────────────────────────
|
||||
class CleanOldLogs extends SystemSettingsEvent {}
|
||||
class ExportLogs extends SystemSettingsEvent {}
|
||||
|
||||
// ── Données ──────────────────────────────────────────────────────────────────
|
||||
class PurgeExpiredData extends SystemSettingsEvent {}
|
||||
|
||||
// ── Performance ──────────────────────────────────────────────────────────────
|
||||
class AnalyzePerformance extends SystemSettingsEvent {}
|
||||
|
||||
// ── Sauvegarde ────────────────────────────────────────────────────────────────
|
||||
class CreateBackup extends SystemSettingsEvent {}
|
||||
|
||||
// ── Maintenance ───────────────────────────────────────────────────────────────
|
||||
class ScheduleMaintenance extends SystemSettingsEvent {
|
||||
final String? scheduledAt;
|
||||
final String? reason;
|
||||
const ScheduleMaintenance({this.scheduledAt, this.reason});
|
||||
@override
|
||||
List<Object?> get props => [scheduledAt, reason];
|
||||
}
|
||||
|
||||
class EmergencyMaintenance extends SystemSettingsEvent {}
|
||||
|
||||
// ── Mises à jour ──────────────────────────────────────────────────────────────
|
||||
class CheckUpdates extends SystemSettingsEvent {}
|
||||
|
||||
// ── Rapports ──────────────────────────────────────────────────────────────────
|
||||
class GenerateAuditReport extends SystemSettingsEvent {}
|
||||
class GenerateUsageReport extends SystemSettingsEvent {}
|
||||
|
||||
Reference in New Issue
Block a user