/// Module de Dependency Injection pour les événements
library evenements_di;

import 'package:get_it/get_it.dart';
import 'package:dio/dio.dart';
import '../data/repositories/evenement_repository_impl.dart';
import '../bloc/evenements_bloc.dart';

/// Configuration de l'injection de dépendances pour le module Événements
class EvenementsDI {
  static final GetIt _getIt = GetIt.instance;

  /// Enregistre toutes les dépendances du module Événements
  static void register() {
    // Repository
    _getIt.registerLazySingleton<EvenementRepository>(
      () => EvenementRepositoryImpl(_getIt<Dio>()),
    );

    // BLoC - Factory pour créer une nouvelle instance à chaque fois
    _getIt.registerFactory<EvenementsBloc>(
      () => EvenementsBloc(_getIt<EvenementRepository>()),
    );
  }

  /// Désenregistre toutes les dépendances (pour les tests)
  static void unregister() {
    if (_getIt.isRegistered<EvenementsBloc>()) {
      _getIt.unregister<EvenementsBloc>();
    }
    if (_getIt.isRegistered<EvenementRepository>()) {
      _getIt.unregister<EvenementRepository>();
    }
  }
}

