MIF_E31230910_MP-HRIS-MOBILE/lib/models/presensi_model.dart

129 lines
3.9 KiB
Dart

class PresensiModel {
final String tanggal;
final String? jamMasuk;
final String? jamPulang;
final String shift;
final String lokasi;
final String? statusJadwal;
final bool isAdjusted;
final String? adjustmentNote;
final bool sudahAbsenMasuk;
final bool sudahAbsenPulang;
final String? statusMasuk;
final String? statusPulang;
final String? jadwalJamMasuk;
final String? jadwalJamPulang;
final String? kantorNama;
final double? kantorLat;
final double? kantorLon;
final double? kantorRadius;
PresensiModel({
required this.tanggal,
this.jamMasuk,
this.jamPulang,
required this.shift,
required this.lokasi,
this.statusJadwal,
this.isAdjusted = false,
this.adjustmentNote,
this.sudahAbsenMasuk = false,
this.sudahAbsenPulang = false,
this.statusMasuk,
this.statusPulang,
this.jadwalJamMasuk,
this.jadwalJamPulang,
this.kantorNama,
this.kantorLat,
this.kantorLon,
this.kantorRadius,
});
factory PresensiModel.fromJson(Map<String, dynamic> json) {
return PresensiModel(
tanggal: json['tanggal'],
jamMasuk: json['jam_masuk'],
jamPulang: json['jam_pulang'],
shift: json['shift'],
lokasi: json['lokasi'],
statusJadwal: json['status_jadwal'],
isAdjusted: json['is_adjusted'] ?? false,
adjustmentNote: json['note'],
sudahAbsenMasuk: json['sudah_absen_masuk'] ?? false,
sudahAbsenPulang: json['sudah_absen_pulang'] ?? false,
statusMasuk: json['status_masuk'],
statusPulang: json['status_pulang'],
jadwalJamMasuk: json['jadwal_jam_masuk'],
jadwalJamPulang: json['jadwal_jam_pulang'],
kantorNama: json['kantor_nama']?.toString(),
kantorLat: (json['kantor_lat'] is num) ? (json['kantor_lat'] as num).toDouble() : null,
kantorLon: (json['kantor_lon'] is num) ? (json['kantor_lon'] as num).toDouble() : null,
kantorRadius: (json['kantor_radius'] is num) ? (json['kantor_radius'] as num).toDouble() : null,
);
}
}
class PresensiHistoryModel {
final int? idPresensi;
final String tanggal;
final String? tanggalRaw;
final String? jamMasuk;
final String? jamPulang;
final String totalJam;
final String? shift;
final String? statusMasuk;
final String? statusPulang;
final String? waktuTerlambat;
final String? keteranganLuarRadius;
final bool verifikasiWajah;
final int? statusValidasi;
final String? alasanPenolakan;
PresensiHistoryModel({
this.idPresensi,
required this.tanggal,
this.tanggalRaw,
this.jamMasuk,
this.jamPulang,
required this.totalJam,
this.shift,
this.statusMasuk,
this.statusPulang,
this.waktuTerlambat,
this.keteranganLuarRadius,
this.verifikasiWajah = false,
this.statusValidasi,
this.alasanPenolakan,
});
factory PresensiHistoryModel.fromJson(Map<String, dynamic> json) {
String hitungTotalJam = '-';
if (json['jam_masuk'] != null && json['jam_pulang'] != null) {
try {
final masuk = DateTime.parse("2000-01-01 ${json['jam_masuk']}");
final pulang = DateTime.parse("2000-01-01 ${json['jam_pulang']}");
final selisih = pulang.difference(masuk);
hitungTotalJam = '${selisih.inHours}j ${selisih.inMinutes.remainder(60)}m';
} catch (e) {
}
}
return PresensiHistoryModel(
idPresensi: json['id_presensi'],
tanggal: json['tanggal'] ?? '',
tanggalRaw: json['tanggal_raw'],
jamMasuk: json['jam_masuk'],
jamPulang: json['jam_pulang'],
totalJam: json['total_jam'] ?? hitungTotalJam,
shift: json['shift'],
statusMasuk: json['status_masuk'],
statusPulang: json['status_pulang'],
waktuTerlambat: json['waktu_terlambat'],
keteranganLuarRadius: json['keterangan_luar_radius'],
verifikasiWajah: json['verifikasi_wajah'] ?? false,
statusValidasi: json['status_validasi'],
alasanPenolakan: json['alasan_penolakan'],
);
}
}