diff --git a/app/Filament/Resources/Divisions/Schemas/DivisionForm.php b/app/Filament/Resources/Divisions/Schemas/DivisionForm.php index a849a1d..699e371 100644 --- a/app/Filament/Resources/Divisions/Schemas/DivisionForm.php +++ b/app/Filament/Resources/Divisions/Schemas/DivisionForm.php @@ -2,6 +2,8 @@ namespace App\Filament\Resources\Divisions\Schemas; +use App\Models\User; +use Filament\Forms\Components\Select; use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; use Filament\Schemas\Schema; @@ -13,6 +15,12 @@ class DivisionForm return $schema->components([ TextInput::make('name')->label('Nama')->required(), Textarea::make('description')->label('Deskripsi')->rows(3)->columnSpanFull(), + Select::make('leader_id')->label('Penanggung Jawab') + ->options( + User::role('pengurus')->where('status', 'aktif')->pluck('name', 'id') + ) + ->searchable() + ->nullable(), ]); } } diff --git a/app/Filament/Resources/Divisions/Tables/DivisionsTable.php b/app/Filament/Resources/Divisions/Tables/DivisionsTable.php index 96a7ad6..71f82dd 100644 --- a/app/Filament/Resources/Divisions/Tables/DivisionsTable.php +++ b/app/Filament/Resources/Divisions/Tables/DivisionsTable.php @@ -16,6 +16,7 @@ class DivisionsTable ->columns([ TextColumn::make('name')->label('Nama')->searchable()->sortable(), TextColumn::make('description')->label('Deskripsi')->limit(50), + TextColumn::make('leader.name')->label('Penanggung Jawab')->default('-'), TextColumn::make('members_count')->counts('members')->label('Anggota'), ]) ->recordActions([EditAction::make()]) diff --git a/app/Models/Division.php b/app/Models/Division.php index a35c6dc..87789d3 100644 --- a/app/Models/Division.php +++ b/app/Models/Division.php @@ -7,10 +7,15 @@ use Illuminate\Database\Eloquent\Relations\HasMany; class Division extends Model { - protected $fillable = ['name', 'description']; + protected $fillable = ['name', 'description', 'leader_id']; public function members(): HasMany { return $this->hasMany(User::class); } + + public function leader(): \Illuminate\Database\Eloquent\Relations\BelongsTo + { + return $this->belongsTo(User::class, 'leader_id'); + } } diff --git a/database/migrations/2026_04_05_152811_add_leader_id_to_divisions_table.php b/database/migrations/2026_04_05_152811_add_leader_id_to_divisions_table.php new file mode 100644 index 0000000..d33a2ca --- /dev/null +++ b/database/migrations/2026_04_05_152811_add_leader_id_to_divisions_table.php @@ -0,0 +1,23 @@ +foreignId('leader_id')->nullable()->constrained('users')->nullOnDelete()->after('description'); + }); + } + + public function down(): void + { + Schema::table('divisions', function (Blueprint $table) { + $table->dropForeignIdFor(\App\Models\User::class, 'leader_id'); + $table->dropColumn('leader_id'); + }); + } +};