From 45f5413c5284d6acbab800b5d336950528ab3715 Mon Sep 17 00:00:00 2001 From: NathanCorberan Date: Fri, 9 Jan 2026 11:54:26 +0100 Subject: [PATCH] feat(level): Ajout de la table level --- .../Resources/Levels/LevelResource.php | 50 +++++++++++++++++++ .../Resources/Levels/Pages/CreateLevel.php | 11 ++++ .../Resources/Levels/Pages/EditLevel.php | 19 +++++++ .../Resources/Levels/Pages/ListLevels.php | 19 +++++++ .../Resources/Levels/Schemas/LevelForm.php | 23 +++++++++ .../Resources/Levels/Tables/LevelsTable.php | 46 +++++++++++++++++ .../Resources/Users/Schemas/UserForm.php | 6 +-- app/Models/HuntSteps.php | 2 +- app/Models/Level.php | 14 +++++- app/Models/User.php | 3 +- .../2026_01_09_101833_add_level_key_users.php | 2 +- 11 files changed, 186 insertions(+), 9 deletions(-) create mode 100644 app/Filament/Resources/Levels/LevelResource.php create mode 100644 app/Filament/Resources/Levels/Pages/CreateLevel.php create mode 100644 app/Filament/Resources/Levels/Pages/EditLevel.php create mode 100644 app/Filament/Resources/Levels/Pages/ListLevels.php create mode 100644 app/Filament/Resources/Levels/Schemas/LevelForm.php create mode 100644 app/Filament/Resources/Levels/Tables/LevelsTable.php diff --git a/app/Filament/Resources/Levels/LevelResource.php b/app/Filament/Resources/Levels/LevelResource.php new file mode 100644 index 0000000..2cb2a29 --- /dev/null +++ b/app/Filament/Resources/Levels/LevelResource.php @@ -0,0 +1,50 @@ + ListLevels::route('/'), + 'create' => CreateLevel::route('/create'), + 'edit' => EditLevel::route('/{record}/edit'), + ]; + } +} diff --git a/app/Filament/Resources/Levels/Pages/CreateLevel.php b/app/Filament/Resources/Levels/Pages/CreateLevel.php new file mode 100644 index 0000000..e8cfbde --- /dev/null +++ b/app/Filament/Resources/Levels/Pages/CreateLevel.php @@ -0,0 +1,11 @@ +components([ + TextInput::make('level_position') + ->numeric(), + TextInput::make('xpThreshold') + ->required() + ->numeric(), + TextInput::make('label') + ->required(), + ]); + } +} diff --git a/app/Filament/Resources/Levels/Tables/LevelsTable.php b/app/Filament/Resources/Levels/Tables/LevelsTable.php new file mode 100644 index 0000000..0b7ee16 --- /dev/null +++ b/app/Filament/Resources/Levels/Tables/LevelsTable.php @@ -0,0 +1,46 @@ +columns([ + TextColumn::make('created_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + TextColumn::make('updated_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + TextColumn::make('level_position') + ->numeric() + ->sortable(), + TextColumn::make('xpThreshold') + ->numeric() + ->sortable(), + TextColumn::make('label') + ->searchable(), + ]) + ->filters([ + // + ]) + ->recordActions([ + EditAction::make(), + ]) + ->toolbarActions([ + BulkActionGroup::make([ + DeleteBulkAction::make(), + ]), + ]); + } +} diff --git a/app/Filament/Resources/Users/Schemas/UserForm.php b/app/Filament/Resources/Users/Schemas/UserForm.php index 2404e8b..8d5a604 100644 --- a/app/Filament/Resources/Users/Schemas/UserForm.php +++ b/app/Filament/Resources/Users/Schemas/UserForm.php @@ -48,11 +48,7 @@ class UserForm ->image() ->avatar() ->disk('public') - ->directory('avatars'), - TextInput::make('level') - ->required() - ->numeric() - ->default(1), + ->directory('avatars') ]); } } diff --git a/app/Models/HuntSteps.php b/app/Models/HuntSteps.php index 9857256..0a626cf 100644 --- a/app/Models/HuntSteps.php +++ b/app/Models/HuntSteps.php @@ -8,7 +8,7 @@ use Illuminate\Database\Eloquent\Model; class HuntSteps extends Model { use HasFactory; - protected $fillable = [ + protected $fillable = [ 'hunt_id', 'step_number', 'title', diff --git a/app/Models/Level.php b/app/Models/Level.php index 76ca1b3..431bd1d 100644 --- a/app/Models/Level.php +++ b/app/Models/Level.php @@ -2,9 +2,21 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use App\Models\User; class Level extends Model { - // + use HasFactory; + protected $fillable = [ + 'level_position', + 'xpThreshold', + 'label', + ]; + + public function user() + { + return $this->belongsTo(User::class, 'user_id'); + } } diff --git a/app/Models/User.php b/app/Models/User.php index 16db4b5..e2d9702 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -48,7 +48,8 @@ class User extends Authenticatable implements HasName, FilamentUser 'level', 'avatar_uri', 'participations', - 'victories' + 'victories', + 'level_id' ]; /** diff --git a/database/migrations/2026_01_09_101833_add_level_key_users.php b/database/migrations/2026_01_09_101833_add_level_key_users.php index 730ef55..6ed531b 100644 --- a/database/migrations/2026_01_09_101833_add_level_key_users.php +++ b/database/migrations/2026_01_09_101833_add_level_key_users.php @@ -12,7 +12,7 @@ return new class extends Migration public function up(): void { Schema::table('users', function (Blueprint $table) { - $table->foreignId('level_id'); + $table->foreignId('level_id')->nullable(); }); }