import '../core/utils/safe_convert.dart'; class AttendanceSummary { final double percentage; final int present; final int absent; final int late; final int medicalLeave; final int onDuty; const AttendanceSummary({ required this.percentage, required this.present, required this.absent, required this.late, required this.medicalLeave, required this.onDuty, }); factory AttendanceSummary.fromJson(Map json) { return AttendanceSummary( percentage: SafeConvert.toSafeDouble(json['percentage']), present: SafeConvert.toSafeInt(json['present']), absent: SafeConvert.toSafeInt(json['absent']), late: SafeConvert.toSafeInt(json['late']), medicalLeave: SafeConvert.toSafeInt(json['medical_leave']), onDuty: SafeConvert.toSafeInt(json['on_duty']), ); } factory AttendanceSummary.empty() => const AttendanceSummary( percentage: 0.0, present: 0, absent: 0, late: 0, medicalLeave: 0, onDuty: 0, ); } class AttendanceRecord { final int id; final String date; final String status; final String remarks; const AttendanceRecord({ required this.id, required this.date, required this.status, this.remarks = '', }); factory AttendanceRecord.fromJson(Map json) { return AttendanceRecord( id: SafeConvert.toSafeInt(json['id']), date: SafeConvert.toSafeString(json['date']), status: SafeConvert.toSafeString(json['status'], 'absent'), remarks: SafeConvert.toSafeString(json['remarks']), ); } } class AttendanceData { final AttendanceSummary summary; final List records; const AttendanceData({ required this.summary, required this.records, }); factory AttendanceData.fromJson(Map json) { final summaryMap = SafeConvert.toNullableMap(json['summary']) ?? {}; return AttendanceData( summary: AttendanceSummary.fromJson(summaryMap), records: SafeConvert.toSafeList( json['records'], (item) => AttendanceRecord.fromJson(SafeConvert.toNullableMap(item) ?? {}), ), ); } }