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.
This commit is contained in:
98
app/Http/Controllers/TaskController.php
Normal file
98
app/Http/Controllers/TaskController.php
Normal file
@@ -0,0 +1,98 @@
|
||||
<?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!'
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user