where('lesson_name', 'like', '%' . $lessonName . '%'); } // Lấy dữ liệu chính $data = $query->orderByDesc('created_at') ->skip($offset) ->take($limit) ->get() ->map(function ($item) { $item->level = match ((int)$item->level) { 0 => 'easy', 1 => 'normal', 2 => 'hard', default => 'unknown', }; return $item; }); return $data; } public function createExercise($dataExercise) { $dataCreateExercise = [ 'lesson_name' => $dataExercise['name'] ?? null, 'description' => $dataExercise['description'] ?? null, 'subject_id' => $dataExercise['subject_id'] ?? null, 'level' => $dataExercise['level'] ?? null, 'status' => $dataExercise['status'] ?? null, 'category_id' => $dataExercise['category_id'] ?? null, 'year' => $dataExercise['year'] ?? null, ]; $exercise = Exercise::create($dataCreateExercise); return $exercise->id; } public function detail($id) { $exercise = Exercise::with([ 'skills:id,name', 'questionGroups' => function ($q) { $q->select('id', 'exercise_id', 'content'); }, 'questionGroups.questions' => function ($q) { $q->select('id', 'content', 'group_id', 'question_type_id', 'description', 'score', 'explanation', 'hint'); }, 'questionGroups.questions.type:id,code,name', 'questionGroups.questions.choices', 'questionGroups.questions.blanks', ])->findOrFail($id); return new ExerciseResource($exercise); } public function destroy($id) { try { $exercise = Exercise::findOrFail($id); DB::transaction(function () use ($exercise) { $groupIds = $exercise->questionGroups()->pluck('id'); $questionIds = DB::table('se_questions') ->whereIn('group_id', $groupIds) ->pluck('id'); QuestionChoice::whereIn('question_id', $questionIds)->delete(); QuestionBlank::whereIn('question_id', $questionIds)->delete(); Question::whereIn('id', $questionIds)->delete(); QuestionGroup::whereIn('id', $groupIds)->delete(); ExerciseSkill::where('exercise_id', $exercise->id)->delete(); $exercise->delete(); }); return [ 'status' => true, 'message' => 'Xoá đề thi thành công.' ]; } catch (ModelNotFoundException $e) { return [ 'status' => false, 'message' => 'Không tìm thấy đề thi.' ]; } catch (\Exception $e) { return [ 'status' => false, 'message' => 'Lỗi hệ thống: ' . $e->getMessage() ]; } } }