import '../../domain/entities/friend_suggestion.dart'; /// Modèle de données pour une suggestion d'ami. /// /// Cette classe hérite de [FriendSuggestion] et ajoute les fonctionnalités /// de conversion depuis/vers JSON pour la communication avec l'API. class FriendSuggestionModel extends FriendSuggestion { const FriendSuggestionModel({ required super.userId, required super.firstName, required super.lastName, required super.email, required super.profileImageUrl, required super.mutualFriendsCount, required super.suggestionReason, }); /// Factory pour créer un [FriendSuggestionModel] depuis un JSON. /// /// Le backend renvoie : /// - userId : UUID de l'utilisateur suggéré /// - prenoms : Prénom(s) de l'utilisateur /// - nom : Nom de famille de l'utilisateur /// - email : Adresse email /// - profileImageUrl : URL de l'image de profil /// - mutualFriendsCount : Nombre d'amis en commun /// - suggestionReason : Raison de la suggestion factory FriendSuggestionModel.fromJson(Map json) { return FriendSuggestionModel( userId: json['userId']?.toString() ?? '', firstName: json['prenoms']?.toString() ?? json['firstName']?.toString() ?? '', lastName: json['nom']?.toString() ?? json['lastName']?.toString() ?? '', email: json['email']?.toString() ?? '', profileImageUrl: json['profileImageUrl']?.toString() ?? '', mutualFriendsCount: (json['mutualFriendsCount'] as num?)?.toInt() ?? 0, suggestionReason: json['suggestionReason']?.toString() ?? 'Suggestion', ); } /// Convertit le modèle en JSON. Map toJson() { return { 'userId': userId, 'prenoms': firstName, 'nom': lastName, 'email': email, 'profileImageUrl': profileImageUrl, 'mutualFriendsCount': mutualFriendsCount, 'suggestionReason': suggestionReason, }; } /// Convertit le modèle en entité de domaine. FriendSuggestion toEntity() { return FriendSuggestion( userId: userId, firstName: firstName, lastName: lastName, email: email, profileImageUrl: profileImageUrl, mutualFriendsCount: mutualFriendsCount, suggestionReason: suggestionReason, ); } /// Factory pour créer un [FriendSuggestionModel] depuis une entité. factory FriendSuggestionModel.fromEntity(FriendSuggestion entity) { return FriendSuggestionModel( userId: entity.userId, firstName: entity.firstName, lastName: entity.lastName, email: entity.email, profileImageUrl: entity.profileImageUrl, mutualFriendsCount: entity.mutualFriendsCount, suggestionReason: entity.suggestionReason, ); } }