/// 일정 모델 library; class Schedule { final int id; final String title; final String date; final String? time; final String? endDate; final String? endTime; final String? description; final String? categoryName; final String? categoryColor; final String? memberNames; final String? sourceUrl; final String? sourceName; Schedule({ required this.id, required this.title, required this.date, this.time, this.endDate, this.endTime, this.description, this.categoryName, this.categoryColor, this.memberNames, this.sourceUrl, this.sourceName, }); factory Schedule.fromJson(Map json) { return Schedule( id: json['id'] as int, title: json['title'] as String, date: json['date'] as String, time: json['time'] as String?, endDate: json['end_date'] as String?, endTime: json['end_time'] as String?, description: json['description'] as String?, categoryName: json['category_name'] as String?, categoryColor: json['category_color'] as String?, memberNames: json['member_names'] as String?, sourceUrl: json['source_url'] as String?, sourceName: json['source_name'] as String?, ); } /// 멤버 리스트 반환 List get memberList { if (memberNames == null || memberNames!.isEmpty) return []; return memberNames!.split(',').map((n) => n.trim()).where((n) => n.isNotEmpty).toList(); } /// 시간 포맷 (HH:mm) String? get formattedTime { if (time == null) return null; return time!.length >= 5 ? time!.substring(0, 5) : time; } }