Files
ticcat/app/Http/Controllers/ToDoController.php
2024-02-15 21:38:05 +01: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)
{
$data = $request->validated();
$data['checked'] = $request->input('checked') ? now() : null;
$todo->update($data);
if ($request->user()->currentTimeTracker->to_do_id === $todo->id) {
$request->user()->stopCurrentTimeTracker();
}
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));
}
}