part of 'reports_bloc.dart';

abstract class ReportsState extends Equatable {
  const ReportsState();

  @override
  List<Object?> get props => [];
}

class ReportsInitial extends ReportsState {
  const ReportsInitial();
}

class ReportsLoading extends ReportsState {
  const ReportsLoading();
}

class ReportsDashboardLoaded extends ReportsState {
  final Map<String, dynamic> performance;
  final Map<String, dynamic> statsMembres;
  final Map<String, dynamic> statsCotisations;
  final Map<String, dynamic> statsEvenements;

  const ReportsDashboardLoaded({
    required this.performance,
    required this.statsMembres,
    required this.statsCotisations,
    required this.statsEvenements,
  });

  @override
  List<Object?> get props => [performance, statsMembres, statsCotisations, statsEvenements];
}

class ReportsError extends ReportsState {
  final String message;
  const ReportsError(this.message);

  @override
  List<Object?> get props => [message];
}

class ReportScheduled extends ReportsState {
  final String message;
  const ReportScheduled([this.message = 'Programmation configurée. Vous recevrez le rapport par email.']);

  @override
  List<Object?> get props => [message];
}

class ReportGenerated extends ReportsState {
  final String type;
  final String message;
  const ReportGenerated(this.type, [this.message = 'Génération lancée. Vous recevrez le rapport par email.']);

  @override
  List<Object?> get props => [type, message];
}
