76 lines
2.2 KiB
Dart

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