Files
ticcat/app/Http/Controllers/ToDoController.php
2024-02-24 22:54:02 +01:00

74 lines
1.7 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Http\Requests\ToDoRequest;
use App\Http\Resources\ToDoResource;
use App\Models\ToDo;
use Illuminate\Http\Request;
class ToDoController extends Controller
{
/**
* Display a listing of to dos.
*/
public function index(Request $request)
{
$toDos = $request->user()->toDos()->whereNull('checked')->get();
return response()->json(ToDoResource::collection($toDos));
}
/**
* Store newly to do created resource in storage.
*/
public function store(ToDoRequest $request)
{
$data = $request->validated();
$toDo = $request->user()->toDos()->create($data);
return response()->json(new ToDoResource($toDo), 201);
}
/**
* Display the specified to do.
*/
public function show(ToDo $todo)
{
return response()->json(new ToDoResource($todo));
}
/**
* Update the specified resource in storage.
*/
public function update(ToDoRequest $request, ToDo $todo)
{
abort_if($todo->user_id !== $request->user()->id, 401, __('auth.unauthorized'));
$todo->update($request->validated());
return response()->json(new ToDoResource($todo));
}
/**
* Remove the specified to do resource from storage.
*/
public function destroy(ToDo $todo)
{
$todo->delete();
return response()->noContent();
}
public function finished(Request $request)
{
$toDos = $request->user()->toDos()
->whereNotNull('checked')
->orderBy('checked', 'desc')
->get();
return response()->json(ToDoResource::collection($toDos));
}
}