class LeaveRequest { final int id; final int userId; final String username; final String startDate; final String endDate; final String reason; final String status; // pending | approved | rejected final String? adminNotes; final String? reviewedByUsername; final String? reviewedAt; final String createdAt; const LeaveRequest({ required this.id, required this.userId, required this.username, required this.startDate, required this.endDate, required this.reason, required this.status, this.adminNotes, this.reviewedByUsername, this.reviewedAt, required this.createdAt, }); factory LeaveRequest.fromJson(Map j) => LeaveRequest( id: j['id'], userId: j['user_id'], username: j['username'] ?? '', startDate: j['start_date'] ?? '', endDate: j['end_date'] ?? '', reason: j['reason'] ?? '', status: j['status'] ?? 'pending', adminNotes: j['admin_notes'], reviewedByUsername: j['reviewed_by_username'], reviewedAt: j['reviewed_at'], createdAt: j['created_at'] ?? '', ); int get durationDays { try { final s = DateTime.parse(startDate); final e = DateTime.parse(endDate); return e.difference(s).inDays + 1; } catch (_) { return 1; } } }