class AbsensiModel { final int? id; final int idTeknisi; final String tanggal; final String? jamMasuk; final String? jamKeluar; final String? fotoAbsenMasuk; final String? fotoAbsenKeluar; final String status; final String? keterangan; AbsensiModel({ this.id, required this.idTeknisi, required this.tanggal, this.jamMasuk, this.jamKeluar, this.fotoAbsenMasuk, this.fotoAbsenKeluar, required this.status, this.keterangan, }); factory AbsensiModel.fromJson(Map json) { return AbsensiModel( id: json['id'] != null ? int.tryParse(json['id'].toString()) : null, idTeknisi: int.tryParse(json['id_teknisi']?.toString() ?? '') ?? 0, tanggal: json['tanggal'], jamMasuk: json['jam_masuk'], jamKeluar: json['jam_keluar'], fotoAbsenMasuk: json['foto_absen_masuk'], fotoAbsenKeluar: json['foto_absen_keluar'], status: json['status'], keterangan: json['keterangan'], ); } Map toJson() { return { 'id': id, 'id_teknisi': idTeknisi, 'tanggal': tanggal, 'jam_masuk': jamMasuk, 'jam_keluar': jamKeluar, 'foto_absen_masuk': fotoAbsenMasuk, 'foto_absen_keluar': fotoAbsenKeluar, 'status': status, 'keterangan': keterangan, }; } } class KeteranganOption { final String label; bool isSelected; KeteranganOption({ required this.label, this.isSelected = false, }); } class AbsensiStatus { final bool sudahAbsenMasuk; final bool sudahAbsenKeluar; final AbsensiModel? dataAbsensi; AbsensiStatus({ required this.sudahAbsenMasuk, required this.sudahAbsenKeluar, this.dataAbsensi, }); factory AbsensiStatus.fromJson(Map json) { return AbsensiStatus( sudahAbsenMasuk: json['sudah_absen_masuk'] ?? false, sudahAbsenKeluar: json['sudah_absen_keluar'] ?? false, dataAbsensi: json['data_absensi'] != null ? AbsensiModel.fromJson(json['data_absensi']) : null, ); } }