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 print_exam($exam_id, $with_answer = false) { $exam = Exam::with('subject')->findOrFail($exam_id); /*\DB::listen(function ($query) { var_dump($query->sql); // $query->bindings // $query->time });*/ $questions = ExamQuestion::with(['question', 'question.choices', 'question.lesson'])->where('exam_id', $exam_id)->select("exam_questions.*")->join("questionbank_questions AS qbq", "qbq.id", '=', "exam_questions.question_id")->orderByRaw(\DB::raw("FIELD(qbq.type, 'true_false' , 'single_choice' , 'multiple_choice' , 'essay ' )"))->get(); $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); $pdf->SetFont('traditionalarabic', '', 18, '', 'false'); $pdf->setRTL('enable', true); $pdf->SetPrintHeader(false); $pdf->SetPrintFooter(true); $pdf->SetFooterMargin(PDF_MARGIN_FOOTER); $pdf->setFooterFont(array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); $pdf->startPageGroup(); $pdf->AddPage(); if ($with_answer) { if (user()->can('printwithanswer.exams.exams')) { $pdf->writeHTML(view('exams::exams.print', compact('exam', 'questions'))->render()); } } else { if (user()->can('printwithoutanswer.exams.exams')) { $pdf->writeHTML(view('exams::exams.printwithoutanswer', compact('exam', 'questions'))->render()); } } $filename = $exam->id . '.pdf'; ob_clean(); $pdf->output($filename, 'D'); return redirect()->back()->with('success', trans('exams::exams.download_success')); }
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')); }