import '../core/utils/safe_convert.dart'; import 'student.dart'; class ResultLine { final NamedRecord? subject; final double maxMarks; final double passMarks; final double obtainedMarks; final double percentage; final String? grade; final String status; const ResultLine({ this.subject, required this.maxMarks, required this.passMarks, required this.obtainedMarks, required this.percentage, this.grade, required this.status, }); factory ResultLine.fromJson(Map json) { return ResultLine( subject: NamedRecord.fromNullableJson(json['subject']), maxMarks: SafeConvert.toSafeDouble(json['max_marks']), passMarks: SafeConvert.toSafeDouble(json['pass_marks']), obtainedMarks: SafeConvert.toSafeDouble(json['obtained_marks']), percentage: SafeConvert.toSafeDouble(json['percentage']), grade: SafeConvert.toNullableString(json['grade']), status: SafeConvert.toSafeString(json['status'], 'pass'), ); } } class ExamResult { final int id; final NamedRecord? exam; final double totalMaxMarks; final double totalObtainedMarks; final double percentage; final String? grade; final String status; final String? publishedDate; final List lines; const ExamResult({ required this.id, this.exam, required this.totalMaxMarks, required this.totalObtainedMarks, required this.percentage, this.grade, required this.status, this.publishedDate, required this.lines, }); factory ExamResult.fromJson(Map json) { return ExamResult( id: SafeConvert.toSafeInt(json['id']), exam: NamedRecord.fromNullableJson(json['exam']), totalMaxMarks: SafeConvert.toSafeDouble(json['total_max_marks']), totalObtainedMarks: SafeConvert.toSafeDouble(json['total_obtained_marks']), percentage: SafeConvert.toSafeDouble(json['percentage']), grade: SafeConvert.toNullableString(json['grade']), status: SafeConvert.toSafeString(json['status'], 'pass'), publishedDate: SafeConvert.toNullableString(json['published_date']), lines: SafeConvert.toSafeList( json['lines'], (item) => ResultLine.fromJson(SafeConvert.toNullableMap(item) ?? {}), ), ); } }