middleware('auth'); } /** * Show the application dashboard. * * @return \Illuminate\Contracts\Support\Renderable */ public function index() { return view('admin.dashboard.index'); } public function leaderboard() { $user_id = User::where('role_id', 2)->get(); $data = []; foreach ($user_id as $user) { $wondering = WonderingScore::where(["user_id" => $user->id])->sum("score"); $exploring = UserScore::where("user_id", $user->id)->sum("score"); $explainKonteks = ExplainingScore::where("user_id", $user->id)->sum("konteks_penjelasan"); $explainBenar = ExplainingScore::where("user_id", $user->id)->sum("kebenaran"); $explainKeruntutan = ExplainingScore::where("user_id", $user->id)->sum("keruntutan"); $final_score = $wondering + $exploring + $explainKonteks + $explainBenar + $explainKeruntutan; $current_badge = BadgeSetting::where("min", "<=", $final_score)->where("max", ">=", $final_score)->first(); $data[] = [ 'user' => $user, 'final_score' => $final_score, 'current_badge' => $current_badge, ]; } $data = collect($data)->sortByDesc('final_score')->values()->all(); if (Auth::user()->role_id == 1) { return view('admin.dashboard.leaderboard', compact('data')); } else if (Auth::user()->role_id == 2) { return view('student_courses.leaderboard_student', compact('data')); } } public function report($user_id = null) { $users = User::all(); if (!empty($user_id)) { $user_score = UserScore::where(["user_id" => $user_id])->get(); $take = UserScore::where("user_id", $user_id)->pluck("question_id")->toArray(); $code_test_score = UserScore::where(["user_id" => $user_id])->whereNotNull("question_id")->get(); $wondering = WonderingScore::where(["user_id" => $user_id])->sum("score"); $exploring = UserScore::where("user_id", $user_id)->sum("score"); $explainKonteks = ExplainingScore::where("user_id", $user_id)->sum("konteks_penjelasan"); $explainBenar = ExplainingScore::where("user_id", $user_id)->sum("kebenaran"); $explainKeruntutan = ExplainingScore::where("user_id", $user_id)->sum("keruntutan"); $final_score = $wondering + $exploring + $explainKonteks + $explainBenar + $explainKeruntutan; $current_badge = BadgeSetting::where("min", "<=", $final_score)->where("max", ">=", $final_score)->first(); return view("admin.dashboard.report", [ "score" => $user_score, "current_badge" => $current_badge, "percentage" => UserScore::getPercentage($user_id), "finish_code_tests" => $take, "user_id" => $user_id, "users" => $users, "code_score" => $code_test_score, "final_score" => $final_score ]); } return view('admin.dashboard.report', ["user_id" => $user_id, 'users' => $users]); } public function penilaian($user_id, $content_id) { $user = User::firstwhere('id', $user_id); $content = Content::where('id', $content_id)->first(); $read = WonderingScore::where('user_id', $user_id)->where('content_id', $content_id)->first(); $coding = UserScore::where('user_id', $user_id)->where('content_id', $content_id)->first(); $question = Question::where('content_id', $content_id)->first(); $question_id = Question::where('content_id', $content_id)->pluck('id'); $essay = EssayQuestion::whereIn('question_id', $question_id)->pluck('id'); $answer = UserAnswer::whereIn('essay_question_id', $essay)->where('user_id', $user_id)->get(); $explain_score = ExplainingScore::where('content_id', $content_id)->where('question_id', $question_id)->where('user_id', $user_id)->get(); $isAccepted = ExplainingScore::where('content_id', $content_id) ->where('question_id', $question_id) ->where('user_id', $user_id) ->get() ->pluck('is_accepted'); if ($explain_score->count() > 0) { $total = $explain_score->sum(function ($explain_score) { return $explain_score->keruntutan + $explain_score->kebenaran + $explain_score->konteks_penjelasan; }); foreach ($explain_score as $index => $item) { // $isAcceptedKonteks = $explain_score[0]->is_accepted; // $isAcceptedRuntut = $explain_score[1]->is_accepted; // $isAcceptedKebenaran = $explain_score[2]->is_accepted; $convertKonteks = $explain_score[0]->konteks_penjelasan; $convertRuntut = $explain_score[1]->keruntutan; $convertKebenaran = $explain_score[2]->kebenaran; $id_konteks = $explain_score[0]->id; $id_runtut = $explain_score[1]->id; $id_benar = $explain_score[2]->id; $konteks = $this->reverseConvert($convertKonteks); $benar = $this->reverseConvert($convertKebenaran); $runtut = $this->reverseConvert($convertRuntut); }; // dd([$konteks, $benar, $runtut]); return view('admin.dashboard.penilaian', compact('user', 'read', 'coding', 'essay', 'answer', 'content', 'question', 'explain_score', 'total', 'konteks', 'runtut', 'benar', 'id_benar', 'id_runtut', 'id_konteks', 'convertKonteks', 'convertRuntut', 'convertKebenaran', 'isAccepted')); } else { return view('admin.dashboard.penilaian', compact('user', 'read', 'coding', 'essay', 'answer', 'content', 'question', 'explain_score')); } } public function reverseConvert($value) { switch ($value) { case 3: return 1; case 5: return 2; case 10: return 3; case 15: return 4; case 20: return 5; default: return $value; } } public function addPenilaian(Request $request) { try { $check_explain = ExplainingScore::where('content_id', $request->content_id)->where('question_id', $request->question_id)->where('user_id', $request->user_id); if ($check_explain->count() == 0) { $total_score = TotalScore::create([ 'content_id' => $request->content_id, 'user_id' => $request->user_id, 'question_id' => $request->question_id, 'score' => $request->tot_score, 'wondering_score_id' => $request->wondering_id, 'user_score_id' => $request->exploring_id ]); $explainKonteks = ExplainingScore::create([ 'total_score_id' => $total_score->id, 'content_id' => $request->content_id, 'user_id' => $request->user_id, 'question_id' => $request->question_id, 'konteks_penjelasan' => $request->ikonteks, 'essay_question_id' => $request->essay_question_konteks, 'user_answer_id' => $request->user_answer_konteks ]); $explainRuntut = ExplainingScore::create([ 'total_score_id' => $total_score->id, 'content_id' => $request->content_id, 'user_id' => $request->user_id, 'question_id' => $request->question_id, 'keruntutan' => $request->iruntut, 'essay_question_id' => $request->essay_question_runtut, 'user_answer_id' => $request->user_answer_runtut ]); $explainBenar = ExplainingScore::create([ 'total_score_id' => $total_score->id, 'content_id' => $request->content_id, 'user_id' => $request->user_id, 'question_id' => $request->question_id, 'kebenaran' => $request->ibenar, 'essay_question_id' => $request->essay_question_kebenaran, 'user_answer_id' => $request->user_answer_kebenaran ]); } else { $check_total = $check_explain->first()->total->id; $total_score = TotalScore::findOrFail($check_total); $total_score->score = $request->tot_score; $total_score->save(); $konteks = ExplainingScore::firstwhere('id', $request->id_konteks); $konteks->konteks_penjelasan = $request->ikonteks; $konteks->is_accepted = ($request->acc == 'true'); $konteks->save(); $runtut = ExplainingScore::firstwhere('id', $request->id_runtut); $runtut->keruntutan = $request->iruntut; $runtut->is_accepted = ($request->acc == 'true'); $runtut->save(); $benar = ExplainingScore::firstwhere('id', $request->id_benar); $benar->kebenaran = $request->ibenar; $benar->is_accepted = ($request->acc == 'true'); $benar->save(); } return response()->json([ 'status' => '200', 'message' => 'Success add user score' ], 200); } catch (Exception $err) { return response()->json([ 'status' => '500', 'message' => 'Error add score', ], 500); } } }