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<String, dynamic> 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<String, dynamic> 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<String, dynamic> 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,
    );
  }
}