authorize('viewAny', Memo::class); return MemoResource::collection(request()->user()->memos); } public function store() { $this->authorize('create', Memo::class); $memo = request()->user()->memos()->create($this->validateData()); return (new MemoResource($memo)) ->response() ->setStatusCode(Response::HTTP_CREATED); } public function show(Memo $memo) { $this->authorize('view', $memo); return new MemoResource($memo); } public function update(Memo $memo) { $this->authorize('update', $memo); $memo->update($this->validateData()); return (new MemoResource($memo)) ->response() ->setStatusCode(Response::HTTP_OK); } public function destroy(Memo $memo) { $this->authorize('delete', $memo); $memo->delete(); return response([], Response::HTTP_NO_CONTENT); } public function home() { $this->authorize('viewAny', Memo::class); $memos = request()->user()->memos; $count = $memos->count(); $created = $memos->sortByDesc('created_at')->first(); $updated = $memos->sortByDesc('updated_at')->first(); return response(['data' => [ 'count' => $count, 'last_created' => ($created !== null) ? new MemoResource($created) : null, 'last_updated' => ($updated !== null) ? new MemoResource($updated) : null, ]]); } private function validateData() { return request()->validate([ 'name' => 'required', 'memo' => 'required', ]); } }