- 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.
99 lines
2.6 KiB
PHP
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!'
|
|
]);
|
|
}
|
|
}
|