public function index($exam_id)
    {
        $exam = Exam::with('subject')->findOrFail($exam_id);
        $exam_questions = ExamQuestion::with(['question' => function ($query) {
            $query->orderByRaw("case\n          when questionbank_questions.type = 'true_false' then 'a'\n          when questionbank_questions.type = 'single_choice' then 'b'\n          when questionbank_questions.type = 'multiple_choice' then 'c'\n          when questionbank_questions.type = 'essay' then 'd'\n        end ASC");
        }])->select('era.id as has_been_corrected', 'exam_questions.exam_id', 'exam_questions.question_id', 'exam_questions.devide_grade')->has('question')->join('exams as e', 'e.id', '=', 'exam_questions.exam_id')->leftJoin('exam_results as er', 'er.exam_id', '=', 'e.id')->leftJoin('exam_result_answers as era', 'era.exam_result_id', '=', 'er.id')->where('exam_questions.exam_id', $exam->id)->groupBy('exam_questions.id')->get();
        $list_questions = Question::select('questionbank_questions.*')->selectRaw('CONCAT((
			CASE questionbank_questions.type
			WHEN "essay" THEN "مقالي"
			WHEN "true_false" THEN "صح أو خطأ"
			WHEN "single_choice" THEN "إختياري إجابة واحدة"
			WHEN "multiple_choice" THEN "إختياري متعدد"
			WHEN "essay" THEN "مقالي"
			END), " --- ", questionbank_questions.question) as full_question')->join('subject_lessons as sl', 'sl.id', '=', 'questionbank_questions.lesson_id')->join('subject_subjects as ss', function ($join) use($exam) {
            $join->on('ss.id', '=', 'sl.subject_subject_id')->where('ss.id', '=', $exam->subject_id);
        })->groupBy('questionbank_questions.id')->whereNotIn('questionbank_questions.id', $exam_questions->pluck('question_id'))->pluck('full_question', 'id')->toArray();
        return view('exams::questions.index', compact('exam_questions', 'list_questions', 'exam'));
    }
 public function questionlistsub($id)
 {
     $questions = Question::select('question', 'questionbank_questions.type', 'difficulty', 'level', 'questionbank_questions.id', 'subject_lessons.name as lesson_name')->join('subject_lessons', 'subject_lessons.id', '=', 'questionbank_questions.lesson_id')->join('subject_subjects', 'subject_subjects.id', '=', 'subject_lessons.subject_subject_id')->where('subject_subjects.id', $id)->paginate(20);
     return view('questionbank::questionlistsub', compact('questions'));
 }
    public function questions($activity_id = 0)
    {
        # code...
        $exam = Exam::findOrFail($activity_id);
        $subject_id = $exam->subject_id;
        $exam_questions = ExamQuestion::with('question')->has('question')->where('exam_id', $exam->id)->get();
        $list_questions = Question::select('questionbank_questions.*')->selectRaw('CONCAT((
			CASE questionbank_questions.type
			WHEN "essay" THEN "مقالي"
			WHEN "true_false" THEN "صح أو خطأ"
			WHEN "single_choice" THEN "إختياري إجابة واحدة"
			WHEN "multiple_choice" THEN "إختياري متعدد"
			WHEN "essay" THEN "مقالي"
			END), " --- ", questionbank_questions.question) as full_question')->join('subject_lessons as sl', 'sl.id', '=', 'questionbank_questions.lesson_id')->join('subject_subjects as ss', function ($join) use($exam) {
            $join->on('ss.id', '=', 'sl.subject_subject_id')->where('ss.id', '=', $exam->subject_id);
        })->groupBy('questionbank_questions.id')->whereNotIn('questionbank_questions.id', $exam_questions->pluck('question_id'))->pluck('full_question', 'id')->toArray();
        return view('teachers::profile.questions.index', compact('exam_questions', 'list_questions', 'exam', 'subject_id', 'activity_id'));
    }
 /**
 * @desc search the question using one word or more
 * @parm $subjectid int = subject id
 * @parm $questions array = questions list and ditails
 * @return list of q view
 **/
 public function search(Request $req, $subjectid)
 {
     $search = $req->input('search');
     $questions = Question::select('question', 'questionbank_questions.type', 'difficulty', 'level', 'questionbank_questions.id', 'subject_lessons.name as lesson_name')->join('subject_lessons', 'subject_lessons.id', '=', 'questionbank_questions.lesson_id')->join('subject_subjects', 'subject_subjects.id', '=', 'subject_lessons.subject_subject_id')->where('subject_subjects.id', $subjectid)->where('question', 'like', '%' . $search . '%')->paginate(20);
     return view('questionbank::subject.question', compact('questions', 'subjectid'));
 }