import 'package:equatable/equatable.dart'; /// Entité représentant une demande d'amitié. /// Contient les informations nécessaires pour gérer les demandes d'amitié en attente. class FriendRequest extends Equatable { const FriendRequest({ required this.friendshipId, required this.userId, required this.userFirstName, required this.userLastName, required this.friendId, required this.friendFirstName, required this.friendLastName, required this.status, required this.createdAt, }); /// ID de la relation d'amitié final String friendshipId; /// ID de l'utilisateur qui a envoyé la demande final String userId; /// Prénom de l'utilisateur qui a envoyé la demande final String userFirstName; /// Nom de l'utilisateur qui a envoyé la demande final String userLastName; /// ID de l'utilisateur qui a reçu la demande final String friendId; /// Prénom de l'utilisateur qui a reçu la demande final String friendFirstName; /// Nom de l'utilisateur qui a reçu la demande final String friendLastName; /// Statut de la demande (PENDING, ACCEPTED, REJECTED) final String status; /// Date de création de la demande final String createdAt; /// Nom complet de l'utilisateur qui a envoyé la demande String get userFullName => '$userFirstName $userLastName'.trim(); /// Nom complet de l'utilisateur qui a reçu la demande String get friendFullName => '$friendFirstName $friendLastName'.trim(); /// Factory constructor pour créer un [FriendRequest] à partir d'un JSON factory FriendRequest.fromJson(Map json) { // Le backend envoie : userNom (nom de famille), userPrenoms (prénoms) // friendNom (nom de famille), friendPrenoms (prénoms) return FriendRequest( friendshipId: json['friendshipId']?.toString() ?? json['id']?.toString() ?? '', userId: json['userId']?.toString() ?? '', // userNom = nom de famille (lastName), userPrenoms = prénoms (firstName) userFirstName: json['userPrenoms']?.toString() ?? json['userFirstName']?.toString() ?? '', userLastName: json['userNom']?.toString() ?? json['userLastName']?.toString() ?? '', friendId: json['friendId']?.toString() ?? '', // friendNom = nom de famille (lastName), friendPrenoms = prénoms (firstName) friendFirstName: json['friendPrenoms']?.toString() ?? json['friendFirstName']?.toString() ?? '', friendLastName: json['friendNom']?.toString() ?? json['friendLastName']?.toString() ?? '', status: json['status']?.toString() ?? 'PENDING', createdAt: json['createdAt']?.toString() ?? json['created_at']?.toString() ?? '', ); } @override List get props => [ friendshipId, userId, userFirstName, userLastName, friendId, friendFirstName, friendLastName, status, createdAt, ]; }