mirror of
https://github.com/10h30/MoveMate.git
synced 2026-06-05 15:07:35 +09:00
Implemented TaskController
This commit is contained in:
@@ -2,9 +2,77 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Category;
|
||||
use App\Models\Task;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class TaskController extends Controller
|
||||
{
|
||||
//
|
||||
public function index() {
|
||||
$task = Task::latest('updated_at')->Paginate(20);
|
||||
return view('task.index', [
|
||||
'tasks' => $task
|
||||
]);
|
||||
}
|
||||
|
||||
public function show(Task $task) {
|
||||
return view('task.show', [
|
||||
'task' => $task
|
||||
]);
|
||||
}
|
||||
|
||||
public function create() {
|
||||
$categories = Category::all();
|
||||
return view('task.create', [
|
||||
'categories' => $categories
|
||||
]);
|
||||
}
|
||||
|
||||
public function store(Task $task) {
|
||||
$validatedAtts = request()->validate([
|
||||
'name' => ['required'],
|
||||
'description' => ['required'],
|
||||
'category_id' => ['required'],
|
||||
'location' => ['required'],
|
||||
'time_estimate' => ['required'],
|
||||
]);
|
||||
|
||||
$validatedAtts['user_id'] = Auth::id();
|
||||
|
||||
$task = Task::create(
|
||||
$validatedAtts
|
||||
);
|
||||
|
||||
return redirect()->route('task.create')->with('success', 'Task created successfully!');
|
||||
}
|
||||
|
||||
public function edit(Task $task) {
|
||||
$categories = Category::all();
|
||||
return view('task.edit', [
|
||||
'task' => $task,
|
||||
'categories' => $categories
|
||||
]);
|
||||
}
|
||||
|
||||
public function update(Task $task) {
|
||||
$validatedAtts = request()->validate([
|
||||
'name' => ['required'],
|
||||
'description' => ['required'],
|
||||
'category_id' => ['required'],
|
||||
'location' => ['required'],
|
||||
'time_estimate' => ['required'],
|
||||
]);
|
||||
|
||||
$task->update($validatedAtts);
|
||||
|
||||
return redirect('/task/'.$task->id);
|
||||
|
||||
}
|
||||
public function destroy(Task $task)
|
||||
{
|
||||
$task->delete();
|
||||
return redirect()->route('task.index')->with('success', 'Task deleted successfully');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class Task extends Model
|
||||
{
|
||||
@@ -13,6 +14,7 @@ class Task extends Model
|
||||
'completed' => false, // Set default value for completed
|
||||
];
|
||||
|
||||
|
||||
public function user() {
|
||||
return $this->belongsTo(User::class);
|
||||
}
|
||||
|
||||
@@ -15,8 +15,8 @@ return new class extends Migration
|
||||
{
|
||||
Schema::create('tasks', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->foreignIdFor(User::class);
|
||||
$table->foreignIdFor(Category::class);
|
||||
$table->foreignIdFor(User::class)->constrained()->cascadeOnDelete();
|
||||
$table->foreignIdFor(Category::class)->constrained()->cascadeOnDelete();
|
||||
$table->string('name');
|
||||
$table->longText('description');
|
||||
$table->string('location');
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
<x-layout>
|
||||
<x-slot:heading>Task Page</x-slot:heading>
|
||||
|
||||
@if (session('success'))
|
||||
<div class="bg-green-500 text-white p-3 rounded mb-4">
|
||||
{{ session('success') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@foreach ($tasks as $task)
|
||||
<div class="block border-2 border-gray-500 p-2">
|
||||
<div><a href="/task/{{ $task->id }}">
|
||||
|
||||
@@ -13,5 +13,12 @@
|
||||
</div>
|
||||
<div class="mt-5">
|
||||
<a href="/task/{{ $task->id }}/edit" class="text-sm text-blue-600 dark:text-blue-500 hover:underline">Edit</a>
|
||||
<form action="/task/{{ $task->id }}" method="POST" class="d-inline">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<a href="javascript:void(0)" onclick="if(confirm('Are you sure you want to delete this task?')){this.closest('form').submit()}">
|
||||
Delete
|
||||
</a>
|
||||
</form>
|
||||
</div>
|
||||
</x-layout>
|
||||
+9
-76
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\TaskController;
|
||||
use App\Models\Category;
|
||||
use App\Models\Task;
|
||||
use App\Models\User;
|
||||
@@ -9,83 +10,15 @@ use Illuminate\Validation\Rules\Password;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
|
||||
|
||||
Route::get('/', function () {
|
||||
$task = Task::latest('updated_at')->Paginate(20);
|
||||
return view('task.index', [
|
||||
'tasks' => $task
|
||||
]);
|
||||
});
|
||||
Route::get('/', [TaskController::class, 'index']);
|
||||
Route::get('/task', [TaskController::class, 'index'])->name('task.index');
|
||||
Route::get('/task/create', [TaskController::class, 'create']);
|
||||
Route::get('/task/{task}', [TaskController::class, 'show'])->name('task.show');
|
||||
Route::post('/task/create', [TaskController::class, 'store'])->name('task.create');
|
||||
Route::delete('/task/{task}', [TaskController::class, 'destroy']);
|
||||
Route::get('/task/{task}/edit', [TaskController::class, 'edit']);
|
||||
|
||||
|
||||
|
||||
Route::get('/task', function () {
|
||||
$task = Task::latest('updated_at')->Paginate(20);
|
||||
return view('task.index', [
|
||||
'tasks' => $task
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
Route::get('/task/create', function () {
|
||||
$categories = Category::all();
|
||||
return view('task.create', [
|
||||
'categories' => $categories
|
||||
]);
|
||||
});
|
||||
|
||||
Route::post('/task/create', function () {
|
||||
//dd(Auth::id());
|
||||
$validatedAtts = request()->validate([
|
||||
'name' => ['required'],
|
||||
'description' => ['required'],
|
||||
'category_id' => ['required'],
|
||||
'location' => ['required'],
|
||||
'time_estimate' => ['required'],
|
||||
]);
|
||||
|
||||
$validatedAtts['user_id'] = Auth::id();
|
||||
|
||||
//dd($validatedAtts);
|
||||
|
||||
$task = Task::create(
|
||||
$validatedAtts
|
||||
);
|
||||
|
||||
return redirect()->route('task.create')->with('success', 'Task created successfully!');
|
||||
})->name('task.create');
|
||||
|
||||
Route::get('/task/{id}', function ($id) {
|
||||
$task = Task::find($id);
|
||||
return view('task.show', [
|
||||
'task' => $task
|
||||
]);
|
||||
});
|
||||
|
||||
Route::get('/task/{id}/edit', function ($id) {
|
||||
$task = Task::find($id);
|
||||
$categories = Category::all();
|
||||
return view('task.edit', [
|
||||
'task' => $task,
|
||||
'categories' => $categories
|
||||
]);
|
||||
});
|
||||
|
||||
Route::patch('/task/{id}', function ($id) {
|
||||
$task = Task::find($id);
|
||||
$validatedAtts = request()->validate([
|
||||
'name' => ['required'],
|
||||
'description' => ['required'],
|
||||
'category_id' => ['required'],
|
||||
'location' => ['required'],
|
||||
'time_estimate' => ['required'],
|
||||
]);
|
||||
//dd($task);
|
||||
$task->update($validatedAtts);
|
||||
|
||||
return redirect('/task/'.$task->id);
|
||||
|
||||
|
||||
});
|
||||
Route::patch('/task/{task}', [TaskController::class, 'update']);
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user