diff --git a/app/Http/Controllers/ReminderController.php b/app/Http/Controllers/ReminderController.php index 73ad1d8..e3b5de0 100644 --- a/app/Http/Controllers/ReminderController.php +++ b/app/Http/Controllers/ReminderController.php @@ -96,15 +96,16 @@ private function authorizeReminder(Reminder $reminder) - public function packageIndex(PackageName $packageName) -{ - $reminders = Reminder::where('user_id', Auth::id()) - ->where('package_name_id', $packageName->id) - ->orderBy('time') - ->get(); - - return response()->json($reminders); -} + public function packageIndex(PackageName $packageName) + { + // Get package-wide reminders (user_id = null) for this package + $reminders = Reminder::where('package_name_id', $packageName->id) + ->whereNull('user_id') + ->orderBy('time') + ->get(); + + return response()->json($reminders); + } public function packageStore(Request $request, PackageName $packageName) { @@ -126,39 +127,53 @@ public function packageStore(Request $request, PackageName $packageName) return response()->json($reminder, 201); } -public function packageUpdate(Request $request, PackageName $packageName, Reminder $reminder) -{ - $this->authorizeReminder($reminder); + public function packageUpdate(Request $request, PackageName $packageName, Reminder $reminder) + { + // Basic checks + if (!auth()->check()) { + return response()->json(['message' => 'Unauthorized'], 401); + } + + if ($reminder->user_id !== null) { + return response()->json(['message' => 'This is not a package-wide reminder'], 400); + } - if ($reminder->package_name_id !== $packageName->id) { - return response()->json(['message' => 'This reminder does not belong to this package'], 403); + if ($reminder->package_name_id !== $packageName->id) { + return response()->json(['message' => 'This reminder does not belong to this package'], 403); + } + + $data = $request->validate([ + 'title' => 'sometimes|string|max:255', + 'description' => 'nullable|string|max:500', + 'time' => 'sometimes|date', + 'repeatable' => 'boolean', + 'repeat_days' => 'nullable|integer|min:1', + 'data' => 'nullable|array', + ]); + + $reminder->update($data); + + return response()->json($reminder); } - $data = $request->validate([ - 'title' => 'sometimes|string|max:255', - 'description' => 'nullable|string|max:500', - 'time' => 'sometimes|date', - 'repeatable' => 'boolean', - 'repeat_days' => 'nullable|integer|min:1', - 'data' => 'nullable|array', - ]); + public function packageDestroy(PackageName $packageName, Reminder $reminder) + { + // Basic checks + if (!auth()->check()) { + return response()->json(['message' => 'Unauthorized'], 401); + } + + if ($reminder->user_id !== null) { + return response()->json(['message' => 'This is not a package-wide reminder'], 400); + } - $reminder->update($data); + if ($reminder->package_name_id !== $packageName->id) { + return response()->json(['message' => 'This reminder does not belong to this package'], 403); + } - return response()->json($reminder); -} + $reminder->delete(); -public function packageDestroy(PackageName $packageName, Reminder $reminder) -{ - $this->authorizeReminder($reminder); - - if ($reminder->package_name_id !== $packageName->id) { - return response()->json(['message' => 'This reminder does not belong to this package'], 403); + return response()->json(null, 204); } - $reminder->delete(); - - return response()->json(null, 204); -} - }