Initial commit: unionflow-mobile-apps

Application Flutter complète (sans build artifacts).

Signed-off-by: lions dev Team
This commit is contained in:
dahoud
2026-03-15 16:30:08 +00:00
commit d094d6db9c
1790 changed files with 507435 additions and 0 deletions

View File

@@ -0,0 +1,160 @@
/// BLoC pour la gestion des paramètres système (Clean Architecture)
library system_settings_bloc;
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:injectable/injectable.dart';
import '../../domain/usecases/get_settings.dart';
import '../../domain/usecases/update_settings.dart';
import '../../domain/usecases/get_cache_stats.dart';
import '../../domain/usecases/clear_cache.dart' as uc;
import '../../domain/usecases/reset_settings.dart';
import '../../domain/repositories/system_config_repository.dart';
import 'system_settings_event.dart';
import 'system_settings_state.dart';
@injectable
class SystemSettingsBloc extends Bloc<SystemSettingsEvent, SystemSettingsState> {
final GetSettings _getSettings;
final UpdateSettings _updateSettings;
final GetCacheStats _getCacheStats;
final uc.ClearCache _clearCache;
final ResetSettings _resetSettings;
final ISystemConfigRepository _repository; // Pour méthodes non-couvertes (metrics, test DB, test email)
SystemSettingsBloc(
this._getSettings,
this._updateSettings,
this._getCacheStats,
this._clearCache,
this._resetSettings,
this._repository,
) : super(SystemSettingsInitial()) {
on<LoadSystemConfig>(_onLoadSystemConfig);
on<UpdateSystemConfig>(_onUpdateSystemConfig);
on<LoadCacheStats>(_onLoadCacheStats);
on<LoadSystemMetrics>(_onLoadSystemMetrics);
on<ClearCache>(_onClearCache);
on<TestDatabaseConnection>(_onTestDatabaseConnection);
on<TestEmailConfiguration>(_onTestEmailConfiguration);
on<ResetSystemConfig>(_onResetSystemConfig);
}
Future<void> _onLoadSystemConfig(
LoadSystemConfig event,
Emitter<SystemSettingsState> emit,
) async {
emit(SystemSettingsLoading());
try {
final config = await _getSettings(); // ✅ Use case
emit(SystemConfigLoaded(config));
} catch (e) {
emit(SystemSettingsError('Erreur de chargement: ${e.toString()}'));
}
}
Future<void> _onUpdateSystemConfig(
UpdateSystemConfig event,
Emitter<SystemSettingsState> emit,
) async {
emit(SystemSettingsLoading());
try {
final config = await _updateSettings(event.config); // ✅ Use case
emit(SystemConfigLoaded(config));
emit(const SystemSettingsSuccess('Configuration mise à jour'));
} catch (e) {
emit(SystemSettingsError('Erreur de mise à jour: ${e.toString()}'));
}
}
Future<void> _onLoadCacheStats(
LoadCacheStats event,
Emitter<SystemSettingsState> emit,
) async {
emit(SystemSettingsLoading());
try {
final stats = await _getCacheStats(); // ✅ Use case
emit(CacheStatsLoaded(stats));
} catch (e) {
emit(SystemSettingsError('Erreur de chargement: ${e.toString()}'));
}
}
Future<void> _onLoadSystemMetrics(
LoadSystemMetrics event,
Emitter<SystemSettingsState> emit,
) async {
emit(SystemSettingsLoading());
try {
final metrics = await _repository.getMetrics();
emit(SystemMetricsLoaded(metrics));
} catch (e) {
emit(SystemSettingsError('Erreur de chargement des métriques: ${e.toString()}'));
}
}
Future<void> _onClearCache(
ClearCache event,
Emitter<SystemSettingsState> emit,
) async {
emit(SystemSettingsLoading());
try {
await _clearCache(); // ✅ Use case
emit(const SystemSettingsSuccess('Cache vidé avec succès'));
} catch (e) {
emit(SystemSettingsError('Erreur: ${e.toString()}'));
}
}
Future<void> _onTestDatabaseConnection(
TestDatabaseConnection event,
Emitter<SystemSettingsState> emit,
) async {
emit(SystemSettingsLoading());
try {
final result = await _repository.testDatabase();
final success = result['success'] as bool? ?? false;
final message = result['message'] as String? ?? 'Test terminé';
if (success) {
emit(SystemSettingsSuccess(message));
} else {
emit(SystemSettingsError(message));
}
} catch (e) {
emit(SystemSettingsError('Erreur de test: ${e.toString()}'));
}
}
Future<void> _onTestEmailConfiguration(
TestEmailConfiguration event,
Emitter<SystemSettingsState> emit,
) async {
emit(SystemSettingsLoading());
try {
final result = await _repository.testEmail();
final success = result['success'] as bool? ?? false;
final message = result['message'] as String? ?? 'Test terminé';
if (success) {
emit(SystemSettingsSuccess(message));
} else {
emit(SystemSettingsError(message));
}
} catch (e) {
emit(SystemSettingsError('Erreur de test: ${e.toString()}'));
}
}
/// Réinitialise la configuration système aux valeurs par défaut
Future<void> _onResetSystemConfig(
ResetSystemConfig event,
Emitter<SystemSettingsState> emit,
) async {
emit(SystemSettingsLoading());
try {
final config = await _resetSettings(); // ✅ Use case
emit(SystemConfigLoaded(config));
emit(const SystemSettingsSuccess('Configuration réinitialisée'));
} catch (e) {
emit(SystemSettingsError('Erreur de réinitialisation: ${e.toString()}'));
}
}
}

View File

@@ -0,0 +1,34 @@
/// Events pour SystemSettingsBloc
library system_settings_event;
import 'package:equatable/equatable.dart';
abstract class SystemSettingsEvent extends Equatable {
const SystemSettingsEvent();
@override
List<Object?> get props => [];
}
class LoadSystemConfig extends SystemSettingsEvent {}
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 TestDatabaseConnection extends SystemSettingsEvent {}
class TestEmailConfiguration extends SystemSettingsEvent {}
class ResetSystemConfig extends SystemSettingsEvent {}

View File

@@ -0,0 +1,63 @@
/// States pour SystemSettingsBloc
library system_settings_state;
import 'package:equatable/equatable.dart';
import '../../data/models/system_config_model.dart';
import '../../data/models/cache_stats_model.dart';
import '../../data/models/system_metrics_model.dart';
abstract class SystemSettingsState extends Equatable {
const SystemSettingsState();
@override
List<Object?> get props => [];
}
class SystemSettingsInitial extends SystemSettingsState {}
class SystemSettingsLoading extends SystemSettingsState {}
class SystemConfigLoaded extends SystemSettingsState {
final SystemConfigModel config;
const SystemConfigLoaded(this.config);
@override
List<Object?> get props => [config];
}
class CacheStatsLoaded extends SystemSettingsState {
final CacheStatsModel stats;
const CacheStatsLoaded(this.stats);
@override
List<Object?> get props => [stats];
}
class SystemMetricsLoaded extends SystemSettingsState {
final SystemMetricsModel metrics;
const SystemMetricsLoaded(this.metrics);
@override
List<Object?> get props => [metrics];
}
class SystemSettingsSuccess extends SystemSettingsState {
final String message;
const SystemSettingsSuccess(this.message);
@override
List<Object?> get props => [message];
}
class SystemSettingsError extends SystemSettingsState {
final String error;
const SystemSettingsError(this.error);
@override
List<Object?> get props => [error];
}