Files
afterwork/lib/data/models/event_model.dart
2024-09-02 21:16:31 +00:00

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,
};
}
}