first commit
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\PackageName;
|
||||
use App\Models\Reminder;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class ReminderController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$reminders = Reminder::where('user_id', Auth::id())
|
||||
->orderBy('time')
|
||||
->get();
|
||||
|
||||
return response()->json($reminders);
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$data = $request->validate([
|
||||
'title' => 'required|string|max:255',
|
||||
'description' => 'nullable|string|max:500',
|
||||
'time' => 'required|date',
|
||||
'repeatable' => 'boolean',
|
||||
'repeat_days' => 'nullable|integer|min:1',
|
||||
'data' => 'nullable|array',
|
||||
]);
|
||||
$packageNameData = $request->validate([
|
||||
'package_name' => 'required|exists:package_names,name',
|
||||
]);
|
||||
|
||||
if (!$packageName = PackageName::with('products')->where('name', $packageNameData['package_name'])->first()) {
|
||||
return response()->json([
|
||||
'message' => 'package name not found'
|
||||
], 404);
|
||||
}
|
||||
|
||||
$reminder = Reminder::create([...$data, 'package_name_id' => $packageName->id, 'user_id' => auth()->user()->id]);
|
||||
|
||||
return $reminder;
|
||||
}
|
||||
|
||||
public function show(Reminder $reminder)
|
||||
{
|
||||
$this->authorizeReminder($reminder);
|
||||
|
||||
return response()->json($reminder);
|
||||
}
|
||||
|
||||
public function update(Request $request, Reminder $reminder)
|
||||
{
|
||||
$this->authorizeReminder($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',
|
||||
]);
|
||||
$packageNameData = $request->validate([
|
||||
'package_name' => 'required|exists:package_names,name',
|
||||
]);
|
||||
|
||||
if (!$packageName = PackageName::with('products')->where('name', $packageNameData['package_name'])->first()) {
|
||||
return response()->json([
|
||||
'message' => 'package name not found'
|
||||
], 404);
|
||||
}
|
||||
|
||||
$reminder->update([...$data, 'package_name_id' => $packageName->id]);
|
||||
|
||||
return response()->json($reminder);
|
||||
}
|
||||
|
||||
public function destroy(Reminder $reminder)
|
||||
{
|
||||
$this->authorizeReminder($reminder);
|
||||
|
||||
$reminder->delete();
|
||||
|
||||
return response()->json(null, 204);
|
||||
}
|
||||
|
||||
private function authorizeReminder(Reminder $reminder)
|
||||
{
|
||||
if ($reminder->user_id !== Auth::id()) {
|
||||
abort(403, 'Unauthorized action.');
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user