class InvitationTag { final int id; final String name; final String colorHex; final String iconName; InvitationTag({ required this.id, required this.name, required this.colorHex, required this.iconName, }); factory InvitationTag.fromJson(Map json) { return InvitationTag( id: json['id'], name: json['name'], colorHex: json['colorHex'], iconName: json['iconName'], ); } } class InvitationCreator { final int id; final String displayName; final String? avatar; InvitationCreator({ required this.id, required this.displayName, this.avatar, }); factory InvitationCreator.fromJson(Map json) { return InvitationCreator( id: json['id'], displayName: json['displayName'], avatar: json['avatar'], ); } } class Invitation { final int id; final String title; final String? description; final DateTime? dateTime; final String? location; final int maxParticipants; final int currentAttendees; final InvitationTag tag; final InvitationCreator creator; final DateTime createdAt; Invitation({ required this.id, required this.title, this.description, this.dateTime, this.location, required this.maxParticipants, required this.currentAttendees, required this.tag, required this.creator, required this.createdAt, }); factory Invitation.fromJson(Map json) { return Invitation( id: json['id'], title: json['title'], description: json['description'], dateTime: json['dateTime'] != null ? DateTime.parse(json['dateTime']) : null, location: json['location'], maxParticipants: json['maxParticipants'], currentAttendees: json['currentAttendees'], tag: InvitationTag.fromJson(json['tag']), creator: InvitationCreator.fromJson(json['creator']), createdAt: DateTime.parse(json['createdAt']), ); } } class InvitationsResponse { final bool status; final String? message; final InvitationsData? data; InvitationsResponse({ required this.status, this.message, this.data, }); factory InvitationsResponse.fromJson(Map json) { return InvitationsResponse( status: json['status'], message: json['message'], data: json['data'] != null ? InvitationsData.fromJson(json['data']) : null, ); } } class InvitationsData { final List created; final List accepted; final List available; InvitationsData({ required this.created, required this.accepted, required this.available, }); factory InvitationsData.fromJson(Map json) { return InvitationsData( created: (json['created'] as List) .map((item) => Invitation.fromJson(item)) .toList(), accepted: (json['accepted'] as List) .map((item) => Invitation.fromJson(item)) .toList(), available: (json['available'] as List) .map((item) => Invitation.fromJson(item)) .toList(), ); } bool get isEmpty => created.isEmpty && accepted.isEmpty && available.isEmpty; }