user()->id)->where('is_completed', false)->get(); return response()->json($quests); } public function generate(Request $request) { // Vereinfachte Logik: Nimmt die letzten 5 offenen Tasks und macht daraus Quests $tasks = Task::where('user_id', $request->user()->id)->limit(5)->get(); $quests = []; foreach ($tasks as $task) { $quests[] = Quest::create([ 'user_id' => $request->user()->id, 'task_id' => $task->id, 'title' => $task->title, 'category' => $task->category, 'due_date' => $task->due_date, 'xp_reward' => 50, 'is_completed' => false ]); } return response()->json($quests, 201); } public function complete(Request $request, $id) { $quest = Quest::where('user_id', $request->user()->id)->findOrFail($id); if ($quest->is_completed) { return response()->json(['message' => 'Quest already completed'], 400); } // Mark as completed $quest->update(['is_completed' => true]); $user = $request->user(); $user->xp += $quest->xp_reward; // Level-Up Check (vereinfachte Logik) $xpForNextLevel = $user->level * 100; $levelUp = false; while ($user->xp >= $xpForNextLevel) { $user->level += 1; $user->xp = $user->xp - $xpForNextLevel; $xpForNextLevel = $user->level * 100; $levelUp = true; } $user->save(); return response()->json([ 'quest' => $quest, 'xp_gained' => $quest->xp_reward, 'new_level' => $user->level, 'level_up' => $levelUp ]); } }