validate([ 'name' => 'required|string', 'inhale' => 'required|integer|min:1', 'exhale' => 'required|integer|min:1', 'breath_hold' => 'required|integer|min:0', 'duration' => 'sometimes|integer|min:10' ]); $template = BreathingTemplate::create([ 'user_id' => auth()->id(), 'name' => $data['name'], 'inhale' => $data['inhale'], 'exhale' => $data['exhale'], 'breath_hold'=> $data['breath_hold'] ?? 0, 'duration'=> $data['duration'] ?? 60, ]); return response()->json(['message' => 'Template created', 'template' => $template]); } public function updateTemplate(Request $request, $id) { $template = BreathingTemplate::where('id', $id) ->where('user_id', auth()->id()) ->firstOrFail(); $data = $request->validate([ 'name' => 'sometimes|required|string', 'inhale' => 'sometimes|required|integer|min:1', 'exhale' => 'sometimes|required|integer|min:1', 'breath_hold' => 'sometimes|integer|min:0', 'duration' => 'sometimes|integer|min:10', ]); $template->update($data); return response()->json(['message' => 'Template updated', 'template' => $template]); } public function deleteTemplate($id) { $template = BreathingTemplate::where('id', $id) ->where('user_id', auth()->id()) ->firstOrFail(); $template->delete(); return response()->json(['message' => 'Template deleted']); } public function getUserTemplates() { $templates = BreathingTemplate::where('user_id', auth()->id())->get(); return response()->json($templates); } public function getTemplates() { $templates = BreathingTemplate::whereNull('user_id') ->orWhere('user_id', auth()->id()) ->get(); return response()->json($templates); } // public function store(Request $request) // { // $data = $request->validate([ // 'subject' => 'required|string', // 'duration' => 'required|integer', // 'created_at' => 'nullable|date', // ]); // $user = auth()->user(); // $exercise = BreathingExercise::create([ // 'user_id' => $user->id, // 'subject' => $data['subject'], // 'duration' => $data['duration'], // 'created_at' => $data['created_at'] ?? now(), // ]); // // Give XP (e.g., +10 per session) // if ($data['created_at'] == null) { // $user->increment('xp', 10); // } // return response()->json([ // 'message' => 'Exercise saved', // 'exercise' => $exercise, // 'xp' => $user->xp // ]); // } public function completeSession(Request $request) { $data = $request->validate([ 'template_id' => 'required|exists:breathing_templates,id', 'duration' => 'sometimes|integer|min:10' ]); $session = UserBreathingSession::create([ 'user_id' => auth()->id(), 'template_id' => $data['template_id'], 'duration' => $data['duration'] ?? $template->duration, ]); // Increase XP auth()->user()->increment('xp', 10); return response()->json(['message' => 'Session completed', 'session' => $session]); } public function getSessions() { $user = auth()->user(); $templates = BreathingTemplate::where('user_id', $user->id)->get(); $sessions = UserBreathingSession::with('template')->where('user_id', $user->id)->get(); return response()->json($sessions); } }