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);
|
$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);
|
$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