exerciseService = $exerciseService; $this->skillService = $skillService; $this->exerciseSkillService = $exerciseSkillService; $this->questionService = $questionService; } public function index(Request $request) { $exercises = $this->exerciseService->getExercises($request->all()); if ($exercises->isEmpty()) { return response()->json([ 'status' => true, 'data' => $exercises, 'message' => 'Không có dữ liệu.', ]); } return response()->json([ 'status' => true, 'data' => $exercises, 'message' => 'Lấy danh sách đề thi thành công.', ]); } public function create(CreateExerciseRequest $request) { DB::beginTransaction(); try { $data = $request->all(); $groups = json_decode($data['groups']); $dataExercises = $request->except('groups','skill'); $dataSkills = $data['skill']; $exerciseId = $this->exerciseService->createExercise($dataExercises); $skillIds = $this->skillService->getSkillIds($dataSkills); $this->exerciseSkillService->handleSkillsForExercise($skillIds, $exerciseId); $this->questionService->createQuestion($groups, $exerciseId); DB::commit(); return response()->json([ 'success' => true, 'message' => 'Tạo đề thi thành công.', 'exercise_id' => $exerciseId ], 201); } catch (\Exception $e) { DB::rollBack(); return response()->json([ 'success' => false, 'message' => 'Tạo đề thi thất bại.', 'error' => $e->getMessage() ], 500); } } }