Files
ticcat/app/Http/Controllers/ToDoController.php
2024-04-01 19:47:15 +02:00

78 lines
1.8 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'));
$data = $request->validated();
if (isset($data['checked'])) {
$data['checked'] = $data['checked'] ? now() : null;
}
$todo->update($data);
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));
}
}