/// Use case: Créer un nouveau membre
library create_member;

import 'package:injectable/injectable.dart';
import '../../data/models/membre_complete_model.dart';
import '../repositories/membre_repository.dart';

/// Use case pour créer un membre
/// Réservé aux utilisateurs avec le rôle HR_MANAGER
@injectable
class CreateMember {
  final IMembreRepository _repository;

  CreateMember(this._repository);

  /// Exécute le use case
  ///
  /// [membre] - Modèle complet du membre à créer
  ///
  /// Retourne le membre créé avec son ID généré
  /// Lève une exception en cas d'erreur de validation ou de création
  Future<MembreCompletModel> call(MembreCompletModel membre) async {
    return _repository.createMembre(membre);
  }
}
