fix: controller reminder

This commit is contained in:
2025-12-12 22:15:37 +03:30
parent e998a31339
commit 10567e7a81
+49 -34
View File
@@ -96,15 +96,16 @@ private function authorizeReminder(Reminder $reminder)
public function packageIndex(PackageName $packageName) public function packageIndex(PackageName $packageName)
{ {
$reminders = Reminder::where('user_id', Auth::id()) // Get package-wide reminders (user_id = null) for this package
->where('package_name_id', $packageName->id) $reminders = Reminder::where('package_name_id', $packageName->id)
->orderBy('time') ->whereNull('user_id')
->get(); ->orderBy('time')
->get();
return response()->json($reminders); return response()->json($reminders);
} }
public function packageStore(Request $request, PackageName $packageName) public function packageStore(Request $request, PackageName $packageName)
{ {
@@ -126,39 +127,53 @@ public function packageStore(Request $request, PackageName $packageName)
return response()->json($reminder, 201); return response()->json($reminder, 201);
} }
public function packageUpdate(Request $request, PackageName $packageName, Reminder $reminder) public function packageUpdate(Request $request, PackageName $packageName, Reminder $reminder)
{ {
$this->authorizeReminder($reminder); // Basic checks
if (!auth()->check()) {
return response()->json(['message' => 'Unauthorized'], 401);
}
if ($reminder->package_name_id !== $packageName->id) { if ($reminder->user_id !== null) {
return response()->json(['message' => 'This reminder does not belong to this package'], 403); 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);
}
$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([ public function packageDestroy(PackageName $packageName, Reminder $reminder)
'title' => 'sometimes|string|max:255', {
'description' => 'nullable|string|max:500', // Basic checks
'time' => 'sometimes|date', if (!auth()->check()) {
'repeatable' => 'boolean', return response()->json(['message' => 'Unauthorized'], 401);
'repeat_days' => 'nullable|integer|min:1', }
'data' => 'nullable|array',
]);
$reminder->update($data); if ($reminder->user_id !== null) {
return response()->json(['message' => 'This is not a package-wide reminder'], 400);
}
return response()->json($reminder); if ($reminder->package_name_id !== $packageName->id) {
} return response()->json(['message' => 'This reminder does not belong to this package'], 403);
}
public function packageDestroy(PackageName $packageName, Reminder $reminder) $reminder->delete();
{
$this->authorizeReminder($reminder);
if ($reminder->package_name_id !== $packageName->id) { return response()->json(null, 204);
return response()->json(['message' => 'This reminder does not belong to this package'], 403);
} }
$reminder->delete();
return response()->json(null, 204);
}
} }