MIF_E31222846/lib/models/quiz_attempt_model.dart

152 lines
4.4 KiB
Dart

import 'dart:convert';
QuizAttemptModel quizAttemptModelFromJson(String str) =>
QuizAttemptModel.fromJson(json.decode(str));
String quizAttemptModelToJson(QuizAttemptModel data) =>
json.encode(data.toJson());
class QuizAttemptModel {
bool status;
String message;
Data data;
QuizAttemptModel({
required this.status,
required this.message,
required this.data,
});
factory QuizAttemptModel.fromJson(Map<String, dynamic> json) =>
QuizAttemptModel(
status: json["status"],
message: json["message"],
data: Data.fromJson(json["data"]),
);
Map<String, dynamic> toJson() => {
"status": status,
"message": message,
"data": data.toJson(),
};
}
class Data {
int id;
int quizId;
String nisn;
String skor;
int levelAkhir;
int jumlahSoalDijawab;
int fase;
String benar;
DateTime? waktuMulai;
DateTime? waktuSelesai;
DateTime createdAt;
DateTime updatedAt;
String jumlahSoal;
String jawabanBenar;
String jawabanSalah;
Data({
required this.id,
required this.quizId,
required this.nisn,
required this.skor,
required this.levelAkhir,
required this.jumlahSoalDijawab,
required this.fase,
required this.benar,
this.waktuMulai,
this.waktuSelesai,
required this.createdAt,
required this.updatedAt,
required this.jumlahSoal,
required this.jawabanBenar,
required this.jawabanSalah,
});
factory Data.fromJson(Map<String, dynamic> json) => Data(
id: json["id"] is int
? json["id"]
: int.tryParse(json["id"].toString()) ?? 0,
quizId: json["quiz_id"] is int
? json["quiz_id"]
: int.tryParse(json["quiz_id"].toString()) ?? 0,
nisn: json["nisn"]?.toString() ?? "",
skor: json["skor"]?.toString() ?? "0",
levelAkhir: json["level_akhir"] is int
? json["level_akhir"]
: int.tryParse(json["level_akhir"].toString()) ?? 1,
jumlahSoalDijawab: json["jumlah_soal_dijawab"] is int
? json["jumlah_soal_dijawab"]
: int.tryParse(json["jumlah_soal_dijawab"].toString()) ?? 0,
fase: json["fase"] is int
? json["fase"]
: int.tryParse(json["fase"].toString()) ?? 1,
benar: json["benar"]?.toString() ?? "{}",
waktuMulai: json["waktu_mulai"] != null
? DateTime.tryParse(json["waktu_mulai"].toString())
: null,
waktuSelesai: json["waktu_selesai"] != null
? DateTime.tryParse(json["waktu_selesai"].toString())
: null,
createdAt: json["created_at"] != null
? DateTime.tryParse(json["created_at"].toString()) ?? DateTime.now()
: DateTime.now(),
updatedAt: json["updated_at"] != null
? DateTime.tryParse(json["updated_at"].toString()) ?? DateTime.now()
: DateTime.now(),
jumlahSoal: json["jumlah_soal"]?.toString() ?? "0",
jawabanBenar: json["jawaban_benar"]?.toString() ?? "0",
jawabanSalah: json["jawaban_salah"]?.toString() ?? "0",
);
Map<String, dynamic> toJson() => {
"id": id,
"quiz_id": quizId,
"nisn": nisn,
"skor": skor,
"level_akhir": levelAkhir,
"jumlah_soal_dijawab": jumlahSoalDijawab,
"fase": fase,
"benar": benar,
"waktu_mulai": waktuMulai?.toIso8601String(),
"waktu_selesai": waktuSelesai?.toIso8601String(),
"created_at": createdAt.toIso8601String(),
"updated_at": updatedAt.toIso8601String(),
"jumlah_soal": jumlahSoal,
"jawaban_benar": jawabanBenar,
"jawaban_salah": jawabanSalah,
};
// Method untuk menghitung skor berdasarkan jawaban benar dan jumlah soal
String get calculatedSkor {
try {
int benar = int.tryParse(jawabanBenar) ?? 0;
int total = int.tryParse(jumlahSoal) ?? 0;
if (total > 0) {
return "$benar/$total";
}
return "0/0";
} catch (e) {
return "0/0";
}
}
// Method untuk mendapatkan jawaban benar sebagai integer
int get jawabanBenarInt {
return int.tryParse(jawabanBenar) ?? 0;
}
// Method untuk mendapatkan jawaban salah sebagai integer
int get jawabanSalahInt {
return int.tryParse(jawabanSalah) ?? 0;
}
// Method untuk mendapatkan jumlah soal sebagai integer
int get jumlahSoalInt {
return int.tryParse(jumlahSoal) ?? 0;
}
}