middleware('auth'); } public function index() { if (Auth::check()) { $user_id = Auth::user()->id; $student_courses = Course::select(["courses.id", "courses.course_name", "courses.description"]) ->join("student_courses", "courses.id", "=", "student_courses.course_id") ->where("student_courses.user_id", $user_id)->get(); return view("student_courses.index", ["studentCourses" => $student_courses]); } } public function detail($course_id) { $course = Course::find($course_id); $total_score = UserScore::where("user_id", Auth::id())->sum("score"); $current_badge = BadgeSetting::all(); $fullbadge = BadgeSetting::all(); $getBadge = "(SELECT badge_settings.name FROM badge_settings WHERE badge_settings.min <= 'total_score' and badge_settings.max >= 'total_score' LIMIT 1)"; $getBadgeFile = "(SELECT badge_settings.file FROM badge_settings WHERE badge_settings.min <= 'total_score' and badge_settings.max >= 'total_score' LIMIT 1)"; $leader_board = UserScore::select(DB::raw("user_id, SUM(score) as total_score, $getBadge as badge_name, $getBadgeFile as file"))->groupBy("user_id")->orderBy("total_score", "DESC")->get(); $question = Question::where("is_essay", "1")->pluck("id"); $lboard = []; foreach ($leader_board as $key => $lead) { $answeredQues = UserScore::where("user_id", $lead->user_id)->whereIn("question_id", $question)->count(); $percentage = number_format((float)$answeredQues / $question->count() * 100, 1, '.', ''); $badge = BadgeSetting::where("min", "<=", $lead->total_score)->where("max", ">=", $lead->total_score)->first(); $lboard[$key]['user'] = User::find($lead->user_id)->name; $lboard[$key]['total_score'] = $lead->total_score; $lboard[$key]['percentage'] = $percentage; $lboard[$key]['badge_name'] = $badge->name; $lboard[$key]['file'] = $badge->file; $lboard[$key]['answered_question'] = $answeredQues; $lboard[$key]['code_questions'] = $question->count(); } return view("student_courses.detail", [ "course" => $course, "total_score" => $total_score, "current_badge" => $current_badge, "leader_board" => $lboard ]); } public function takeCourse(Request $request) { if (Auth::check()) { $user_id = Auth::user()->id; $check_course = StudentCourse::where(["user_id" => $user_id, "course_id" => $request["course_id"]]); if ($check_course->count() == 0) { $student_course = StudentCourse::create(["user_id" => $user_id, "course_id" => $request["course_id"]]); if ($student_course->save()) { session()->flash('msg_error1', 'You take it success'); return redirect()->back(); } } else { session()->flash('msg_error', 'You already take it'); return redirect()->back(); } } } public function my_course($course_id , $level_id, $content_id = null) { if($content_id == 1){ $check = WonderingScore::where('user_id', Auth::id())->where('content_id', $content_id); if($check->count()==0){ WonderingScore::create([ 'user_id'=>Auth::id(), 'content_id' => $content_id, 'score'=>10, ]); } } $course = Course::find($course_id); $level = Level::find($level_id); $contents = $content_id != null ? Content::find($content_id) : $level->lessons[0]->contents->first(); // $user_score = UserScore::where(["content_id" => $content_id == null ? $contents->id : $content_id, "user_id" => Auth::id()])->first(); $user_score = TotalScore::where(["content_id" => $content_id == null ? $contents->id : $content_id, "user_id" => Auth::id()])->first(); $wondering = WonderingScore::where(["user_id" => Auth::id()])->sum("score"); $exploring = UserScore::where("user_id", Auth::id())->sum("score"); $explainKonteks = ExplainingScore::where("user_id",Auth::id())->sum("konteks_penjelasan"); $explainBenar = ExplainingScore::where("user_id", Auth::id())->sum("kebenaran"); $explainKeruntutan = ExplainingScore::where("user_id", Auth::id())->sum("keruntutan"); $final_score = $wondering + $exploring + $explainKonteks + $explainBenar + $explainKeruntutan; $current_badge = BadgeSetting::where("min", "<=", $final_score)->where("max", ">=", $final_score)->first(); $active_lesson = $content_id != null ? Content::find($content_id)->lesson : $level->lessons->first(); $questions = Question::where(["is_essay" => "0", "content_id" => $content_id])->get(); $code_test = Question::where(["is_essay" => "1", "content_id" => $content_id])->get(); $take = UserScore::where("user_id", Auth::id())->pluck("question_id")->toArray(); $check_read = WonderingScore::where(["user_id" => Auth::id()])->where('content_id', $content_id)->count(); $is_last = 0; $check_explain = 0; if($content_id != null){ $last_lesson = Lesson::where('level_id', $level_id)->orderBy('posisition', 'Desc')->first(); $content = Content::where('lesson_id', $last_lesson->id)->pluck('id')->toArray(); $last_question = Question::whereIn('content_id', $content)->pluck('id')->toArray(); $last_content = max($content); $history_question = UserScore::where('user_id', Auth::id())->whereIn('content_id', $content)->pluck('question_id')->toArray(); $check_explain = Explains::where("user_id", Auth::id())->where('level_id', $level_id)->where('code', 0)->count(); $check_question = array_diff($last_question, $history_question); if(empty($check_question) && $last_content == $content_id){ $is_last = 1; } } // $tanya = Question::where('content_id', 7)->pluck('id')->toArray(); // $check = UserScore::where('user_id', Auth::user()->id)->where('content_id', 7)->orderBy('question_id', 'asc')->pluck('question_id')->toArray(); // $different = array_diff($tanya, $check); // if(empty($different)){ // $pass = 1; // } else{ // $pass =0; // } // dd([$tanya, $check, $pass]); //active_lesson untuk melihat course yang dibuka saat ini return view("student_courses.my_course", [ "level" => $level, "course" => $course, "content" => $contents, "score" => $user_score, "final_score" => $final_score, "active_lesson" => $active_lesson, "active_content" => $contents, "current_badge" => $current_badge, "questions" => $questions, "code_tests" => $code_test, "percentage" => UserScore::getPercentage(), "finish_code_tests" => $take, "is_last" => $is_last, "check_explain" => $check_explain, "check_read" => $check_read ]); } public function report() { $user_score = UserScore::where(["user_id" => Auth::id()])->get(); $take = UserScore::where("user_id", Auth::id())->pluck("question_id")->toArray(); $code_test_score = UserScore::where(["user_id" => Auth::id()])->whereNotNull("question_id")->get(); $wondering = WonderingScore::where(["user_id" => Auth::id()])->sum("score"); $exploring = UserScore::where("user_id", Auth::id())->sum("score"); $explainKonteks = ExplainingScore::where("user_id",Auth::id())->sum("konteks_penjelasan"); $explainBenar = ExplainingScore::where("user_id", Auth::id())->sum("kebenaran"); $explainKeruntutan = ExplainingScore::where("user_id", Auth::id())->sum("keruntutan"); $final_score = $wondering + $exploring + $explainKonteks + $explainBenar + $explainKeruntutan; $current_badge = BadgeSetting::where("min", "<=", $final_score)->where("max", ">=", $final_score)->first(); // $his_error = ExerciseCodeLog::where() // $his_success = ExerciseCodeLog::where return view("student_courses.report", [ "score" => $user_score, "final_score" => $final_score, "current_badge" => $current_badge, "percentage" => UserScore::getPercentage(), "finish_code_tests" => $take, "code_score" => $code_test_score, ]); } public function detailReport($question_id){ $user_id = Auth::id(); $question = Question::find($question_id); // $score = UserScore::where("user_id", Auth::id())->where("question_id", $question_id)->first(); $score = TotalScore::where("user_id", Auth::id())->where("question_id", $question_id)->first(); $wondering = WonderingScore::where(["user_id" => Auth::id()])->sum("score"); $exploring = UserScore::where("user_id", Auth::id())->sum("score"); $explainKonteks = ExplainingScore::where("user_id",Auth::id())->sum("konteks_penjelasan"); $explainBenar = ExplainingScore::where("user_id", Auth::id())->sum("kebenaran"); $explainKeruntutan = ExplainingScore::where("user_id", Auth::id())->sum("keruntutan"); $final_score = $wondering + $exploring + $explainKonteks + $explainBenar + $explainKeruntutan; $exercise_logs = ExerciseCodeLog::where("user_id", Auth::id())->where("question_id", $question_id)->orderBy('id','DESC')->get(); $essay = EssayQuestion::where('question_id', $question_id)->pluck('id'); $explain = UserAnswer::whereIn('essay_question_id', $essay)->where('user_id', $user_id)->get(); $title = "code"; return view("student_courses.detail_report", compact('exercise_logs', 'score', 'question', 'explain', 'title', 'final_score')); } public function level($course_id){ $level = Level::where('course_id', $course_id)->get(); $l = Level::firstwhere('id',2); //isi level 1 $level_down = $l->id - 1; $lessons1 = Lesson::where('level_id', $level_down)->pluck('id'); $content1 = Content::whereIn('lesson_id', $lessons1)->pluck('id'); $question1 = Question::whereIn('content_id', $content1)->pluck('id')->toArray(); $check = UserScore::where('user_id', Auth::user()->id)->where('level_id', $level_down)->orderBy('question_id', 'asc')->pluck('question_id')->toArray(); return view("student_courses.level", compact('level', 'course_id')); } public function readScore(Request $request){ try{ $content_id = $request->input('content_id'); $check = WonderingScore::where('user_id', Auth::id())->where('content_id', $content_id); if($check->count() == 0){ WonderingScore::create([ 'user_id' => Auth::id(), 'content_id' => $content_id, 'score' => 10, ]); } return response()->json([ 'status' => '200', 'message' => 'Success add score', ],200); } catch(Exception $err){ return response()->json([ 'status' => '500', 'message' => 'Error add score', ],500); } } }