import 'package:equatable/equatable.dart';

/// Events pour les activités approuvées par tous les participants
abstract class ApprovedActivityEvent extends Equatable {
  const ApprovedActivityEvent();

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

/// Charger les activités approuvées par tous
class LoadApprovedActivities extends ApprovedActivityEvent {
  final String tripId;
  final List<String> tripParticipants;

  const LoadApprovedActivities({
    required this.tripId,
    required this.tripParticipants,
  });

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

/// Rechercher dans les activités approuvées
class SearchApprovedActivities extends ApprovedActivityEvent {
  final String tripId;
  final String query;
  final List<String> tripParticipants;

  const SearchApprovedActivities({
    required this.tripId,
    required this.query,
    required this.tripParticipants,
  });

  @override
  List<Object?> get props => [tripId, query, tripParticipants];
}

/// Filtrer les activités approuvées
class FilterApprovedActivities extends ApprovedActivityEvent {
  final String? category;
  final double? minRating;

  const FilterApprovedActivities({
    this.category,
    this.minRating,
  });

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

/// Rafraîchir les activités approuvées
class RefreshApprovedActivities extends ApprovedActivityEvent {
  final String tripId;
  final List<String> tripParticipants;

  const RefreshApprovedActivities({
    required this.tripId,
    required this.tripParticipants,
  });

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

/// Effacer les résultats de recherche approuvées
class ClearApprovedSearchResults extends ApprovedActivityEvent {
  const ClearApprovedSearchResults();
}