From f353e0c96470187488b97275d0825a16792d5e6f Mon Sep 17 00:00:00 2001 From: T'JAMPENS QUENTIN p2406187 Date: Sun, 9 Nov 2025 16:17:10 +0100 Subject: [PATCH] Creation table tasks --- app/Http/Controllers/TasksController.php | 46 +++++++++++++++++++ app/Models/Events.php | 4 ++ app/Models/Task.php | 25 ++++++++++ .../2025_11_09_144248_create_tasks_table.php | 37 +++++++++++++++ routes/api.php | 3 ++ tests/Events/tasks/create event task.bru | 32 +++++++++++++ tests/Events/tasks/folder.bru | 8 ++++ 7 files changed, 155 insertions(+) create mode 100644 app/Http/Controllers/TasksController.php create mode 100644 app/Models/Task.php create mode 100644 database/migrations/2025_11_09_144248_create_tasks_table.php create mode 100644 tests/Events/tasks/create event task.bru create mode 100644 tests/Events/tasks/folder.bru diff --git a/app/Http/Controllers/TasksController.php b/app/Http/Controllers/TasksController.php new file mode 100644 index 0000000..cb9f5b4 --- /dev/null +++ b/app/Http/Controllers/TasksController.php @@ -0,0 +1,46 @@ +isAdmin($request->user()->role)){ + return response()->json(["message" => "Can't create task"], 403); + } + + try { + + $event = Events::find($request["event_id"]); + + $event->tasks()->create([ + "name" => $request["name"], + "description" => $request["description"], + "start" => $request["start"], + "end" => $request["end"], + "location" => $request["location"], + "max_participants" => $request["max_participants"], + ]); + + + return response()->json(['message' => "Task created"], 200); + + } catch(\Exception $e) { + Log::info($e->getMessage()); + return response()->json(['message' => "Server error"], 500); + } + } +} diff --git a/app/Models/Events.php b/app/Models/Events.php index 4a589cc..ba500fe 100644 --- a/app/Models/Events.php +++ b/app/Models/Events.php @@ -12,4 +12,8 @@ class Events extends Model "name", "description", ]; + + public function tasks() { + return $this->hasMany(Task::class); + } } diff --git a/app/Models/Task.php b/app/Models/Task.php new file mode 100644 index 0000000..3a4af85 --- /dev/null +++ b/app/Models/Task.php @@ -0,0 +1,25 @@ + */ + use HasFactory; + + protected $fillable = [ + 'name', + 'start', + 'end', + 'location', + 'description', + 'max_participants', + ]; + + public function event() { + return $this->belongsTo(Events::class); + } +} diff --git a/database/migrations/2025_11_09_144248_create_tasks_table.php b/database/migrations/2025_11_09_144248_create_tasks_table.php new file mode 100644 index 0000000..e6ce615 --- /dev/null +++ b/database/migrations/2025_11_09_144248_create_tasks_table.php @@ -0,0 +1,37 @@ +id(); + + $table->string('name'); + $table->string('description'); + $table->string('location'); + $table->dateTime("start"); + $table->dateTime("end"); + $table->integer('max_participants'); + + $table->foreignId("events_id")->constrained("events")->onDelete("cascade"); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('tasks'); + } +}; diff --git a/routes/api.php b/routes/api.php index 0e32da9..91372b0 100644 --- a/routes/api.php +++ b/routes/api.php @@ -3,6 +3,7 @@ use App\Http\Controllers\AuthController; use App\Http\Controllers\UserController; use App\Http\Controllers\EventsController; +use App\Http\Controllers\TasksController; use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; @@ -33,3 +34,5 @@ Route::middleware(['web', 'auth:sanctum'])->post('/users/{id}/role', [UserContro Route::middleware(['web', 'auth:sanctum'])->get('/users', [UserController::class, "getUsers"]); Route::middleware(['web', 'auth:sanctum'])->post('/events/create', [EventsController::class, "create"]); + +Route::middleware(['web', 'auth:sanctum'])->post('/events/task', [TasksController::class, "create"]); diff --git a/tests/Events/tasks/create event task.bru b/tests/Events/tasks/create event task.bru new file mode 100644 index 0000000..6bcc342 --- /dev/null +++ b/tests/Events/tasks/create event task.bru @@ -0,0 +1,32 @@ +meta { + name: create event task + type: http + seq: 1 +} + +post { + url: {{url}}/api/events/task + body: json + auth: inherit +} + +headers { + X-XSRF-TOKEN: +} + +body:json { + { + "event_id": 1, + "name": "test", + "location": "location test", + "description": "desc test", + "start": "2025-11-09 15:30:00", + "end": "2025-11-09 15:30:00", + "max_participants": 10 + } +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/tests/Events/tasks/folder.bru b/tests/Events/tasks/folder.bru new file mode 100644 index 0000000..7e05219 --- /dev/null +++ b/tests/Events/tasks/folder.bru @@ -0,0 +1,8 @@ +meta { + name: tasks + seq: 2 +} + +auth { + mode: inherit +}