Files
voidea/flutter/lib/models/collaboration.dart
T

135 lines
3.5 KiB
Dart

class Vote {
final String id;
final String ideaId;
final String userId;
final bool isUpvote;
final DateTime createdAt;
Vote({
required this.id,
required this.ideaId,
required this.userId,
required this.isUpvote,
required this.createdAt,
});
factory Vote.fromJson(Map<String, dynamic> json) => Vote(
id: json['id'] as String,
ideaId: json['idea_id'] as String,
userId: json['user_id'] as String,
isUpvote: json['is_upvote'] as bool,
createdAt: DateTime.parse(json['created_at'] as String),
);
}
class Comment {
final String id;
final String ideaId;
final String userId;
final String userName;
final String body;
final String? parentId;
final List<Comment> replies;
final DateTime createdAt;
final DateTime updatedAt;
Comment({
required this.id,
required this.ideaId,
required this.userId,
this.userName = '',
required this.body,
this.parentId,
this.replies = const [],
required this.createdAt,
required this.updatedAt,
});
factory Comment.fromJson(Map<String, dynamic> json) => Comment(
id: json['id'] as String,
ideaId: json['idea_id'] as String,
userId: json['user_id'] as String,
userName: json['user_name'] as String? ?? '',
body: json['body'] as String,
parentId: json['parent_id'] as String?,
replies: (json['replies'] as List<dynamic>? ?? [])
.map((e) => Comment.fromJson(e as Map<String, dynamic>))
.toList(),
createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String),
);
}
class CreateCommentRequest {
final String body;
final String? parentId;
CreateCommentRequest({required this.body, this.parentId});
Map<String, dynamic> toJson() => {
'body': body,
if (parentId != null) 'parent_id': parentId,
};
}
class Activity {
final String id;
final String ideaId;
final String userId;
final String userName;
final String action;
final String? description;
final DateTime createdAt;
Activity({
required this.id,
required this.ideaId,
required this.userId,
this.userName = '',
required this.action,
this.description,
required this.createdAt,
});
factory Activity.fromJson(Map<String, dynamic> json) => Activity(
id: json['id'] as String,
ideaId: json['idea_id'] as String,
userId: json['user_id'] as String,
userName: json['user_name'] as String? ?? '',
action: json['action'] as String,
description: json['description'] as String?,
createdAt: DateTime.parse(json['created_at'] as String),
);
}
class AppNotification {
final String id;
final String userId;
final String title;
final String body;
final bool isRead;
final String? ideaId;
final DateTime createdAt;
AppNotification({
required this.id,
required this.userId,
required this.title,
required this.body,
this.isRead = false,
this.ideaId,
required this.createdAt,
});
factory AppNotification.fromJson(Map<String, dynamic> json) =>
AppNotification(
id: json['id'] as String,
userId: json['user_id'] as String,
title: json['title'] as String,
body: json['body'] as String? ?? '',
isRead: json['is_read'] as bool? ?? false,
ideaId: json['idea_id'] as String?,
createdAt: DateTime.parse(json['created_at'] as String),
);
}