exerciseService = $exerciseService; $this->skillService = $skillService; $this->exerciseSkillService = $exerciseSkillService; $this->questionService = $questionService; } 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' => 'Exercise created successfully', 'exercise_id' => $exerciseId ], 201); } catch (\Exception $e) { DB::rollBack(); return response()->json([ 'success' => false, 'message' => 'Failed to create exercise', 'error' => $e->getMessage() ], 500); } } }