wesal/frontend/lib/models/comment_models.dart
2025-07-27 13:14:42 +03:00

109 lines
2.7 KiB
Dart

class CommentUser {
final String id;
final String displayName;
CommentUser({
required this.id,
required this.displayName,
});
factory CommentUser.fromJson(Map<String, dynamic> json) {
return CommentUser(
id: json['id'].toString(),
displayName: json['displayName'] ?? '',
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'displayName': displayName,
};
}
}
class Comment {
final String id;
final String postId;
final CommentUser creator;
final String body;
final DateTime creationDate;
final String? replyComment;
final String? displayReplyComment;
final CommentUser? replyUser;
final int level;
final List<Comment> replies;
Comment({
required this.id,
required this.postId,
required this.creator,
required this.body,
required this.creationDate,
this.replyComment,
this.displayReplyComment,
this.replyUser,
required this.level,
required this.replies,
});
factory Comment.fromJson(Map<String, dynamic> json) {
return Comment(
id: json['id'].toString(),
postId: json['postId'].toString(),
creator: CommentUser.fromJson(json['creator']),
body: json['body'] ?? '',
creationDate: DateTime.parse(json['creationDate']),
replyComment: json['replyComment']?.toString(),
displayReplyComment: json['displayReplyComment']?.toString(),
replyUser: json['replyUser'] != null ? CommentUser.fromJson(json['replyUser']) : null,
level: json['level'] ?? 1,
replies: (json['replies'] as List?)?.map((reply) => Comment.fromJson(reply)).toList() ?? [],
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'postId': postId,
'creator': creator.toJson(),
'body': body,
'creationDate': creationDate.toIso8601String(),
'replyComment': replyComment,
'displayReplyComment': displayReplyComment,
'replyUser': replyUser?.toJson(),
'level': level,
'replies': replies.map((reply) => reply.toJson()).toList(),
};
}
}
class CommentsResponse {
final bool status;
final String? message;
final List<Comment> data;
CommentsResponse({
required this.status,
this.message,
required this.data,
});
factory CommentsResponse.fromJson(Map<String, dynamic> json) {
return CommentsResponse(
status: json['status'] ?? false,
message: json['message'],
data: json['data'] != null
? (json['data'] as List).map((comment) => Comment.fromJson(comment)).toList()
: [],
);
}
Map<String, dynamic> toJson() {
return {
'status': status,
'message': message,
'data': data.map((comment) => comment.toJson()).toList(),
};
}
}