public function getQuestions(Request $request)
{
$messages = [
'*.bank_id.required' => 'Please Select Question Bank.',
];
$data = $request->validate([
'*.bank_id' => 'required',
'*.format' => 'nullable',
'*.topic' => 'nullable',
], $messages);
$quizzes = collect();
foreach ($data as $item) {
$bank = QuestionBank::with([
'quizzes' => function ($q) use ($item) {
$q->select([
'quizzes.id','quizzes.title','quizzes.difficulty',
'quizzes.type','quizzes.question_type',
'quizzes.parent_id','quizables.quizable_id'
])
->with(['quizzes' => function ($subQ) {
$subQ->select([
'quizzes.id','quizzes.title','quizzes.difficulty',
'quizzes.type','quizzes.question_type','quizzes.parent_id'
]);
}])
->when($item['format'], fn($query) => $query->where('quizzes.type', $item['format']))
->when($item['topic'], fn($query) => $query->where('quizzes.question_type', $item['topic']));
}
])->find($item['bank_id']);
if ($bank) {
$quizzes = $quizzes->merge($bank->quizzes);
}
}
return response()->json($quizzes);
}