78 lines
1.8 KiB
PHP
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));
|
|
}
|
|
}
|