import 'package:afterwork/data/models/user_model.dart'; /// Modèle de données représentant un événement. /// Cette classe encapsule toutes les propriétés d'un événement, y compris /// le titre, la description, la date, la localisation, la catégorie, les liens, /// l'image, le créateur, les participants et le statut de l'événement. class EventModel { final String id; // Identifiant unique de l'événement final String title; // Titre de l'événement final String description; // Description de l'événement final String date; // Date de l'événement final String location; // Localisation de l'événement final String category; // Catégorie de l'événement final String link; // Lien associé à l'événement final String? imageUrl; // URL de l'image de l'événement (optionnel) final UserModel creator; // Créateur de l'événement final List participants; // Liste des participants à l'événement final String status; // Statut de l'événement (e.g., "OPEN", "CLOSED") /// Constructeur pour initialiser toutes les propriétés de l'événement. EventModel({ required this.id, required this.title, required this.description, required this.date, required this.location, required this.category, required this.link, this.imageUrl, required this.creator, required this.participants, required this.status, }); /// Convertit un objet JSON en `EventModel`. factory EventModel.fromJson(Map json) { // Log de la conversion depuis JSON print('Conversion de l\'objet JSON en EventModel: ${json['id']}'); return EventModel( id: json['id'], title: json['title'], description: json['description'], date: json['date'], location: json['location'], category: json['category'], link: json['link'] ?? '', // Assure qu'il ne soit pas null imageUrl: json['imageUrl'] ?? '', // Assure qu'il ne soit pas null status: json['status'], creator: UserModel.fromJson(json['creator']), participants: json['participants'] != null ? (json['participants'] as List) .map((user) => UserModel.fromJson(user)) .toList() : [], // Si participants est null, retourne une liste vide ); } /// Convertit un `EventModel` en objet JSON. Map toJson() { // Log de la conversion en JSON print('Conversion de l\'EventModel en objet JSON: $id'); return { 'id': id, 'title': title, 'description': description, 'date': date, 'location': location, 'category': category, 'link': link, 'imageUrl': imageUrl, 'creator': creator.toJson(), 'participants': participants.map((user) => user.toJson()).toList(), 'status': status, }; } }