76 lines
2.2 KiB
Dart
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) ?? {}),
|
|
),
|
|
);
|
|
}
|
|
}
|