class Surat { final int id; final String noSurat; final String subject; final String? perihal; final int companyId; final int? vendorId; final int? categoryId; final DateTime? tanggal; final bool isApproved; final int? taskId; final String? body; final String? tembusan; final DateTime createdAt; const Surat({ required this.id, required this.noSurat, required this.subject, this.perihal, required this.companyId, this.vendorId, this.categoryId, this.tanggal, required this.isApproved, this.taskId, this.body, this.tembusan, required this.createdAt, }); factory Surat.fromJson(Map j) => Surat( id: j['id'], noSurat: j['no_surat'] ?? '', subject: j['subject'] ?? '', perihal: j['perihal'], companyId: j['company_id'] ?? 0, vendorId: j['vendor_id'], categoryId: j['category_id'], tanggal: j['tanggal'] != null ? DateTime.tryParse(j['tanggal']) : null, isApproved: j['is_approved'] ?? false, taskId: j['task_id'], body: j['body'], tembusan: j['tembusan'], createdAt: DateTime.parse(j['created_at']), ); String get statusLabel => isApproved ? 'Disetujui' : 'Menunggu'; } class PagedSurat { final List items; final int total; final int page; final int limit; const PagedSurat({required this.items, required this.total, required this.page, required this.limit}); factory PagedSurat.fromJson(Map j) => PagedSurat( items: (j['items'] as List).map((e) => Surat.fromJson(e)).toList(), total: j['total'], page: j['page'], limit: j['limit'], ); }