CCCPaste

get question from bank

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