Grading Function
This commit is contained in:
parent
5f232a645c
commit
fb1f54d8b9
@ -64,4 +64,36 @@ class ExamMemberRank extends Model
|
||||
$builder->where('member_rank_id', '<>', null);
|
||||
});
|
||||
}
|
||||
|
||||
public function grade()
|
||||
{
|
||||
$this->load([
|
||||
'exam_questions' => function ($query) {
|
||||
$query->groupBy('id');
|
||||
},
|
||||
]);
|
||||
$returnVal = [];
|
||||
$returnGrade = 0;
|
||||
foreach ($this->exam_questions as $question) {
|
||||
$answers = $question->exam_answers;
|
||||
$returnAnswers = [];
|
||||
$returnAnswerGrade = true;
|
||||
foreach ($answers as $answer) {
|
||||
$given = $this->exam_answers->contains($answer->id);
|
||||
array_push($returnAnswers, [
|
||||
'answer' => $answer,
|
||||
'status' => $given,
|
||||
'grade' => $given == $answer->is_correct,
|
||||
]);
|
||||
$returnAnswerGrade = $returnAnswerGrade && $given == $answer->is_correct;
|
||||
}
|
||||
array_push($returnVal, [
|
||||
'question' => $question,
|
||||
'answers' => $returnAnswers,
|
||||
'grade' => $returnAnswerGrade,
|
||||
]);
|
||||
$returnGrade = $returnAnswerGrade ? $returnGrade + 1 : $returnGrade;
|
||||
}
|
||||
return ['exam' => $returnVal, 'grade' => $returnGrade];
|
||||
}
|
||||
}
|
||||
|
||||
@ -64,4 +64,36 @@ class ExamTyperating extends Model
|
||||
$builder->where('typerating_id', '<>', null);
|
||||
});
|
||||
}
|
||||
|
||||
public function grade()
|
||||
{
|
||||
$this->load([
|
||||
'exam_questions' => function ($query) {
|
||||
$query->groupBy('id');
|
||||
},
|
||||
]);
|
||||
$returnVal = [];
|
||||
$returnGrade = 0;
|
||||
foreach ($this->exam_questions as $question) {
|
||||
$answers = $question->exam_answers;
|
||||
$returnAnswers = [];
|
||||
$returnAnswerGrade = true;
|
||||
foreach ($answers as $answer) {
|
||||
$given = $this->exam_answers->contains($answer->id);
|
||||
array_push($returnAnswers, [
|
||||
'answer' => $answer,
|
||||
'status' => $given,
|
||||
'grade' => $given == $answer->is_correct,
|
||||
]);
|
||||
$returnAnswerGrade = $returnAnswerGrade && $given == $answer->is_correct;
|
||||
}
|
||||
array_push($returnVal, [
|
||||
'question' => $question,
|
||||
'answers' => $returnAnswers,
|
||||
'grade' => $returnAnswerGrade,
|
||||
]);
|
||||
$returnGrade = $returnAnswerGrade ? $returnGrade + 1 : $returnGrade;
|
||||
}
|
||||
return ['exam' => $returnVal, 'grade' => $returnGrade];
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user