import 'package:json_annotation/json_annotation.dart'; 
  
part 'report_for_subject_teacher_model.g.dart';


@JsonSerializable(checked: true)
  class ReportForSubjectTeacherModel extends Object {

  @JsonKey(name: 'BaseInfo')
  BaseInfo baseInfo;

  @JsonKey(name: 'GradeLevel')
  GradeLevel gradeLevel;

  @JsonKey(name: 'AllLevel')
  AllLevel allLevel;

  @JsonKey(name: 'StudentRankInfoTopList')
  List<StudentRankInfoTopList> studentRankInfoTopList;    // 大幅进步

  @JsonKey(name: 'StudentRankInfoFallList')
  List<StudentRankInfoFallList> studentRankInfoFallList; // 大幅退步

  @JsonKey(name: 'StudentResultInfoTopList')
  List<StudentResultInfoTopList> studentResultInfoTopList; // 单个学生

  @JsonKey(name: 'StudentResultInfoFallList')
  List<StudentResultInfoFallList> studentResultInfoFallList;

  @JsonKey(name: 'QuestionList')
  List<QuestionList> questionList;

  @JsonKey(name: 'KnowledgeAnalysisList')
  List<dynamic> knowledgeAnalysisList;

  @JsonKey(name: 'MethodAnalysisList')
  List<dynamic> methodAnalysisList;

  @JsonKey(name: 'StudentDetailList')
  List<StudentDetailList> studentDetailList;

  @JsonKey(name: 'QuestionTagsAnalyseList')
  List<dynamic> questionTagsAnalyseList;

  ReportForSubjectTeacherModel(this.baseInfo,this.gradeLevel,this.allLevel,this.studentRankInfoTopList,this.studentRankInfoFallList,this.studentResultInfoTopList,this.studentResultInfoFallList,this.questionList,this.knowledgeAnalysisList,this.methodAnalysisList,this.studentDetailList,this.questionTagsAnalyseList,);

  factory ReportForSubjectTeacherModel.fromJson(Map<String, dynamic> srcJson) => _$ReportForSubjectTeacherModelFromJson(srcJson);

  Map<String, dynamic> toJson() => _$ReportForSubjectTeacherModelToJson(this);

}

  
@JsonSerializable(checked: true)
  class BaseInfo extends Object {

  @JsonKey(name: 'ExamName')
  String examName;

  @JsonKey(name: 'ExamTypeName')
  String examTypeName;

  @JsonKey(name: 'Grade')
  String grade;

  @JsonKey(name: 'Subjects')
  String subjects;

  @JsonKey(name: 'ExamTime')
  String examTime;

  @JsonKey(name: 'TotalScore')
  double totalScore;

  @JsonKey(name: 'AvgScore')
  double avgScore;

  @JsonKey(name: 'MaxScore')
  double maxScore;

  @JsonKey(name: 'GoodRate')
  String goodRate;

  @JsonKey(name: 'GoodRateDesc')
  String goodRateDesc;

  @JsonKey(name: 'PassRate')
  String passRate;

  @JsonKey(name: 'PassRateDesc')
  String passRateDesc;

  BaseInfo(this.examName,this.examTypeName,this.grade,this.subjects,this.examTime,this.totalScore,this.avgScore,this.maxScore,this.goodRate,this.goodRateDesc,this.passRate,this.passRateDesc,);

  factory BaseInfo.fromJson(Map<String, dynamic> srcJson) => _$BaseInfoFromJson(srcJson);

  Map<String, dynamic> toJson() => _$BaseInfoToJson(this);

}

  
@JsonSerializable(checked: true)
  class GradeLevel extends Object {

  @JsonKey(name: 'JoinClassCount')
  int joinClassCount;

  @JsonKey(name: 'Ranking')
  int ranking;

  GradeLevel(this.joinClassCount,this.ranking,);

  factory GradeLevel.fromJson(Map<String, dynamic> srcJson) => _$GradeLevelFromJson(srcJson);

  Map<String, dynamic> toJson() => _$GradeLevelToJson(this);

}

  
@JsonSerializable(checked: true)
  class AllLevel extends Object {

  @JsonKey(name: 'JoinClassCount')
  int joinClassCount;

  @JsonKey(name: 'Ranking')
  int ranking;

  AllLevel(this.joinClassCount,this.ranking,);

  factory AllLevel.fromJson(Map<String, dynamic> srcJson) => _$AllLevelFromJson(srcJson);

  Map<String, dynamic> toJson() => _$AllLevelToJson(this);

}

  
@JsonSerializable(checked: true)
  class StudentRankInfoTopList extends Object {

  @JsonKey(name: 'ExamNo')
  String examNo;

  @JsonKey(name: 'StudentName')
  String studentName;

  @JsonKey(name: 'Ranking')
  int ranking;

  @JsonKey(name: 'RankChange')
  int rankChange;

  StudentRankInfoTopList(this.examNo,this.studentName,this.ranking,this.rankChange,);

  factory StudentRankInfoTopList.fromJson(Map<String, dynamic> srcJson) => _$StudentRankInfoTopListFromJson(srcJson);

  Map<String, dynamic> toJson() => _$StudentRankInfoTopListToJson(this);

}

  
@JsonSerializable(checked: true)
  class StudentRankInfoFallList extends Object {

  @JsonKey(name: 'ExamNo')
  String examNo;

  @JsonKey(name: 'StudentName')
  String studentName;

  @JsonKey(name: 'Ranking')
  int ranking;

  @JsonKey(name: 'RankChange')
  int rankChange;

  StudentRankInfoFallList(this.examNo,this.studentName,this.ranking,this.rankChange,);

  factory StudentRankInfoFallList.fromJson(Map<String, dynamic> srcJson) => _$StudentRankInfoFallListFromJson(srcJson);

  Map<String, dynamic> toJson() => _$StudentRankInfoFallListToJson(this);

}

  
@JsonSerializable(checked: true)
  class StudentResultInfoTopList extends Object {

  @JsonKey(name: 'StudentName')
  String studentName;

  @JsonKey(name: 'Result')
  String result;

  StudentResultInfoTopList(this.studentName,this.result,);

  factory StudentResultInfoTopList.fromJson(Map<String, dynamic> srcJson) => _$StudentResultInfoTopListFromJson(srcJson);

  Map<String, dynamic> toJson() => _$StudentResultInfoTopListToJson(this);

}

  
@JsonSerializable(checked: true)
  class StudentResultInfoFallList extends Object {

  @JsonKey(name: 'StudentName')
  String studentName;

  @JsonKey(name: 'Result')
  String result;

  StudentResultInfoFallList(this.studentName,this.result,);

  factory StudentResultInfoFallList.fromJson(Map<String, dynamic> srcJson) => _$StudentResultInfoFallListFromJson(srcJson);

  Map<String, dynamic> toJson() => _$StudentResultInfoFallListToJson(this);

}

  
@JsonSerializable(checked: true)
  class QuestionList extends Object {

  @JsonKey(name: 'QuestionId')
  int questionId;

  @JsonKey(name: 'QuestionNum')
  String questionNum;

  @JsonKey(name: 'KownledgeIds')
  String kownledgeIds;

  @JsonKey(name: 'KownledgeName')
  String kownledgeName;

  @JsonKey(name: 'MethodIds')
  String methodIds;

  @JsonKey(name: 'MethodName')
  String methodName;

  @JsonKey(name: 'CorrectRate')
  String correctRate;

  @JsonKey(name: 'CorrectAnswerDetailList')
  List<AnswerDetailModel> correctAnswerDetailList;

  @JsonKey(name: 'AnswerDetailList')
  List<AnswerDetailModel> answerDetailList;

  QuestionList(this.questionId,this.questionNum,this.kownledgeIds,this.kownledgeName,this.methodIds,this.methodName,this.correctRate,this.correctAnswerDetailList,this.answerDetailList,);

  factory QuestionList.fromJson(Map<String, dynamic> srcJson) => _$QuestionListFromJson(srcJson);

  Map<String, dynamic> toJson() => _$QuestionListToJson(this);

}




