79 lines
2.8 KiB
Dart
79 lines
2.8 KiB
Dart
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<UserModel> 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<String, dynamic> 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<String, dynamic> 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,
|
|
};
|
|
}
|
|
}
|