Files
todo_list/app/Http/Controllers/TaskController.php
rahmatrafli1 d62725c5af feat: add API routes for authentication and task management
- Created api.php for handling authentication routes (register, login, logout) with token middleware.
- Implemented task management routes using API resource controller.

feat: add console routes for artisan commands

- Added console.php to define an inspiring quote command.

feat: add web routes for homepage

- Created web.php to serve the welcome view at the root URL.

chore: add .gitignore files for storage directories

- Added .gitignore files in storage/app, storage/framework, and storage/logs to exclude unnecessary files from version control.

test: add feature and unit tests

- Created ExampleTest in Feature and Unit directories to verify basic application responses and assertions.

build: add Vite configuration for Laravel and Tailwind CSS

- Added vite.config.js to configure Vite with Laravel and Tailwind CSS for asset management.
2026-06-23 20:33:06 +07:00

99 lines
2.6 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Http\Requests\TaskRequest;
use App\Http\Repositories\TaskRepository;
use App\Http\Resources\TaskResource;
use App\Models\Task;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class TaskController extends Controller
{
protected $taskRepository;
public function __construct(TaskRepository $taskRepository)
{
$this->taskRepository = $taskRepository;
}
public function index(Request $request)
{
$user = Auth::user();
$filters = [
'is_done' => $request->is_done,
'per_page' => $request->per_page ?? 10,
];
// admin bisa lihat semua task
if ($user->role !== 'admin') {
$filters['user_id'] = $user->id;
}
return TaskResource::collection(
$this->taskRepository->getTasks($filters)
);
}
public function store(TaskRequest $request)
{
$task = $this->taskRepository->store([
'user_id' => Auth::id(),
'title' => $request->title,
'description' => $request->description
]);
return response()->json([
'message' => 'Task berhasil dibuat!',
'task' => new TaskResource($task)
], 201);
}
public function update(TaskRequest $request, $id)
{
$task = Task::find($id);
if (!$task) {
return response()->json(['message' => 'Task tidak ditemukan!'], 404);
}
if ($task->user_id !== Auth::id()) {
return response()->json(['message' => 'Forbidden!'], 403);
}
$task = $this->taskRepository->update($task, [
'title' => $request->title ?? $task->title,
'description' => $request->description ?? $task->description,
'is_done' => $request->is_done ?? $task->is_done,
'status' => $request->status ?? $request->status,
'due_date' => $request->due_date ?? $request->due_date
]);
return response()->json([
'message' => 'Task berhasil diupdate!',
'task' => new TaskResource($task)
]);
}
public function destroy($id)
{
$task = Task::find($id);
if (!$task) {
return response()->json(['message' => 'Task tidak ditemukan!'], 404);
}
if ($task->user_id !== Auth::id()) {
return response()->json(['message' => 'Forbidden!'], 403);
}
$task->delete();
return response()->json([
'message' => 'Task berhasil dihapus!'
]);
}
}