@JsonSerializable(checked: true)
  class AnswerDetailModel extends Object {

  @JsonKey(name: 'Option')
  String option;

  @JsonKey(name: 'CheckCount')
  int checkCount;

  AnswerDetailModel(this.checkCount,this.option,);

  factory AnswerDetailModel.fromJson(Map<String, dynamic> srcJson) => _$AnswerDetailModelFromJson(srcJson);

  Map<String, dynamic> toJson() => _$AnswerDetailModelToJson(this);

}



  
@JsonSerializable(checked: true)
  class StudentDetailList extends Object {

  @JsonKey(name: 'UserId')
  int userId;

  @JsonKey(name: 'StudentExamNum')
  String studentExamNum;

  @JsonKey(name: 'ExamSubjectSchoolId')
  int examSubjectSchoolId;

  @JsonKey(name: 'ExamSubjectId')
  int examSubjectId;

  @JsonKey(name: 'SubjectId')
  int subjectId;

  @JsonKey(name: 'ExamId')
  int examId;

  @JsonKey(name: 'ExamInfoId')
  int examInfoId;

  @JsonKey(name: 'StudentName')
  String studentName;

  @JsonKey(name: 'Score')
  String score;

  @JsonKey(name: 'Ranking')
  int ranking;

  @JsonKey(name: 'Step')
  String step;

  StudentDetailList(this.userId,this.studentExamNum,this.examSubjectSchoolId,this.examSubjectId,this.subjectId,this.examId,this.examInfoId,this.studentName,this.score,this.ranking,this.step,);

  factory StudentDetailList.fromJson(Map<String, dynamic> srcJson) => _$StudentDetailListFromJson(srcJson);

  Map<String, dynamic> toJson() => _$StudentDetailListToJson(this);

}

  
